基于solidity的智能合约在tron网络异步调用怎样来实现

目前以太坊的编程语言solidity还是非常基础。tron也使用solidity,因此具有相同的限制。
目前,solidity将智能合约简化为仅存储数值并进行一些基本的数学运算。 并且大多数智能逻辑都写在智能合约之外:在dapp或服务器中。
#tron中异步调用的两种情况是什么?
· 外部调用。..到数据库,web服务,(分布式)文件系统,邮件服务,到nodejs oracle以克服solidity的限制等。
· 自动回调。..到合约本身调用代码(例如股息支付)。
为了实现这两个场景,我们需要进行tron扩展。这是如何做到的:
步骤1:下载客户端库
输入下面链接,进行客户端库下载,
https://github.com/captainjavascript/tron
步骤2:创建智能合约
您可以复用位于客户端库中的helloseaman_v1.sol示例。只需从usingcaptainjsattron_v2扩展你的合同,整个魔法就会开始发生:
pragma solidity ^0.4.25;
import “。/usingcaptainjsattron_v2.sol”;
contract helloseaman_v1 is usingcaptainjsattron_v2 {
constructor () public { }
。..
}
要在tron中实现异步调用,只需使用run-method执行nodejs代码,或调用callback方法进行简单回调。
。..
uint constant example1 = 1;
uint constant example2 = 2;
function demo() public payable
{
run(example1, “json:https://api.kraken.com/0/public/ticker?
pair=ethusd”,
“result.xethzusd.a[0]”, “-”, 2, 5000);
callback(example2, 20, 100000);
}
function captainsresult(uint uniqueidentifier,
string result, bool iserror) external onlycaptainsordersallowed {
emit logevent(
concat(“captainsresult received with uid = ”,
uinttostring(uniqueidentifier), “ and a result of ”, result)
);
}
function captainscallback(uint uniqueidentifier) external
onlycaptainsordersallowed {
emit logevent(
concat(“callback received with uid = ”, uinttostring(
uniqueidentifier))
);
}
步骤3:调用tronweb的智能合约
将合同部署到shasta后,从github存储库编辑test-shasta-public.js文件,
1. 添加您的私钥(第6行)
2. 更改合同的地址(第11行) - 否则你将调用我的演示合同地址
3. 在第一次运行中调用setcaptainsaddress()
const tronweb = require(‘tronweb’);
const shasta = ‘https://api.shasta.trongrid.io’;
const tronweb = new tronweb(
shasta, shasta, shasta,
‘《your private key goes here’
);
const ownerswalletatshasta = “《your shasta wallet address》”;
。..
const helloseaman_v1atshasta = “tb4tevenbjm66ici2qjp92rpykjwjpjajs”;
。..
function runtest() {
var budget = totrx(0.01);
var transfer = totrx(0.5);
console.log(“runtest / budget = ” + budget + “, transfer value =
” + transfer);
seamanscontract.run(1, “math:log2(16)”, “”, “mathjs”, 1, budget)。
send({shouldpollresponse: true, callvalue: transfer}).catch(function(
err) { console.log(err); }).then( console.log(“run executed”) );
}
function setcaptainsaddress() {
console.log(“setcaptainsaddress to ” + captainsaddressatshastahex
);
seamanscontract.setcaptainsaddress(captainsaddressatshastahex)。
send({shouldpollresponse: true, callvalue: 0}).catch(function(err)
{ console.log(err); }).then( console.log(“setcaptainsaddress executed”
) );
}
function demo() {
console.log(“demo run.。.”);
seamanscontract.demo().send({shouldpollresponse: true, callvalue:
totrx(1)}).catch(function(err) { console.log(err); }).then
( console.log(“demo executed”) );
}
async function go() {
。..
seamanscontract = await tronweb.contract().at(helloseaman_v1atshasta
);
setcaptainsaddress();
// runtest();
// demo();
}
go();
调用完成。shasta还是值得我们去关注的。
来源: 区块链研究实验室

咸鱼理财与易保全联手,让数据安全全面升级
华为畅享系列新品蓄势待发 新全面屏形态+旗舰配色海报吸睛
定制锂电池组的好处?18650锂电池组和21700锂电池组有什么不一样?
工业智能网关数据采集有什么需要注意的
商用笔记本Air Book, 职场必备
基于solidity的智能合约在tron网络异步调用怎样来实现
稳定币市场将是一个价值千亿美金的市场
区块链游戏“DreamGame”到底是凭借什么如此火爆的呢?
3C锂电池pack的测试中大电流弹片微针模组的应用
半导体测试愈发重要,如何进行半导体测试?
Xbox Series预热海报疑似曝光 显示将于4月6日举办媒体活动
工业的三个工业特征决定了工业互联网的特殊性
首部现代个人电脑的创造者荣获美国计算机协会图灵奖
简易可调式整流电源的改进
专利授权与诉讼 华为正下一盘大棋
功率电子技术的最新发展状况和发展趋势
加强校园安防建设与发展 学校才能拥有和谐稳定的教育环境
苹果Q3营收532.7亿美元 净利115.2亿同比增32%
分布式会议室互联互通解决方案
餐饮油烟在线监测设备的功能特点是什么