Closed linyujun closed 6 years ago
测试用例我们确实没有提供,我们会将该事件放入计划。 若您对构建账号需求较为急切,可以参照该类进行构造。
文件路径: eosj/src/main/java/bepal/eosio/transaction/message/NewMessageData.java
需要注意:创建者
需要为 被创建者
提供 CPU
NET
RAM
等网络资源.
一笔交易必须连续执行这三个合约方法,以创建账户为首
newaccount
-> buyram
-> delegatebw
执行eosio合约.
例如 : https://eosmonitor.io/txn/9b134284c03f16c60ba7da8fb64a508540e334ccc45c720129300d1c4b039e96
非常感谢您的回答,创建账号使用如下代码是否可行:
EosTransaction transaction = new EosTransaction(); transaction.ChainID = EOSChainID; transaction.BlockNum = refBlockNum; transaction.BlockPrefix = refBlockPrefix; transaction.NetUsageWords = 0; transaction.KcpuUsage = 0; transaction.DelaySec = 0; transaction.Expiration = expiration;
Action message = new Action(); message.Account = new AccountName("eosio"); message.Name = new AccountName("newaccount"); message.Authorization.add(new AccountPermission(from, "active"));
transaction.Actions.add(message);
NewMessageData data = new NewMessageData(); data.Creator = new AccountName(from); data.Name = new AccountName(newAccountName); data.Owner = new Authority(); data.Active = new Authority(); data.Owner.addKey(new KeyPermissionWeight(newPublicKey.getBytes())); data.Active.addKey(new KeyPermissionWeight(newPublicKey.getBytes()));
message.Data = data;
transaction.Signature.add(eos.getEosPrivateKey().sign(transaction.getSignHash()).eosEncoding(true));
return transaction.toJson().toString(4);
非常希望能有创建账号相关的测试用例代码可供参考,非常感谢
一个账号的创建需要 创建者
为 被创建者
质押 网络资源
当前构造中,未质押网络资源 (RAM NET CPU)
同时质押网络资源 (RAM NET CPU) 在一次交易中,是否可行
EosTransaction transaction = new EosTransaction();
transaction.BlockNum = refBlockNum;
transaction.BlockPrefix = refBlockPrefix;
transaction.NetUsageWords = 0;
transaction.KcpuUsage = 0;
transaction.DelaySec = 0;
transaction.Expiration = expiration;
//创建账号
Action messageNew = new Action();
NewMessageData newMessageData = new NewMessageData();
messageNew.Account = new AccountName("eosio");
messageNew.Name = new AccountName("newaccount");
messageNew.Authorization.add(new AccountPermission(payer, "active"));
newMessageData.Creator = new AccountName(payer);
newMessageData.Name = new AccountName(newAccountName);
newMessageData.Owner = new Authority();
newMessageData.Active = new Authority();
newMessageData.Owner.addKey(new KeyPermissionWeight(newPublicKey.getBytes()));
newMessageData.Active.addKey(new KeyPermissionWeight(newPublicKey.getBytes()));
messageNew.Data = newMessageData;
transaction.Actions.add(messageNew);
//购买Ram
Action messageRam = new Action();
BuyRamMessageData buyRamMessageData = new BuyRamMessageData();
messageRam.Account = new AccountName("eosio");
messageRam.Name = new AccountName("buyram");
messageRam.Authorization.add(new AccountPermission(payer, "active"));
buyRamMessageData.Payer = new AccountName(payer);
buyRamMessageData.Receiver = new AccountName(newAccountName);
buyRamMessageData.Quant = ramAmount;
messageRam.Data = buyRamMessageData;
transaction.Actions.add(messageRam);
//抵押CPU NET
Action messageDelegate = new Action();
DelegatebwMessageData delegatebwMessageData = new DelegatebwMessageData();
messageDelegate.Account = new AccountName("eosio");
messageDelegate.Name = new AccountName("delegatebw");
messageDelegate.Authorization.add(new AccountPermission(payer, "active"));
delegatebwMessageData.From = new AccountName(payer);
delegatebwMessageData.Receiver = new AccountName(newAccountName);
delegatebwMessageData.StakeNetQuantity = netQuantity;
delegatebwMessageData.StakeCpuQuantity = cpuQuantity;
delegatebwMessageData.Transfer = 0;//抵押是否转移
messageDelegate.Data = delegatebwMessageData;
transaction.Actions.add(messageDelegate);
//签名
transaction.Signature.add(eos.getEosPrivateKey().sign(transaction.getSignHash()).eosEncoding(true));
return transaction.toJson().toString(4);
你的逻辑看起来是合理的。
签名结果如下,似乎不可以通过http://127.0.0.1:8888/v1/chain/push_transaction这样的接口发送到节点
{ "compression": "none", "signatures": [ "SIG_K1_KZePNm9g9XCXWYTMhb6Cv8HNBSNmXH89Xmf2Mb44t5WtcLyRv4mNMJfYE4wC3VzdsWUYJiYeeg7vzGwkNjuJJ4VkyZKXxU" ], "packed_trx": "e1bf495b6400f3030000000000000100000000004c9597000000572d3ccdcd01000000000000a68b00000000a8ed323221000000000000a68b0000000080a99ff6602a9d000000000005535953000000000000" }
后续我们会推出注册账号的测试用例,希望您能订阅本项目,以保证第一时间接收关于该项目的动态。
感谢,已经实现了,谢谢
您好:
看到测试用例里没有创建账号的相关代码,可以添加参考一下么~