コード例 #1
0
        public async Task <SendTransactionOperationResult> SendTransaction(Keys keys, string from, string to, BigFloat amount, BigFloat fee, BigFloat gasLimit = null, BigFloat storageLimit = null)
        {
            gasLimit     = gasLimit ?? 200;
            storageLimit = storageLimit ?? 0;

            JObject head = await GetHeader();

            JObject account = await GetAccountForBlock(head["hash"].ToString(), from);

            int counter = int.Parse(account["counter"].ToString());

            JArray operations = new JArray();

            JToken managerKey = await GetManagerKey(from);

            string gas     = gasLimit.ToString();
            string storage = storageLimit.ToString();

            if (keys != null && managerKey["key"] == null)
            {
                JObject revealOp = new JObject();
                operations.AddFirst(revealOp);

                revealOp["kind"]          = "reveal";
                revealOp["fee"]           = "0";
                revealOp["public_key"]    = keys.DecryptPublicKey();
                revealOp["source"]        = from;
                revealOp["storage_limit"] = storage;
                revealOp["gas_limit"]     = gas;
                revealOp["counter"]       = (++counter).ToString();
            }

            JObject transaction = new JObject();

            operations.Add(transaction);

            transaction["destination"]   = to;
            transaction["amount"]        = new BigFloat(amount.ToMicroTez().ToString(6)).Round().ToString(); // Convert to microtez, truncate at 6 digits, round up
            transaction["storage_limit"] = storage;
            transaction["gas_limit"]     = gas;
            transaction["counter"]       = (++counter).ToString();
            transaction["fee"]           = fee.ToString();
            transaction["source"]        = from;
            transaction["kind"]          = Operations.Transaction;

            JObject parameters = new JObject();

            transaction["parameters"] = parameters;
            parameters["prim"]        = "Unit";
            parameters["args"]        = new JArray(); // No args for this contract.

            List <OperationResult> sendResults = await SendOperations(operations, keys, head);

            return(sendResults.LastOrDefault() as SendTransactionOperationResult);
        }