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>()); }
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)); }
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); }
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); }
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); }
/// <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)); }
/// <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)); }
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); }