예제 #1
0
        public async Task <OperationResult <VoidResponse> > AbiJsonToBinAsync(BaseAction[] baseActions, CancellationToken token)
        {
            foreach (var action in baseActions)
            {
                if (action.Data != null)
                {
                    continue;
                }

                var abiJsonToBinArgs = new AbiJsonToBinParams
                {
                    Code   = action.ContractName,
                    Action = action.Name,
                    Args   = action.Args
                };
                var abiJsonToBin = await AbiJsonToBinAsync(abiJsonToBinArgs, token).ConfigureAwait(false);

                if (abiJsonToBin.IsError)
                {
                    return(new OperationResult <VoidResponse>(abiJsonToBin));
                }

                action.Data = abiJsonToBin.Result.BinArgs;
            }
            return(new OperationResult <VoidResponse>());
        }
예제 #2
0
        public async Task AbiJsonToBinTest()
        {
            var abiJsonToBinParams = new AbiJsonToBinParams
            {
                Code   = "hackathon",
                Action = "transfer",
                Args   = new Transfer
                {
                    From   = "test1",
                    To     = "test1",
                    Amount = "1000 VIM",
                }
            };

            var resp = await Api.AbiJsonToBin(abiJsonToBinParams, CancellationToken.None);

            Console.WriteLine(resp.Error);
            Assert.IsTrue(resp.IsSuccess);
            Console.WriteLine(JsonConvert.SerializeObject(resp.Result));

            var obj = await Api.CustomPostRequest <JObject>("v1/chain/abi_json_to_bin", abiJsonToBinParams, CancellationToken.None);

            TestPropetries(resp.Result.GetType(), obj.Result);
            Console.WriteLine("----------------------------------------------------------------------------");
            Console.WriteLine(JsonConvert.SerializeObject(obj));
        }
예제 #3
0
        public async Task PushTransactionTest()
        {
            var abiJsonToBinArgs = new AbiJsonToBinParams
            {
                Code   = ContractInfo.ContractName,
                Action = CreatePostActionName,
                Args   = new CreatePostArgs
                {
                    UrlPhoto       = "test_1_url",
                    AccountCreator = User.Login,
                    IpfsHashPhoto  = "test_1_hash"
                                     //ParentPost = 1
                }
            };
            var abiJsonToBin = await Api.AbiJsonToBin(abiJsonToBinArgs, CancellationToken);

            Assert.IsFalse(abiJsonToBin.IsError);

            var args = new CreateTransactionArgs
            {
                Actions = new[]
                {
                    new Action
                    {
                        Account       = User.Login,
                        Name          = CreatePostActionName,
                        Authorization = new[]
                        {
                            new PermissionLevel
                            {
                                Actor      = User.Login,
                                Permission = "active"
                            }
                        },
                        Data = abiJsonToBin.Result.Binargs
                    }
                },
                PrivateKeys = new List <byte[]> {
                    User.PrivateActiveKey
                }
            };

            var packedTransaction = await Api.CreatePackedTransaction(args, CancellationToken);

            var resp = await Api.PushTransaction(packedTransaction, CancellationToken);

            WriteLine(resp);

            Assert.IsFalse(resp.IsError);
        }
예제 #4
0
        public async Task AbiJsonToBinTest()
        {
            var abiJsonToBinArgs = new AbiJsonToBinParams
            {
                Code   = ContractInfo.ContractName,
                Action = CreatePostActionName,
                Args   = new CreatePostArgs
                {
                    UrlPhoto       = "test_1_url",
                    AccountCreator = User.Login,
                    IpfsHashPhoto  = "test_1_hash"
                                     //ParentPost = 1
                }
            };

            var resp = await Api.AbiJsonToBin(abiJsonToBinArgs, CancellationToken);

            TestPropetries(resp);
        }
예제 #5
0
        public async Task AbiJsonToBinTest()
        {
            var args = new AbiJsonToBinParams
            {
                Code   = NewaccountAction.ContractName,
                Action = NewaccountAction.ActionName,
                Args   = new Newaccount
                {
                    Creator = "eosio",
                    Newact  = "qwdfvbmfkrt",
                    Owner   = new Ditch.EOS.Contracts.Eosio.Structs.Authority
                    {
                        Threshold = 1,
                        Keys      = new[] { new Ditch.EOS.Contracts.Eosio.Structs.KeyWeight
                                            {
                                                Key    = new PublicKey("EOS6JQaiy5wpCvwyBauN4odnyqcutboxMk2bYkC3e2nmUubBsBbZ8"),
                                                Weight = 1
                                            } },
                        Accounts = new[] { new Ditch.EOS.Contracts.Eosio.Structs.PermissionLevelWeight
                                           {
                                               Weight     = 1,
                                               Permission = new PermissionLevel()
                                               {
                                                   Permission = "owner",
                                                   Actor      = "qwdfvbmfkrt"
                                               }
                                           } },
                        Waits = new[]
                        {
                            new WaitWeight()
                            {
                                Weight  = 1,
                                WaitSec = 0
                            }
                        }
                    },
                    Active = new Ditch.EOS.Contracts.Eosio.Structs.Authority
                    {
                        Threshold = 1,
                        Keys      = new[] { new Ditch.EOS.Contracts.Eosio.Structs.KeyWeight
                                            {
                                                Weight = 1,
                                                Key    = new PublicKey("EOS7z5qpGxAKZRgDmVCc2p5VZocumssfDoFMi5BNEsSocFWu4dXB2")
                                            } },
                        Accounts = new[] { new Ditch.EOS.Contracts.Eosio.Structs.PermissionLevelWeight
                                           {
                                               Weight     = 1,
                                               Permission = new PermissionLevel()
                                               {
                                                   Permission = "active",
                                                   Actor      = "qwdfvbmfkrt"
                                               }
                                           } },
                        Waits = new[]
                        {
                            new WaitWeight()
                            {
                                Weight  = 1,
                                WaitSec = 0
                            }
                        }
                    }
                }
            };

            var resp = await Api.AbiJsonToBinAsync(args, CancellationToken).ConfigureAwait(false);

            TestPropetries(resp);
        }
예제 #6
0
        /// <summary>
        /// Serialize json to binary hex. The resulting binary hex is usually used for the data field in push_transaction.
        ///
        /// curl http://127.0.0.1:8888/v1/chain/abi_json_to_bin -X POST -d '{"code":"currency", "action":"transfer", "args":{"from":"initb", "to":"initc", "quantity":1000}}'
        /// </summary>
        /// <param name="abiJsonToBinParams"></param>
        /// <param name="token">Throws a <see cref="T:System.OperationCanceledException" /> if this token has had cancellation requested.</param>
        /// <returns></returns>
        public async Task <OperationResult <AbiJsonToBinResult> > AbiJsonToBin(AbiJsonToBinParams abiJsonToBinParams, CancellationToken token)
        {
            var endpoint = "v1/chain/abi_json_to_bin";

            return(await CustomPostRequest <AbiJsonToBinResult>(endpoint, abiJsonToBinParams, token));
        }
예제 #7
0
        /// <summary>
        /// Serialize json to binary hex. The resulting binary hex is usually used for the data field in push_transaction.
        ///
        /// curl http://127.0.0.1:8888/v1/chain/abi_json_to_bin -X POST -d '{"code":"currency", "action":"transfer", "args":{"from":"initb", "to":"initc", "quantity":1000}}'
        /// </summary>
        /// <param name="args"></param>
        /// <param name="token">Throws a <see cref="T:System.OperationCanceledException" /> if this token has had cancellation requested.</param>
        /// <returns></returns>
        public async Task <OperationResult <AbiJsonToBinResult> > AbiJsonToBinAsync(AbiJsonToBinParams args, CancellationToken token)
        {
            var endpoint = $"{ChainUrl}/v1/chain/abi_json_to_bin";

            return(await CustomPutRequestAsync <AbiJsonToBinResult>(endpoint, args, token).ConfigureAwait(false));
        }
예제 #8
0
        public async Task WalletSignTrxTest()
        {
            var abiJsonToBinArgs = new AbiJsonToBinParams
            {
                Code   = ContractInfo.ContractName,
                Action = CreatePostActionName,
                Args   = new CreatePostArgs
                {
                    UrlPhoto       = "test_1_url",
                    AccountCreator = User.Login,
                    IpfsHashPhoto  = "test_1_hash"
                                     //ParentPost = 1
                }
            };
            var abiJsonToBin = await Api.AbiJsonToBin(abiJsonToBinArgs, CancellationToken);

            Assert.IsFalse(abiJsonToBin.IsError);

            var accountParams = new GetAccountParams
            {
                AccountName = User.Login
            };

            var unlock = await Api.WalletUnlock(User.Login, User.Password, CancellationToken);

            Assert.IsFalse(unlock.IsError);

            var accR = await Api.GetAccount(accountParams, CancellationToken);

            Assert.IsFalse(accR.IsError);

            var publicKeys = accR.Result.Permissions.First(p => p.PermName == "active").RequiredAuth.Keys.Select(k => k.Key).ToArray();

            var args = new CreateTransactionArgs
            {
                Actions = new[]
                {
                    new EOS.Models.Action
                    {
                        Account       = User.Login,
                        Name          = CreatePostActionName,
                        Authorization = new[]
                        {
                            new PermissionLevel
                            {
                                Actor      = User.Login,
                                Permission = "active"
                            }
                        },
                        Data = abiJsonToBin.Result.Binargs
                    }
                },
                PrivateKeys = new List <byte[]> {
                    User.PrivateActiveKey
                }
            };
            var trx = await Api.CreateTransaction(args, CancellationToken);

            var infoResp = await Api.GetInfo(CancellationToken.None);

            var info = infoResp.Result;

            var resp = await Api.WalletSignTrx(trx, publicKeys, info.ChainId, CancellationToken.None);

            WriteLine(resp);
            Assert.IsFalse(resp.IsError);

            var wlock = await Api.WalletLock(User.Login, CancellationToken);

            Assert.IsFalse(wlock.IsError);
        }