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

目前以太坊的编程语言Solidity还是非常基础。Tron也使用Solidity,因此具有相同的限制。

目前,Solidity将智能合约简化为仅     存储   数值并进行一些基本的数学运算。 并且大多数智能逻辑都写在智能合约之外:在DAPP或服务器中。

#TRON中异步调用的两种情况是什么?

 基于solidity的智能合约在tron网络异步调用怎样来实现_设计制作_RF/无线

· 外部调用。..到     数据库   ,Web服务,(分布式)文件系统,邮件服务,到NodeJS oracle以克服Solidity的限制等。

· 自动回调。..到合约本身调用代码(例如股息支付)。

为了实现这两个场景,我们需要进行TRON扩展。这是如何做到的:

步骤1:下载客户端库

输入下面链接,进行客户端库下载,

https://github.com/Capt     ai   n     Java   Script/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;

func     ti   on Demo() public payable

{

Run(EXAMPLE1, “json:https://a     pi   .kraken.com/0/public/  TI cker?

pair=ETHUSD”,

“result.XETHZUSD.a[0]”, “-”, 2, 5000);

Callback(EXAMPLE2, 20, 100000);

}

func  TI on CaptainsResult(uint UniqueIdent     if   ier,

string Result, bool IsError) ex     te   rnal onlyCaptainsOrde     rs   Allowed {

e     mi   t LogEvent(

concat(“CaptainsResult received with UID = ”,

uintToString(UniqueIden  TI fier), “ and a result of ”, Result)

);

}

func  TI on 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还是值得我们去关注的。

来源: 区块链研究实验室

20
144
0
49

相关资讯

  1. 1、《创业时代》一个被忽视的女主,“旗袍女神”宋轶如何掀起翻身仗1135
  2. 2、《大闹天宫》7天收6亿票房大战特辑曝光4492
  3. 3、港媒曝张柏芝生三胎,经纪人不回应,谢霆锋却回应了4866
  4. 4、《上流战争3》定档时间出炉,网友抱怨:一周一集实在太少!3298
  5. 5、《晴雅集》遭下映背后:投资3亿难回本,郭敬明为抄袭买单3256
  6. 6、谢霆锋罕见晒谢贤照片,不耍酷不戴墨镜的样子,原来这么慈祥可爱2558
  7. 7、50部电视剧改名背后的“求生欲”843
  8. 8、网友偶遇郑爽拍摄《青春斗》,路人镜头下女神身材修长颜值依旧1362
  9. 9、性丑闻大亨韦恩斯坦刚自首迪士尼就要给施暴者打开回归大门?310
  10. 10、[午夜放映]《彩虹女神》:一枚纸戒记你一生464
全部评论(0)
我也有话说
0
收藏
点赞
顶部