使用JSONRPC创建账户

创建成功返回的JSON:
创建是用Action进行的,包含三个action,newaccount,buyram,delegatebw,
先对各自的abi进行参数对齐 然后进行abi_json_to_bin请求 最后进行整合请求

{
    "timestamp": "2018-09-10T09:33:29.000",
    "producer": "funnyhamster",
    "confirmed": 0,
    "previous": "00d06974a6485b5e6c80d804313d6c0058870848f103735fb24ae63851a61f66",
    "transaction_mroot": "00eb3fbea28360f5ab26cae9cf50c081baf5579800aa6062f059808ad9b44d7a",
    "action_mroot": "10a2e5ea43847603f2d68bc5b403eea5ec744b70d38ff1d73e859fbe9413e6c6",
    "schedule_version": 217,
    "new_producers": null,
    "header_extensions": [],
    "producer_signature": "SIG_K1_K26xvdaxUhQcE6Cga1fQfDLKxVYKpAG9nNk8isA4Pby8ZH2Jp8y8Z6ki8p3ZHAvuBFTJDrNTAW6va9Xbd1R7E8DoosQdXE",
    "transactions": [
        {
            "status": "executed",
            "cpu_usage_us": 7238,
            "net_usage_words": 43,
            "trx": {
                "id": "929ecaca3aa6aa09a515239ff79e78b4df62bf87809a45a7baf2848696c3f094",
                "signatures": [
                    "SIG_K1_KVJz9woQUmHRCot6prUeeY3H8vjZBSStUhefQhrmzsCDKS8MkqYV2ANgfPeSpdEgmAnqX39WnKraCGiwJYedzKkbu5nBnS"
                ],
                "compression": "none",
                "packed_context_free_data": "",
                "context_free_data": [],
                "packed_trx": "e03a965b2868e3b6720100000000030000000000ea305500409e9a2264b89a0150c810611a17b58b00000000a8ed32326650c810611a17b58b208269a69996b1ca01000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d7230100000001000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d723010000000000000000ea3055000000004873bd3e0150c810611a17b58b00000000a8ed32322050c810611a17b58b208269a69996b1caa08601000000000004454f53000000000000000000ea305500003f2a1ba6a24a0150c810611a17b58b00000000a8ed32323150c810611a17b58b208269a69996b1caa08601000000000004454f5300000000a08601000000000004454f53000000000100",
                "transaction": {
                    "expiration": "2018-09-10T09:35:28",
                    "ref_block_num": 26664,
                    "ref_block_prefix": 24295139,
                    "max_net_usage_words": 0,
                    "max_cpu_usage_ms": 0,
                    "delay_sec": 0,
                    "context_free_actions": [],
                    "actions": [
                        {
                            "account": "eosio",
                            "name": "newaccount",
                            "authorization": [
                                {
                                    "actor": "liulian12345",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "creator": "liulian12345",
                                "name": "testhahaha12",
                                "owner": {
                                    "threshold": 1,
                                    "keys": [
                                        {
                                            "key": "EOS6BQZmWhPKZLVg4YDcR6KdrYb1dqjDAWxyGPHRTD6mpqJ1dACAp",
                                            "weight": 1
                                        }
                                    ],
                                    "accounts": [],
                                    "waits": []
                                },
                                "active": {
                                    "threshold": 1,
                                    "keys": [
                                        {
                                            "key": "EOS6BQZmWhPKZLVg4YDcR6KdrYb1dqjDAWxyGPHRTD6mpqJ1dACAp",
                                            "weight": 1
                                        }
                                    ],
                                    "accounts": [],
                                    "waits": []
                                }
                            },
                            "hex_data": "50c810611a17b58b208269a69996b1ca01000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d7230100000001000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d72301000000"
                        },
                        {
                            "account": "eosio",
                            "name": "buyram",
                            "authorization": [
                                {
                                    "actor": "liulian12345",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "payer": "liulian12345",
                                "receiver": "testhahaha12",
                                "quant": "10.0000 EOS"
                            },
                            "hex_data": "50c810611a17b58b208269a69996b1caa08601000000000004454f5300000000"
                        },
                        {
                            "account": "eosio",
                            "name": "delegatebw",
                            "authorization": [
                                {
                                    "actor": "liulian12345",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "from": "liulian12345",
                                "receiver": "testhahaha12",
                                "stake_net_quantity": "10.0000 EOS",
                                "stake_cpu_quantity": "10.0000 EOS",
                                "transfer": 1
                            },
                            "hex_data": "50c810611a17b58b208269a69996b1caa08601000000000004454f5300000000a08601000000000004454f530000000001"
                        }
                    ],
                    "transaction_extensions": []
                }
            }
        }
    ],
    "block_extensions": [],
    "id": "00d06975eb6fb6c7c281c3f68819489c27a2f876e3820f8bc37bb09f09f6d4ef",
    "block_num": 13658485,
    "ref_block_prefix": 4140007874
}
09/10/2018 16:40 下午 posted in  EOS

EOS开发资料备注

09/06/2018 15:26 下午 posted in  EOS

EOS 超级节点的五个使命

在EOS系统中,有“两股势力”是整个系统最关键的因素,那就是项目方和见证人。很多人觉得EOS这个项目“奇葩”,就奇葩在项目方和见证人的关系上。EOS的项目方是BlockOne公司,创始人是BlockOne公司的首席技术官(CTO)Daniel Larimer,坊间称BM(ByteMaster)。BlockOne公司曾经多次声明,其公司只开发EOS软件,并免费提供给任何想使用软件的人,公司不负责任何EOS网络启动。更令投资者难以接受的是,BlockOne公司公开宣称,其公司众筹的EOS代币未来可能不具有任何价值和效用,公司不为EOS代币的价值负责,令很多人觉得BlockOne公司不“靠谱”。

其实BlockOne公司这样的声明是有意为之的,众所周知美国对众筹的管理非常严格,一旦众筹行为所分发的代币被美国政府定义为公司的股份或证券,就会立即被界定为非法集资。比特币就是因为被界定为了资产,而不是股份,才能在美国合法进行交易。为了让EOS代币被界定为资产,BlockOne公司只好宣布不为EOS代币负责,也不负责启动真正的EOS系统。

BlockOne公司如此的定位,就给EOS系统的见证人更多的责任和使命,EOS系统见证人的角色可以从以下几点来理解:

##1.硬件资源

任何计算机系统都是由软件和硬件两大部分组成的,BlockOne公司提供软件,硬件部分则由见证人提供,双方各司其职,组成了一个完整的计算机系统。

##2.社区建设

对于BlockOne公司来说,管理和建设如此大规模的社区是不现实的,而见证人分布于世界合格国家,了解本地的EOS代币持有者。见证人在当地进行宣传活动,吸引选票的同时,也相当于建立了一个当地的EOS社区。所有的见证人社区组合起来,就建立了世界最大的一个区块链社区。

##3.社区治理

从社区治理来看,见证人相当于议会,每个见证人都是由当地选民选举出来的,非常像西方的代议制民主。见证人中的大多数(三分之二)通过的决策,就代表了大多数选民(EOS代币持有者)的观点。见证人组织就是EOS系统的最高权力。但BlockOne官方也可以制衡见证人,因为BlockOne官方尤其是BM本人在EOS代币持有者中有巨大影响力,可以左右选民的投票。而且BlockOne官方和BM本人也持有大量EOS代币,他们可以直接进行投票来影响见证人选举,双方互相制约。

##4.去中心化

从整个EOS系统的去中心化机制来看,见证人担负着系统去中心化的使命。BlockOne公司是“中心化”的,理论上可以被强力控制。EOS见证人分散在时间各地,运行和维护EOS系统,共同保存系统账本,维护各地的EOS社区。理论上来讲,只要系统还剩下最后一个见证人,EOS系统都不会崩溃,都可以等到其他见证人恢复再重新加入系统。几十个见证人+后备见证人保证了EOS系统的高度去中心化。也保证了系统的冗余度和稳定性。

##5.应用生态

一个去中心化智能合约系统,最核心的就是智能合约(Dapp)本身的开发。没有大量优秀Dapp的智能合约系统,就像是iOS没有了大的第三方应用,整个系统就没有任何价值。BlockOne官方的精力主要集中在在系统的开发,那么Dapp的开发生态的培养,一方面需要BlockOne官方设立基金,激励Dapp开发团队,另一方面就需要见证人了。目前EOS系统的发展也是这样的,很多见证人都发布了自己的DApp开发计划,他们与BlockOne的基金一起培育EOS的开发者生态。

见证人对系统做出贡献的同时,当然也会获得相应的奖励。目前见证人的奖励分为出块奖励和得票奖励,前者根据出块的数量,后者根据选举时的得票数。目前EOS系统每年通货膨胀5%,这里面的五分之一会作为见证人的奖励。按总量10以枚计算,第一年用于见证人奖励的代币为1000万枚。按照15美元单价计算,总金额为1.5亿美元。这样的奖励规模使得见证人有足够的资源去维护自己的硬件开支,并持续壮大EOS社区。

BlockOne公司、EOS见证人、EOS代币持有者这三者互相制衡、互相支撑、互相渗透,在区块链世界里独树一帜。

08/15/2018 17:00 下午 posted in  EOS

使用RPC接口新建EOS账户

##1、POST http://127.0.0.1:8888/v1/chain/abi_json_to_bin (序列化新建账号的 json)

{
	"code": "eosio",
	"action": "newaccount",
	"args": {
		"creator": "bitcoin",
		"name": "eason",
		"owner": {
			"threshold": 1,
			"keys": [{
				"key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r",
				"weight": 1
			}],
			"accounts": [],
			"waits": []
		},
		"active": {
			"threshold": 1,
			"keys": [{
				"key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r",
				"weight": 1
			}],
			"accounts": [],
			"waits": []
		}
	}
}

##2、POST http://127.0.0.1:8888/v1/wallet/sign_transaction(签名新建账号的交易)

[
  {
    "expiration" : "2018-05-17T09:54:06.500",
    "signatures" : [

    ],
    "actions" : [
      {
        "account" : "eosio",
        "data" : "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000",
        "authorization" : [
          {
            "actor" : "bitcoin",
            "permission" : "active"
          }
        ],
        "name" : "newaccount"
      }
    ],
    "ref_block_prefix" : 4033496171,
    "ref_block_num" : 363759
  },
  [
    "EOS5wQ4HaFFDxyfc23dZNXUTGBHepM1vXGfr1vkfWHfRfvAMXP7VV"
  ],
  ""
]

##3、http://127.0.0.1:8888/v1/chain/push_transaction (把签名后的交易push 推送到 EOS 系统中,即新建账号完成

{
  "compression" : "none",
  "transaction" : {
    "ref_block_prefix" : 4033496171,
    "actions" : [
      {
        "account" : "eosio",
        "data" : "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000",
        "authorization" : [
          {
            "actor" : "bitcoin",
            "permission" : "active"
          }
        ],
        "name" : "newaccount"
      }
    ],
    "expiration" : "2018-05-17T09:54:06.500",
    "ref_block_num" : 363759
  },
  "signatures" : [
    "SIG_K1_KY58QhP4jWLJWr7cVkahgL3JAjC8QMK5jnHurFUmn8xU71v6Mh4DmgjY75DxmWE6Je457N6MRM7GapxU43hywnAWKEmC1W"
  ]
}

(代币转账 和 新建账号的 sign_transaction、push_transaction 类似,主要就是 智能合约的不同 和 调用的action 的不同 以及 action 中具体的参数不同。)

新建账号(newaccount)需要用 「已有的账号」 创建「 新账号」

内部是 已有账号 调用系统智能合约eosio中的 newaccount 的 action

新建账号的交易需要用 创建者 的 私钥签名交易(sign_transaction),然后 推送签名后的交易 (push_transaction)到区块链中。

a. sign_transaction 图示

b. push_transaction 图示

#具体接口

1、POST http://127.0.0.1:8888/v1/chain/abi_json_to_bin (序列化新建账号的 json)

请求参数

请求参数:

参数名称 参数类型 描述
code string 系统智能合约,默认填写“eosio”
action string 智能合约中的action,默认填写“newaccount”
creator string 创建者
name string 新建账号名
key string 新建账号的公钥
请求示例:

{
  "code": "eosio",
  "action": "newaccount",
  "args": {
    "creator": "bitcoin",
    "name": "eason",
    "owner": {
      "threshold": 1,
      "keys": [
        {
          "key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r", //owner public key
          "weight": 1
        }
      ],
      "accounts": [],   
      "waits": []      
    },
    "active": {
      "threshold": 1,
      "keys": [
        {
          "key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r", //active public key
          "weight": 1
        }
      ],
      "accounts": [],    
      "waits": []        
    }
  }
}

响应参数

参数名称 参数类型 描述
binargs string 序列化的结果,在sign_transaction 和 push_transaction 中作为 data 请求参数
响应示例

{
    "binargs": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000"
}

2、GET http://127.0.0.1:8888/v1/chain/get_info (获取 EOS 区块链的最新区块号)

响应参数

参数名称 参数类型 描述
head_block_num number 最新区块号
响应示例

{
    "server_version": "13952d45",
    "head_block_num": 359934,
    "last_irreversible_block_num": 359934,
    "last_irreversible_block_id": "a69af2c4aa56b5c4bd1cdf9c2acb1a7796bbc3043954e36da182a144ddcf58fb",
    "head_block_id": "a69af2c4aa56b5c4bd1cdf9c2acb1a7796bbc3043954e36da182a144ddcf58fb",
    "head_block_time": "2018-05-17T09:02:12",
    "head_block_producer": "eosio",
    "virtual_block_cpu_limit": 100000000,
    "virtual_block_net_limit": 1048576000,
    "block_cpu_limit": 99900,
    "block_net_limit": 1048576
}

3、POST http://127.0.0.1:8888/v1/chain/get_block (获取最新区块的具体信息)

请求参数

参数名称 参数类型 描述
block_num_or_id number 最新区块号,上一个响应结果中的 head_block_num

{
  "block_num_or_id":359934
}

响应参数

参数名称 参数类型 描述
timestamp string 最新区块的生成时间
block_num number 区块号,作为sign_transaction 和 push_transaction中的 ref_block_num请求参数
ref_block_prefix number 作为sign_transaction 和 push_transaction中的 ref_block_prefix 请求参数

响应示例

{
    "timestamp": "2018-05-17T09:02:12.500",
    "producer": "eosio",
    "confirmed": 0,
    "previous": "00057dfd5044aba0d750eff1fbb84ac92cbf29db1354968816fd2a9aefb0a0b4",
    "transaction_mroot": "0000000000000000000000000000000000000000000000000000000000000000",
    "action_mroot": "dee87e5d025383574ac12c310faf6b759fba52bd19977399b7ebf6ccdd81c7fa",
    "schedule_version": 0,
    "header_extensions": [],
    "producer_signature": "SIG_K1_KVX3RRTS4ch9m6bWDctsAhDWtFydTrg3mW7PaqCXnBZZWezBW23enggeW4ijuWBHBVsDoxzjMvspoFtPsU5nmau4ZYomZo",
    "transactions": [],
    "block_extensions": [],
    "id": "a69af2c4aa56b5c4bd1cdf9c2acb1a7796bbc3043954e36da182a144ddcf58fb",
    "block_num": 359934,
    "ref_block_prefix": 1943477914
}

4、POST http://127.0.0.1:8888/v1/wallet/unlock (解锁钱包,签名交易前,需要解锁账号所在的钱包)

请求参数

参数名称 参数类型 描述
string 钱包名称
string 钱包密码
请求示例

["liu","PW5KjWHnhL5kSRxpWyHQj321dFsZN62HAbZjVSqnDvzKMuEKBZ1T9"]

响应示例

{}  //成功解锁钱包,返回{}

5、POST http://127.0.0.1:8888/v1/wallet/sign_transaction(签名新建账号的交易)

请求的参数

参数名称 参数类型 描述
ref_block_num number 上面获得的最新区块号
ref_block_prefix number 上面获得的最新区块号相关信息
expiration string 过期时间 = timestamp 加上 一段时间 ,例如1分钟
account string 调用系统智能合约账号名,默认为 eosio
name string 新建账号的action,默认为 newaccount
actor string 创建者 账户名
data string abi_json_to_bin 序列化后的 值 binargs
string 创建者的 公钥
请求示例

[
  {
    "ref_block_num": 363759,
    "ref_block_prefix": 4033496171,
    "expiration": "2018-05-17T09:54:06.500",
    "actions": [
      {
        "account": "eosio",  //有 newaccount 的 action 的智能合约账号
        "name": "newaccount",
        "authorization": [
          {
            "actor": "bitcoin",
            "permission": "active"
          }
        ],
        "data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000" // //abi_json_to_bin 的响应参数 binargs
      }
    ],
    "signatures": []
  },
  [
    "EOS5wQ4HaFFDxyfc23dZNXUTGBHepM1vXGfr1vkfWHfRfvAMXP7VV" //创建者的公钥(交易发起者的公钥),其实是用的公钥对应的私钥进行签名的,签名前需要先解锁包含此私钥的钱包
  ],
  ""
]

响应参数

参数名称 参数类型 描述
signatures string 新建账号的交易 的签名结果,最后 push_transaction 中使用
响应示例

{
    "expiration": "2018-05-17T09:54:06",
    "ref_block_num": 36079,
    "ref_block_prefix": 4033496171,
    "max_net_usage_words": 0,
    "max_cpu_usage_ms": 0,
    "delay_sec": 0,
    "context_free_actions": [],
    "actions": [
        {
            "account": "eosio",
            "name": "newaccount",
            "authorization": [
                {
                    "actor": "bitcoin",
                    "permission": "active"
                }
            ],
            "data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000" 
        }
    ],
    "transaction_extensions": [],
    "signatures": [
    "SIG_K1_KY58QhP4jWLJWr7cVkahgL3JAjC8QMK5jnHurFUmn8xU71v6Mh4DmgjY75DxmWE6Je457N6MRM7GapxU43hywnAWKEmC1W"   // 签名 用在 push_transaction 中
    ],
    "context_free_data": []
}

6、http://127.0.0.1:8888/v1/chain/push_transaction (把签名后的交易push 推送到 EOS 系统中,即新建账号完成)

请求参数

参数名称 参数类型 描述
compression string 默认 none
data string abi_json_to_bin 序列化后的 值 binargs
signatures string 交易签名后的结果
请求示例

{
  "compression": "none",
  "transaction": {
    "expiration": "2018-05-17T09:54:06.500",
    "ref_block_num": 363759,
    "ref_block_prefix": 4033496171,
    "actions": [
      {
        "account": "eosio",
        "name": "newaccount",
        "authorization": [
          {
            "actor": "bitcoin",
            "permission": "active"
          }
        ],
        "data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000"    //abi_json_to_bin 的响应参数 binargs
      }
    ]
  },
  "signatures": ["SIG_K1_KY58QhP4jWLJWr7cVkahgL3JAjC8QMK5jnHurFUmn8xU71v6Mh4DmgjY75DxmWE6Je457N6MRM7GapxU43hywnAWKEmC1W"]
}

响应示例

{
    "transaction_id": "2047702bfdc4678aabe123f335b4b5f604203edf7b4de8e42fa2c9211d4de075",
    "processed": {
        "id": "2047702bfdc4678aabe123f335b4b5f604203edf7b4de8e42fa2c9211d4de075",
        "receipt": {
            "status": "executed",
            "cpu_usage_us": 390,
            "net_usage_words": 25
        },
        "elapsed": 390,
        "net_usage": 200,
        "scheduled": false,
        "action_traces": [
            {
                "receipt": {
                    "receiver": "eosio",
                    "act_digest": "ae18e275184e7defe81be175711cd24206990518963f857715e98755f713957c",
                    "global_sequence": 365444,
                    "recv_sequence": 365419,
                    "auth_sequence": [
                        [
                            "bitcoin",
                            27
                        ]
                    ]
                },
                "act": {
                    "account": "eosio",
                    "name": "newaccount",
                    "authorization": [
                        {
                            "actor": "bitcoin",
                            "permission": "active"
                        }
                    ],
                    "data": {
                        "creator": "bitcoin",
                        "name": "zhangjie",
                        "owner": {
                            "threshold": 1,
                            "keys": [
                                {
                                    "key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r",
                                    "weight": 1
                                }
                            ],
                            "accounts": [],
                            "waits": []
                        },
                        "active": {
                            "threshold": 1,
                            "keys": [
                                {
                                    "key": "EOS4ufZoTw95yHJS6Cyz3h4w5a2W4cyYpMYRnd7gbFZuCfPxUFS6r",
                                    "weight": 1
                                }
                            ],
                            "accounts": [],
                            "waits": []
                        }
                    },
                    "hex_data": "000000603a8ab23b000000ca3d364dfb0100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c3060010000000100000001000202aba1b7d9fc5de9dd93308dc5ebedcb066c8e5b36970bfd82ae715d9e8c306001000000"
                },
                "elapsed": 163,
                "cpu_usage": 0,
                "console": "",
                "total_cpu_usage": 0,
                "trx_id": "2047702bfdc4678aabe123f335b4b5f604203edf7b4de8e42fa2c9211d4de075",
                "inline_traces": []
            }
        ],
        "except": null
    }
}

From:使用RPC接口新建EOS账户 - 实战

08/15/2018 16:23 下午 posted in  EOS

EOS测试账号

EOS测试网络
API接口文档

节点:192.168.50.159,
其中nodeosd相关API请访问 http://192.168.50.159:8888,
Wallet相关API请访问 http://192.168.50.159:3000

##1.测试网

http://jungle.cryptolions.io/#accountInfo

##2.测试API

https://github.com/CryptoLions/EOS-Jungle-Testnet

##2.测试账号
liulian12345

Description EOS Token Sale Claim Key
Public key   EOS7LAzv5dbrzprL8DZuHYMKfTjQQ9AUXPAKzQfSFUed1GoJuTXmd
Private key  5Hsk6wB2MPqGPrU53jSVGHm3uvoqWJk3rCrnkGzEGc7HrH28n7t

localhost

Private key: 5JUJHBJF18Qs8WMdXnb5488AFzdAZcfKZ5QAX1srMLWa62rsL4e
Public key: EOS6BQZmWhPKZLVg4YDcR6KdrYb1dqjDAWxyGPHRTD6mpqJ1dACAp

Private key: 5KXZjxLz4qczfCGmWYUzxhiKyRN1eYaGCRZaT1hHAFJs9xsmCKS
Public key: EOS5uLxwJQgpEJteBxBTKiqWnyWiJTQAzAqx71M5AuMZ917oMv4g4

Jungle:

测试网络账号创建的block: 13658485

{
    "timestamp": "2018-09-10T09:33:29.000",
    "producer": "funnyhamster",
    "confirmed": 0,
    "previous": "00d06974a6485b5e6c80d804313d6c0058870848f103735fb24ae63851a61f66",
    "transaction_mroot": "00eb3fbea28360f5ab26cae9cf50c081baf5579800aa6062f059808ad9b44d7a",
    "action_mroot": "10a2e5ea43847603f2d68bc5b403eea5ec744b70d38ff1d73e859fbe9413e6c6",
    "schedule_version": 217,
    "new_producers": null,
    "header_extensions": [],
    "producer_signature": "SIG_K1_K26xvdaxUhQcE6Cga1fQfDLKxVYKpAG9nNk8isA4Pby8ZH2Jp8y8Z6ki8p3ZHAvuBFTJDrNTAW6va9Xbd1R7E8DoosQdXE",
    "transactions": [
        {
            "status": "executed",
            "cpu_usage_us": 7238,
            "net_usage_words": 43,
            "trx": {
                "id": "929ecaca3aa6aa09a515239ff79e78b4df62bf87809a45a7baf2848696c3f094",
                "signatures": [
                    "SIG_K1_KVJz9woQUmHRCot6prUeeY3H8vjZBSStUhefQhrmzsCDKS8MkqYV2ANgfPeSpdEgmAnqX39WnKraCGiwJYedzKkbu5nBnS"
                ],
                "compression": "none",
                "packed_context_free_data": "",
                "context_free_data": [],
                "packed_trx": "e03a965b2868e3b6720100000000030000000000ea305500409e9a2264b89a0150c810611a17b58b00000000a8ed32326650c810611a17b58b208269a69996b1ca01000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d7230100000001000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d723010000000000000000ea3055000000004873bd3e0150c810611a17b58b00000000a8ed32322050c810611a17b58b208269a69996b1caa08601000000000004454f53000000000000000000ea305500003f2a1ba6a24a0150c810611a17b58b00000000a8ed32323150c810611a17b58b208269a69996b1caa08601000000000004454f5300000000a08601000000000004454f53000000000100",
                "transaction": {
                    "expiration": "2018-09-10T09:35:28",
                    "ref_block_num": 26664,
                    "ref_block_prefix": 24295139,
                    "max_net_usage_words": 0,
                    "max_cpu_usage_ms": 0,
                    "delay_sec": 0,
                    "context_free_actions": [],
                    "actions": [
                        {
                            "account": "eosio",
                            "name": "newaccount",
                            "authorization": [
                                {
                                    "actor": "liulian12345",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "creator": "liulian12345",
                                "name": "testhahaha12",
                                "owner": {
                                    "threshold": 1,
                                    "keys": [
                                        {
                                            "key": "EOS6BQZmWhPKZLVg4YDcR6KdrYb1dqjDAWxyGPHRTD6mpqJ1dACAp",
                                            "weight": 1
                                        }
                                    ],
                                    "accounts": [],
                                    "waits": []
                                },
                                "active": {
                                    "threshold": 1,
                                    "keys": [
                                        {
                                            "key": "EOS6BQZmWhPKZLVg4YDcR6KdrYb1dqjDAWxyGPHRTD6mpqJ1dACAp",
                                            "weight": 1
                                        }
                                    ],
                                    "accounts": [],
                                    "waits": []
                                }
                            },
                            "hex_data": "50c810611a17b58b208269a69996b1ca01000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d7230100000001000000010002aa1bf6ea68794eb7ad364ea9e3438171866a557f1db49f596c67eab2a6a0d72301000000"
                        },
                        {
                            "account": "eosio",
                            "name": "buyram",
                            "authorization": [
                                {
                                    "actor": "liulian12345",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "payer": "liulian12345",
                                "receiver": "testhahaha12",
                                "quant": "10.0000 EOS"
                            },
                            "hex_data": "50c810611a17b58b208269a69996b1caa08601000000000004454f5300000000"
                        },
                        {
                            "account": "eosio",
                            "name": "delegatebw",
                            "authorization": [
                                {
                                    "actor": "liulian12345",
                                    "permission": "active"
                                }
                            ],
                            "data": {
                                "from": "liulian12345",
                                "receiver": "testhahaha12",
                                "stake_net_quantity": "10.0000 EOS",
                                "stake_cpu_quantity": "10.0000 EOS",
                                "transfer": 1
                            },
                            "hex_data": "50c810611a17b58b208269a69996b1caa08601000000000004454f5300000000a08601000000000004454f530000000001"
                        }
                    ],
                    "transaction_extensions": []
                }
            }
        }
    ],
    "block_extensions": [],
    "id": "00d06975eb6fb6c7c281c3f68819489c27a2f876e3820f8bc37bb09f09f6d4ef",
    "block_num": 13658485,
    "ref_block_prefix": 4140007874
}
08/15/2018 15:00 下午 posted in  EOS

EOSIO Dawn 4.0 系统合约解读

From:EOSIO Dawn 4.0 系统合约解读

Dawn 4.0 发布后,基本上白皮书上提到的特性都得到了实现,特别是投票、资源抵押和内存买卖。

EOS 的网络带宽和计算资源是通过抵押代币的方式获得,如果不需要了可以解除抵押收回原先的代币。

投票的权重和抵押代币所获得的带宽和计算资源相关,抵押了越多,投票的权重越大。同时投票的权重会随着时间的推移减少,这个设定鼓励用户持续更新自己的投票。

而存储资源则是通过购买来得到,但是并不会消耗,当不再需要存储资源的时候可以出售。但是存储资源相对于EOS代币的价格会随着市场对于存储资源的需求而变动。

而这些功能都是在 eosio.system 这个智能合约中实现。

本文试图通过分析 eosio.system 中所有的功能函数来解读 eos 系统功能。

#函数列表
在 eosio.system.hpp 头文件中包含以下函数声明:

##delegatebw

void onblock( block_timestamp timestamp, account_name producer );

void delegatebw( account_name from, account_name receiver,asset stake_net_quantity, asset stake_cpu_quantity, bool transfer );

delegatebw 函数用来实现抵押代币获取 cpu 和带宽资源。参数定义:

  • from : 从哪个账号扣除用来抵押的代币
  • receiver : 抵押的代币的接受者,表示抵押获取的资源作用在哪个账号上
  • stake_net_quantity : 用来抵押带宽资源的代币数量
  • stake_cpu_quantity : 用来抵押计算资源的代币数量
  • transfer : 是否接受者可以主动解除抵押获得代币,如果不是,只有发起者能够解除抵押收回代币

##undelegatebw

void undelegatebw( account_name from, account_name receiver,asset unstake_net_quantity, asset unstake_cpu_quantity );
undelegatebw 函数用来解除抵押,释放资源,收回代币,参数定义:
  • from : 解除用哪个账号所抵押的代币
  • receiver : 解除作用在哪个账号上的抵押代币
  • unstake_net_quantity : 解除用来获取带宽资源的代币数量
  • unstake_cpu_quantity : 解除用来获取计算资源的代币数量
  • 解除抵押之后,资源会马上释放,同时投票权重也相应消失。但是代币需要等待一定时间才能回到账号里,目前的设定是3天。

##buyram

void buyram( account_name buyer, account_name receiver, asset tokens );

void buyrambytes( account_name buyer, account_name receiver, uint32_t bytes );

这两个函数的作用是购买存储资源,区别是买特定数量的代币还是买特定大小的内容。参数定义:

  • buyer : 购买存储资源的账号
  • receiver : 接受存储资源的账号
  • tokens : 购买存储资源所用的代币数量
  • bytes : 都买存储资源空间大小的数值

##sellram

void sellram( account_name receiver, int64_t bytes );

sellram函数功能是出售不需要的存储资源。参数定义:

  • receiver : 出售资源代币的接受账号
  • bytes : 出售多少空间的存储资源
    出售后资源会马上释放,收入的代币也会马上入账。

##refund

void refund( account_name owner );

refund 函数 在 undelegatebw 函数解除抵押后调用,作用是把抵押的代币退回账户。

##regproducer

void regproducer( const account_name producer, const public_key& producer_key, const std::string& url, uint16_t location );

regproducer 函数的作用是注册成为超级节点候选人。参数定义:

  • producer : 候选节点的账户名
  • producer_key : 候选节点的账户公钥
  • url : 候选节点的网站地址
  • location : 候选节点的机房地理位置
    注册成为候选人后就可以接受用户的投票了。

##unregprod

void unregprod( const account_name producer );

unregprod 函数的作用的取消成为候选人。

##voteproducer

void setram( uint64_t max_ram_size );

void voteproducer( const account_name voter, const account_name proxy, const std::vector<account_name>& producers );

voteproducer 函数的作用是投票。参数定义:

  • voter : 投票人
  • proxy : 代理投票人
  • producers : 得票人列表
    有两种投票模式,代理模式和直接投票模式。代理模式是将投票权重委托给一个代理人,让他帮你投票。直接投票模式就是直接投票给你信任的超级节点,最多30个。

#regproxy

void regproxy( const account_name proxy, bool isproxy );

regproxy 函数的作用是注册成为代理人,接受其他用户的委托。

##claimrewards

void claimrewards( const account_name& owner );

claimrewards 函数的作用是支付超级节点的奖励。

void setpriv( account_name account, uint8_t ispriv );

#测试方法
开发者可以通过 cleos system子命令来测试这些功能。

如果要加入一个测试网络成为出块人,步骤应该是这样:

  1. 注册账号
  2. 启动节点同步区块
  3. 注册成为候选人
  4. 抵押代币获得资源和投票权重
  5. 投票给自己
  6. 当得票足够后,等待一个周期,就可以成为出块人了。
08/15/2018 14:24 下午 posted in  EOS