YOUChain在12月16日上线了名为MarcoPolo的公测网。
总说收费低收费低,今天就测一下。
公测网发布了,意味着已经具备主网上线的条件,所以我们以公测网与以太坊智能合约进行实测对比。
我们用以太坊的测试网Rinkeby 实时的做一次测试,就执行一句简单的程序。如下图编译成功后开始部署。
可以在钱包中看到部署的扣费请求(下图),一共需要0.000168ETH(约0.14人民币)。也就是说用以太坊网络仅仅执行一条简单的语句就需要0.14人民币/次。
从钱包中查看本次智能合约,如下图,花费了168324*1=168324Gwei,得出了上文的0.000168ETH的GAS费.
目前的wei建议价格如下:
(数据来自https://ethgasstation.info/index.php)
(顺便手把手教你部署一次合约)
注:以下操作一定要用谷歌浏览器
01https://dev.iyouchain.com/zh/youwallet/browser-extension.html 安装钱包。
02
有了钱包账户就在钱包点击“存入”,可以领取测试网络的100YOU用于接下来的智能合约的部署。
03 打开YOUChain的IDE编译器 https://ide.iyouchain.com/
点击左上角“+”号新建一个 .sol文件,命名随意。
04 把这几行代码(够短吧)粘贴到如图的框里,然后点击右边的“开始编译”
pragma solidity ^0.4.25;
contract YOUFen{
string Myname = “easy”;
function getName() public view returns(string)
{
return Myname;
}
}
05 如图选择部署环境“Injected YOUChain”,如果你前面钱包安装没有问题的话,“环境”下面的“账号”浏览器会自动帮你填写的。
直接点击“确认部署”。
06 弹出钱包,点击“确认”
07 下方出现如下图{“blockHash”:" 就是成功了 你可以将该hash值复制到区块链浏览器中搜索查看你的智能合约。
恭喜你成功部署智能合约!
该代码与刚刚部署在以太坊公测网络的代码完全相同,来看看该合约部署在YOUChain公测网络花费了多少gas费。
在钱包中点击刚刚部署的合约,发现一共消耗了192736Glu,lu是YOU最小的单位,1YOU=1018lu,1Glu=109lu。所以刚刚一共消耗了0.000192736YOU(约0.00006元)相比以太坊的0.14元简直是白菜价。我使用的环境,YOUChain ide 和 remix 虚拟机版本不一样,所以数量上稍微有差距,但不会是数量级的差异。
也就是说以该程序为例的话,在以太坊上部署合约的成本是在YOUChain上部署合约成本的2000多倍。(实际可能因各种因素有些许差异。)
01 通过 rpc
curl -X POST \
http://test-node.iyouchain.com \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "you_estimateGas",
"params": [
{
"data": "0x智能合约数据"
}
]
}
02 通过youchain.js
const YOUChain = require('youchain');
const solc = require('solc');
const fs = require('fs');
const youchain = new YOUChain('http://test-node.iyouchain.com');
const address = '0x59677fd68ec54e43ad4319d915f81748b5a6ff8b';
const contractWrap = (content) => {
return {
language: 'Solidity',
sources: {
'Adoption.sol': {
content
}
},
settings: {
outputSelection: {
'*': {
'*': ['*']
}
}
}
};
};
fs.readFile('Adoption.sol', 'utf8', async (error, data) => {
let output = JSON.parse(solc.compile(JSON.stringify(contractWrap(data))));
output = output.contracts['Adoption.sol']['Adoption'];
const contract = new youchain.you.Contract(output.abi);
console.log('object: ', output.evm.bytecode.object);
const encodeABI = contract
.deploy({
data: output.evm.bytecode.object,
arguments: []
})
.encodeABI();
youchain.you.estimateGas({
from: address,
data: '0x' + encodeABI
}).then(data =>{
console.log("estimateGas",data);
});
});