我们都知道EOS主链好是好,就是什么都太贵,RAM贵,CPU也贵,玩个区块链游戏就要抵押好多EOS。
最近,EOSVR团队发布了 EOS 侧链的搭建方式,自己搭一个侧链已经变成很容易的事情了。而且,这个侧链可以与主链相互交易,一笔跨链交易快的话1分钟就好,选择安全的交易会慢一点,因为要确认两次,看着点确认2-3分钟也就好了。
下面就介绍一下搭建的方法。先放个Github链接,再放个EOS全网帐号查询演示。
前置步骤和搭建EOS链差不多,都是先下载EOS代码(https://github.com/eosio/eos)编译,记得用: ./eosio_build.sh -s EOS ,不然会用默认的SYS代币。具体还有一些配置,在网上找找基本能找得到。总之,有一个能不停出块的服务器,就算前置完成了。
然后需要把 https://github.com/EOSVR/sidechain.git 在你的电脑上下载下来,运行 "npm i" 安装。
把 init.sh 的下面这四句改了:
cu1="cleos -u http://s1.eosvr.io:8888" # 改成你自己刚才搭的EOS服务器
pubkey=EOS7xjXnjGoFv9dFPZirn6vziaKEmZhHjEcnsPJdFqZqXoEBaf1Ej # 改成你钱包中自己的一个公钥
linker=eoslinker111 # 改成你在EOS主网上的一个帐号名就行。不过最好在主网上新建一个帐号,用你新建的那个公钥来作为它的公钥。
cd ~/git/eos/build/contracts # 改成你下载的 EOS 中build 好的合约目录
再建一个 config.js 文件,内容按照 config_example.js 的第一部分,类似下面:
exports.contracts = { creator: 'eosio',
httpEndpoint: 'http://localhost:8888', // 这里是你自己刚才搭的EOS服务器
keyProvider: ['XXX'], // 这里填你eosio公钥的对应私钥
pubkey: 'EOS7xjXnjGoFv9dFPZirn6vziaKEmZhHjEcnsPJdFqZqXoEBaf1Ej' // 这里填你自己建的eosio公钥就行
};
然后运行init.sh这个脚本 "sh init.sh" ,它会帮你把你自己链上需要的帐号和合约都安装上。
再找一台服务器,再下一次 https://github.com/EOSVR/sidechain.git ,运行 "npm i"。
这回把 config.js 按照 config_example.js 的第二部分,就是 "Used by linker.js" 那行下面那些设置。
这里要填你的连接帐号的私钥,所以,这台服务器你要保证安全才行,不然你连接帐号就可能被盗了。你连接帐号的 active 公钥可以设成和你搭建服务器上的那个公钥一致,但owner公钥不暴露。比如下面这个命令就可以改active公钥:
cleos set account permission myaccount111 active '{"threshold": 1,"keys": [{"key": "我的公钥...","weight": 1}],"accounts": []}' owner -p myaccount111
填好了config.js ,注意看两边的服务器地址都配对了,就可以运行 "node linker.js" 了,这个脚本会不停检查两个链是否有交易,并配对生成,配对确认。
然后你就可以实验跨链交易了,这里只说主链往侧链传,侧链往主链传是类似的。所以下面的操作都在EOS主链上进行。
目前主链和侧链的交易目前只能交易EVD。所以你在主链的连接帐号上必须有 EVD(侧链上的EVD是 init.sh 脚本生成的),不然没法传。如果你还没有EVD的话,往 eosvrmarkets 传1个EOS就行。
cleos transfer mylinker1111 eosvrmarkets "1.0000 EOS"
因为你要测试传输EVD,所以你的另一个帐号也要有EVD。EVD的合约名是 eoslocktoken,所以传输命令类似:(假设我的帐号是myaccount111,连接帐号是mylinker1111)
cleos push action eoslocktoken transfer '{"from":"mylinker1111", "to":"myaccount111","quantity":"1.0000 EVD","memo":""}' -p mylinker1111
然后用下面这个命令就可以做一次跨链传输了:
cleos push action eoslocktoken transfer '{"from":"myaccount111", "to":"mylinker1111","quantity":"0.1000 EVD","memo":"#HASH#2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824,86400,myaccount222"}' -p myaccount111
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 是 "hello" 的hash值,等于是一个公开的密码。所以不需要确认,实际的操作为了安全起见是需要确认的。这里就不多说了,大家去github上面去看吧。
如果成功的话,你的 "node linker.js" 运行应该能检查到这次转账操作并且在你的侧链上建立一个对应操作。如果你要转到的帐号 myaccount222 不存在,会帮你建一个,不过要扣手续费。脚本默认的转账和建立帐号的手续费都是 0.01 EVD ,就是transfer_create_account_cost: 100 那些。大家自己调吧。默认的有一个 transfer_create_account_cost: 10000000 ,这个是说如果侧链用户想在主链上建帐号需要多少 费用,现在是1000EVD。基本上就是不让反向建立帐号了。如果有人需要开放这个功能的话,也要谨慎。因为这个转账是可以取消的,不输入哈希锁的密码就可以了,但是建帐号是没法取消的。主网的帐号又贵。。。
如果等了超过30秒都没反应的话,应该是什么地方配置错误。可以试着检查下面的表:
"cleos get table eoslocktoken eoslocktoken hashlockss" , 这个表是当前正在进行的哈希时间锁。
"cleos get table eoslocktoken eoslocktoken hashss",这个表是刚刚结束的哈希时间锁,不过,如果用上面的命令,那个hello 是不会进这个表的,重复的hash密码也不会进这个表。
转过来的 EVD 也是可以和侧链中的 EOS交易的,在侧链中同样往 eosvrmarkets 里面传就行了,侧链的初始化脚本init.sh 会自动搭建这个交易合约。不过交换的比例肯定和主网不一样。想看看这个交易合约的点这里。其实在下下来的那个sidechain 里面,所有合约的源码都有。
如果一切正常的话,现在一个可以与主网相互转账的侧链就搭好了。
如果是准备发布的话,为了取信大家,官方文档中要求在主网中连接帐号要将侧链上发布的那一部分 EVD发送到 eoslocktoken 中焚毁掉,并带上侧链ID,表示是为了这个侧链焚毁的。
运行 "cleos get info" , 第三行就是 chain_id 了。

然后运行:
cleos push action eoslocktoken transfer '{"from":"mylinker1111", "to":"eoslocktoken","quantity":"1000.0000 EVD","memo":"cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f"}' -p mylinker1111
可以检查当前的焚毁情况:
cleos get table eoslocktoken eoslocktoken depositss
最后,还需要说明一下自己的侧链,比如地址、交易费用什么的:
cleos push action eosvrcomment comment '{"from":"mylinker1111", "to":"mylinker1111", "memo":"chain:http://my.sidechain.io:8888/\\nname:Test1\ntransfer cost:0.01 EVD\\naccount cost:0.01 EVD\\n我是一条好EOS侧链。"}' -p mylinker1111
如果还想配头像的话,在 evrportraits 下评价自己,memo放 base64 的jpg或者png即可。
好了,你的侧链就此配置完毕,可以在上面开发不卡的应用了。
网友评论