您当前的位置:首页 > 互联网百科 > 区块链

百度区块链所遇到的问题及处理汇总

时间:2020-07-31 10:35:16  来源:  作者:

前言

这篇文章说下使用百度链可能遇到的问题及解决办法

创世节点账户余额最大值

cat data/config/xuper.json 
百度区块链所遇到的问题及处理汇总

 

我随便写了一个值 239位

然后查询下余额可以查到

百度区块链所遇到的问题及处理汇总

 

所以就认为没有最大值吧 设置为多少就是多少喽

若要知道精确的 需要看下源码

转账金额大小有限制吗

./xchain-cli transfer --to XC1111111111111111@xuper --amount 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
百度区块链所遇到的问题及处理汇总

 

有点震惊呐 这么大都可以转账 哈哈

这个账户我也没有创建 我直接往里面转账 也是可以的?

在转账的时候同时创建好了这个账户,但不是合约账户哦

普通账户和合约账户可以是同一个账户名称

我们再来测试下哈

1、先给一个不存在的账户转账

此时会创建这个普通账户

百度区块链所遇到的问题及处理汇总

 

2、在创建一个同名的合约账户

百度区块链所遇到的问题及处理汇总

 

印证了上述的猜测

调用合约 保存K-V Key和Value长度有限制吗

我测试的时候是用的36288长的字符串 是可以的

百度区块链所遇到的问题及处理汇总

 

如果是 36288*2 长度 JAVA代码已经不支持了 超过了java 字符串常量的长度

这里科普下java的基本知识

a、字符串变量:
String内部是以char数组的形式存储,数组的长度是int类型,那么String允许的最大长度就是Integer.MAX_VALUE = 2^zhi31 - 1 = 2147483647。又由于java中的字符是以16位存储的,因此大概需要4GB的内存才能存储最大长度的字符串。 
b、字符串常量:
如“abc”、”1234”之类写在代码中的字符串str,那么允许的最大长度取决于字符串在常量池中的存储大小,也就是字符串在class格式文件中的存储格式:
CONSTANT_Utf8_info {    
  u1  tag;    
  u2  length;   
  u1  bytes[length];
}
  
u2是无符号的16位整数,因此理论上允许的string str的最大长度是2^16-1=65535。然而实际测试表明,允许的最大长度仅为65534,超过就编译错误。

既然调用合约是通过java sdk调用 所以字符串最大不能超过java所支持的范围

测试环境

2个出块节点 1个同步节点

分别命名为 节点1 节点2 节点3

创建一个合约账户并转账 看在其他的节点是否有同步过去

  • 在节点2创建一个合约账户

使用节点1账户地址访问节点2

百度区块链所遇到的问题及处理汇总

 

通过java sdk 连接节点1 创建合约账户 XC1111111111116666@xuper

create account de1dc9e04a2d8b9bbf734f60431ab7eac5843f8711c3fe430c5df345dac272b8

  • 给该合约账户转点钱

使用节点1的账户访问节点2

百度区块链所遇到的问题及处理汇总

 

transfer 3d6023d4a1ba08506fdd1e0ee0cc234f6d93f639a708e32ebe8d1d51d8272349

  • 分别查看节点1、节点2、节点3的该合约账户的余额

节点1余额查询 1000000000

节点2余额查询 1000000000

节点3余额查询 1000000000

小结:在一个节点创建合约账户并发起转账交易 会同步给其他的节点

部署合约看是否同步

  • 在一个节点部署一个合约

使用节点1的账户访问节点3

./xchain-cli wasm deploy --account XC1111111111116666@xuper --cname hello_last_1  --fee 5574291 --runtime go /Users/mengfanxiao/Documents/project/company/XinPools_INFO/document/business/baidu/20200714-最新版本/xuperchain/core/contractsdk/go/example/eleccert_final/eleccert_final.wasm -a '{"creator":"mengfanxiao"}'
百度区块链所遇到的问题及处理汇总

 

  • 在不同的节点分别调用该合约做交易

在节点1调用合约

百度区块链所遇到的问题及处理汇总

 

invoke txid: 60b4ee039415ed2e8880212cf182361143f314f988034a669aee5be2a9c6b02a
response: 
gas: 100608

在节点2调用合约

和节点1区别在于 key为 mac1(这个合约的key是唯一的)

invoke txid: 127ad9ea3c0071dad560fb189b6be054e9fde06dc07d2202171aed5a32f49d3b
response: 
gas: 100609

在节点3调用合约

和节点1区别在于 key为 mac2

invoke txid: 56cd4547e266423630b6db038692bb04f0730ea207b776f55654d7d0db705717
response: 
gas: 100609

小结:在一个节点部署合约 会同步给其他的所有节点

  • 到不同的节点查看一个hash值 看是否都一致

比如查询 60b4ee039415ed2e8880212cf182361143f314f988034a669aee5be2a9c6b02a

./xchain-cli tx query 60b4ee039415ed2e8880212cf182361143f314f988034a669aee5be2a9c6b02a

在节点1、节点2、节点3查询的交易详情内容一致

小结:在一个节点做的交易会同步给所有的节点

升级版本是否会影响到历史数据

  • 方式一(不推荐 也不对)

目前我是用的master分支 但不是最新的

当前的区块高度是605

那我想要升级到最新的master代码

1、现将所有节点停掉

2、创建新的文件夹用来存放最新的版本

百度区块链所遇到的问题及处理汇总

 

3、下拉最新的代码并进行编译

4、替换可执行文件

cp -r output/* lastv-20200729/pn1
cp -r output/* lastv-20200729/pn2
cp -r output/* lastv-20200729/pn3

5、将上一版本下的data和conf目录替换到最新的

cp -R pn1/data/ lastv-20200729/pn1/data
cp -R pn1/conf/ lastv-20200729/pn1/conf
cp -R pn2/data lastv-20200729/pn2/data
cp -R pn2/conf lastv-20200729/pn2/conf
cp -R pn3/data/ lastv-20200729/pn3/data
cp -R pn3/conf/ lastv-20200729/pn3/conf

6、重启

nohup ./xchain --vm ixvm &

节点1可以启动,但节点2启动失败 说明这种升级的方式不对

  • 方式二(推荐)

查看升级文档 https://xuperchain.readthedocs.io/zh/latest/operations_guides.html#id2

我上面的思路是创建新的文件夹 将老版本数据复制到新文件夹中

官方文档的思路是 将新的“plugins文件夹, 二进制文件xchain,xchain-cli”这些文件将老版本的替换掉 然后重启即可

cp -R output/plugins/ pn1/plugins/
cp -R output/xchain pn1/xchain
cp -R output/xchain-cli pn1/xchain-cli
cp -R output/plugins/ pn2/plugins/
cp -R output/xchain pn2/xchain
cp -R output/xchain-cli pn2/xchain-cli
cp -R output/plugins/ pn3/plugins/
cp -R output/xchain pn3/xchain
cp -R output/xchain-cli pn3/xchain-cli
百度区块链所遇到的问题及处理汇总

 

升级完成 保留了老数据

新增出块节点 节点数据同步中

  • 如何新增节点

a、若是新增一个同步节点 不需要修改 创世块配置 不需要删除老数据 只需要修改 yaml文件即可 然后启动即可

https://xuperchain.readthedocs.io/zh/latest/advanced_usage/multi-nodes.html?highlight=%E5%A2%9E%E5%8A%A0%E8%8A%82%E7%82%B9#id1

b、若是新增一个出块节点 这个不仅仅需要修改yaml文件还需要修改创世块配置 所以需要删除老数据

  • 系统如何选择出块节点

此时系统在选择出块节点的算法中会判断该节点是否已同步完成 若已同步完成才会选择该节点作为当前节点

  • 查询请求过来如何处理

查询的是当前同步到的状态

  • 新搭的场景 出块节点需要再创世快配置中配置 ;非新搭场景 添加一个出块节点 先修改yaml文件 跑起来 然后进行token抵押 才能出块

若一笔上链交易 在系统确认好一个出块节点之后 若突然这个节点挂掉了 此时系统是如何处理的这笔交易呢

如果发起一笔上链交易 交易在出块前会在各个节点间转发,该节点挂掉其它节点可以继续打包

如何使用xpos共识

百度区块链所遇到的问题及处理汇总

 

加上这个配置就是使用xpos,也就是(tdpos+chainedBFT)

不加就是tdpos,不能保证安全性

如果通过sdk调用合约上链的时候 节点若是响应超时的话或因为网络问题没有收到响应 此时并没有收到hash值

  • 交易hash没有返回一定没有上链,说明预执行失败
  • 首先客户端向节点发起交易预执行请求,预执行结束后会返回客户端读写集,这时客户端会在本地计算txhash,如果没有得到txhash说明交易根本不可能上链 计算txhash成功后,才会将完整的tx发送至网络

感谢

非常感谢百度链的技术大牛的支持 超哥



Tags:百度区块链   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言这篇文章说下使用百度链可能遇到的问题及解决办法创世节点账户余额最大值cat data/config/xuper.json 我随便写了一个值 239位然后查询下余额可以查到 所以就认为没有...【详细内容】
2020-07-31  Tags: 百度区块链  点击:(84)  评论:(0)  加入收藏
▌简易百科推荐
作为一个不断增长的行业,区块链对其专业人员有着巨大的需求。Upwork的报告显示,仅在过去连续三个季度,与区块链技术相关的工作岗位就增加了2000%。大公司和初创企业都希望雇佣...【详细内容】
2021-10-20  知识小纸条  搜狐号  Tags:区块链   点击:(33)  评论:(0)  加入收藏
以太坊是目前第二大公链,它和比特币不一样,以太坊上的可以实现的功能更多,如果比特币是一个可以进行加减乘除的计算器,那么以太坊就是一台功能完备的计算机。以太坊系统的复杂度...【详细内容】
2021-10-18  Rayjun的区块链笔记    Tags:Gas 机制   点击:(22)  评论:(0)  加入收藏
区块链经济是基于区块链技术而产生的一种新经济现象。区块链是一个去中心化的分布式数据库,该数据库由一串使用密码学方法产生的数据区块有序连接而成,区块中包含有一定时间内...【详细内容】
2021-09-18  UTON在线    Tags:区块链经济   点击:(28)  评论:(0)  加入收藏
我们来回顾一下,传统的合同签约步骤是这样的:执行传统合同需要人工验证,以检查条款和条件,并根据书面协议决定下一步。1、费时 - 检查合同条款,审核批准,再进行后续等步骤2、资源...【详细内容】
2021-07-14  深圳都市微生活   企鹅号  Tags:智能合约   点击:(60)  评论:(0)  加入收藏
众所周知区块链是一个分布式账本,每条公链都是一个独立的账本,不同链之间是没有直接关系的,尤其是现在各个国家和地方,都在大力发展区块链技术,未来势必会是个区块链技术百花齐放...【详细内容】
2021-07-14  Life去中心化预言机协议    Tags:跨链   点击:(76)  评论:(0)  加入收藏
区块链技术带来了互联网的变革,将互联网从“信息互联网”带向“价值互联网”,我们也渐渐发现,最初被形象地称为“信息高速公路”的互联网处理的是“信息”,而区块链处理的是“价...【详细内容】
2021-07-13  MICA链盟    Tags:智能合约   点击:(61)  评论:(0)  加入收藏
图片来源@视觉中国文丨夏玩醇社交平台和资讯网站上,众多未知来源的图片引来人们的猜测,好奇者会花费大量时间在评论区争吵。这也许是平台和内容创作者乐于看到的情况。更多的...【详细内容】
2021-06-04  钛媒体APP  今日头条  Tags:区块链   点击:(61)  评论:(0)  加入收藏
我们日常通用货币是人民币 (CNY),美国通用货币是美元 (USD),俄罗斯通用货币是卢布 (RUB)。那么,区块链中的通用货币是什么呢? 是泰达币 (USDT)。乍一看,USDT 与 USD 很像,那它们...【详细内容】
2021-06-04  wei1guang  今日头条  Tags:USDT   点击:(131)  评论:(0)  加入收藏
欧科链讯:本文为读者了解区块链这项前沿技术提供基础支持。作者对区块链特征、优势、应用等层面进行讲解,言简意赅,通俗易懂。我相信你们最近应该听到过“区块链”一词,也许是在...【详细内容】
2021-05-18  欧科链讯    Tags:区块链   点击:(102)  评论:(0)  加入收藏
前几期我们提到了,关于区块链的基本概念、安全性等。本期从八个点为大家解读区块链的优势。 一、链条的准确性区块链网络上的交易由数以千计的计算机网络批准。这消除了几乎...【详细内容】
2021-05-14  无限之声    Tags:区块链   点击:(87)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条