eos java_eos java · eosforce/eosforce Wiki · GitHub

eos-java

转账示例:alice 转给 bob 1 个 eos。整个过程主要分为 4 个步骤:

abi 接口序列化

本地构建交易

本地签名

发送交易

EOS Force 与 EOSIO 构建交易的主要区别在于交易手续费,即在第 2 步构建交易时,需要加入字段 fee, 比如:"fee": "0.0100 EOS"。转账的手续费为 0.01 EOS,其他投票,领取分红等手续费有所不同,具体参见 eosforce 手续费列表。

为了避免交易在本地执行但实际并未没有广播出去,从而导致查询等操作出现异常,nodeos_url 尽量写外面同步节点的 url,不要用本地节点。

1. abi 接口序列化

API:

nodeos_url/v1/chain/abi_json_to_bin

示例:

$ curl https://w1.eosforce.cn/v1/chain/abi_json_to_bin -X POST -d '{"code":"eosio", "action":"transfer", "args":{"from":"alice", "to":"bob", "quantity": "1.0000 EOS", "memo": ""}}'

返回结果:

{"binargs":" 0000000000a09b3b00000000004f0feb102700000000000004454f530000000000"}

2. 本地构建转账交易

构建如下结构的 json:

{

"expiration": "2018-07-11T07:46:13",

"ref_block_num": 551145,

"ref_block_prefix": 4162828550,

"net_usage_words": 0,

"max_cpu_usage_ms": 0,

"delay_sec": 0,

"context_free_actions": [],

"actions": [

{

"account": "eosio",

"name": "transfer",

"authorization": [

{

"actor": "alice",

"permission": "active"

}

],

"data": "0000000000a09b3b00000000004f0feb102700000000000004454f530000000000"

}

],

"transaction_extensions": [],

"fee": "0.0100 EOS"

}

55cb79c0e197ec1661d9dfee6310a814.png 注意:一定要添加 fee 字段。

expiration, ref_block_num, ref_block_prefix, chainId 需要从接口: nodeos_url/v1/chain/get_info 接口获取。

3. 本地交易签名

通过公钥和 chainId 对第 2 步构造的 json 数据签名。

待签原文字节码数据:

签名前:

[-67,97,-82,58,3,30,-114,-14,-7,126,-29,-80,-26,39,118,-42,-45,13,72,51,-56,-9,-63,100,92,101,123,20,-111,81,0,75,-59,-75,69,91,-23,104,6,-71,31,-8,0,0,0,0,1,0,0,0,0,0,-22,48,85,0,0,0,87,45,60,-51,-51,1,0,0,0,0,0,-96,-101,59,0,0,0,0,-88,-19,50,50,33,0,0,0,0,0,-96,-101,59,0,0,0,0,0,79,15,-21,16,39,0,0,0,0,0,0,4,69,79,83,0,0,0,0,0,0,100,0,0,0,0,0,0,0,4,69,79,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

签名后:

SIG_K1_KBEtNKsk7GpRDyB7udNacTwvJiyuvb19ouBX9to95HoFkbdfdAstAxpM7VKdCDwY4Lqg7ywk5ja3RbtKGztw1dEkKC1n8k

4. 发送交易

API:

nodeos_url/v1/chain/push_transaction

{

"signatures": [

"SIG_K1_KBEtNKsk7GpRDyB7udNacTwvJiyuvb19ouBX9to95HoFkbdfdAstAxpM7VKdCDwY4Lqg7ywk5ja3RbtKGztw1dEkKC1n8k"

],

"compression": "none",

"packed_context_free_data": "",

"packed_trx": "c5b5455be96806b91ff800000000010000000000ea3055000000572d3ccdcd010000000000a09b3b00000000a8ed3232210000000000a09b3b00000000004f0feb102700000000000004454f53000000000000640000000000000004454f5300000000"

}

返回结果中有包含字段transaction_id字段即为成功

{

"_children": {

"transaction_id": {

"_value": "4318727153813ecfae9c7477664a39bfacf034a07edb26ee4f234b65ad6cfe29"

},

"processed": {

"_children": {

"id": {

"_value": "4318727153813ecfae9c7477664a39bfacf034a07edb26ee4f234b65ad6cfe29"

},

"receipt": {

"_children": {

"status": {

"_value": "executed"

},

"cpu_usage_us": {

"_value": 1249

},

"net_usage_words": {

"_value": 18

}

},

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

},

"elapsed": {

"_value": 1249

},

"net_usage": {

"_value": 144

},

"scheduled": {

"_value": false

},

"action_traces": {

"_children": [

{

"_children": {

"receipt": {

"_children": {

"receiver": {

"_value": "eosio"

},

"act_digest": {

"_value": "ee870581670fb3342a4c93391687976ee245f97611a305fb6be40e5c960df107"

},

"global_sequence": {

"_value": 647610

},

"recv_sequence": {

"_value": 647007

},

"auth_sequence": {

"_children": [

{

"_children": [

{

"_value": "alice"

},

{

"_value": 42

}

],

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

}

],

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

},

"code_sequence": {

"_value": 1

},

"abi_sequence": {

"_value": 1

}

},

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

},

"act": {

"_children": {

"account": {

"_value": "eosio"

},

"name": {

"_value": "transfer"

},

"authorization": {

"_children": [

{

"_children": {

"actor": {

"_value": "alice"

},

"permission": {

"_value": "active"

}

},

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

}

],

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

},

"data": {

"_children": {

"from": {

"_value": "alice"

},

"to": {

"_value": "bob"

},

"quantity": {

"_value": "1.0000 EOS"

},

"memo": {

"_value": ""

}

},

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

},

"hex_data": {

"_value": "0000000000a09b3b00000000004f0feb102700000000000004454f530000000000"

}

},

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

},

"elapsed": {

"_value": 268

},

"cpu_usage": {

"_value": 0

},

"console": {

"_value": ""

},

"total_cpu_usage": {

"_value": 0

},

"trx_id": {

"_value": "4318727153813ecfae9c7477664a39bfacf034a07edb26ee4f234b65ad6cfe29"

},

"inline_traces": {

"_children": [],

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

}

},

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

}

],

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

},

"except": {}

},

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

}

},

"_nodeFactory": {

"_cfgBigDecimalExact": false

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值