关于百度链往期文章汇总
在Xuper链上部署Java语言智能合约和分析存证合约的实现逻辑
以单节点环境运行
以单一变量的方式来研究一个不了解的事物 才是合理的方式
不然多种变量杂糅在一起 只会越来越乱了
单节点即单个出块地址,不需要考虑多个出块节点轮流出块的情况
环境准备
cd pn1 rm -rf data/blockchain/xuper/
修改节点配置
- 节点地址 dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN
- 初始金额 100000000000000000000
- 每出一个块奖励 1000000
- 金额精度是8 即总金额为 1000000000000 个
- proposer_num为1表示一个出块节点
- period为3000表示每三秒出一次块
- alternate_interval为3000 表示出块节点切换耗时3秒 因为当前就一个节点 所以不需要切换
- term_interval为6000 表示节点1最后一个出块结束开始到节点2第一个节点开始之间间隔6秒 即 节点切换时间3秒+3秒出一个块 一共6秒 因为就一个节点所以这个时间也不需要
- block_num为20 表示一个节点出20个块 再轮到另外一个节点出20个块
- vote_unit_price表示每头一次票 所代表的权重即代表多少token值
查看节点账户地址
cat data/keys/address dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN
查看当前区块高度的脚本
#!/bin/bash for((i=1;i<=1;i++)); do echo -n "node$i:"; ./xchain-cli status -H 127.0.0.1:3710$i | grep trunkHeight; done echo -n '节点账户金额:' ./xchain-cli account balance dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN
查看初始地址金额
./xchain-cli account balance dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN
结果和期望一致
3秒出一个块 出了256个块 100000000000000000000+256*1000000=100000000000256000000
创建一个合约账户(默认由节点账户创建)
./xchain-cli account new --account 1111111111111111 --fee 1000
来源账户 dpzuVdosQrF2kmzumhVeFQZa1aYcdgFpN
金额是 1000000
这个金额大家可能会有疑问
总金额不是 > 100000000000256000000 这个值吗
(为什么大于 因为在不断的出块嘛)
那为什么是 1000000
原因是 总金额 虽然 > 100000000000256000000
但它是又很多的 面值为1000000的utxo组成
所以这里支付 1000手续费 那么只需要一个 1000000 的 utxo即可
目的账号有2个
一个是 1000手续费 去了 $ 账户
另一个是 999000 表示 1000000的utxo减去手续费1000 还剩这么多
大家有没有疑惑 $ 地址 是啥玩意
其实这个表示未知地址
因为此时发起一个创建一个合约账户的交易,同步返回一个交易hash
此时这个交易还未被打包做为块的一部分,还在交易池中即还未上链
打包的过程
1、先确定哪个出块节点
2、从交易池中获取3秒这个时间段内的交易
3、将这些交易打包(如果没有交易也会进行打包)
只有打包了之后 才会确定手续费会给到哪个出块节点地址
下面咱确认下上面的表述