您的位置:首頁 > 區塊鏈 >

        Solidity簡化智能合約 多數邏輯都寫在在DAPP或服務器中

        2019-07-01 15:42:06 來源: 區塊鏈研究實驗室

        目前以太坊的編程語言Solidity還是非常基礎。Tron也使用Solidity,因此具有相同的限制。目前,Solidity將智能合約簡化為僅存儲數值并進行一

        目前以太坊的編程語言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 = "";

        ...

        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還是值得我們去關注的。(鏈三豐)

        關鍵詞: Solidity 智能合約 DAPP

        精選 導讀

        募資55億港元萬物云啟動招股 預計9月29日登陸港交所主板

        萬科9月19日早間公告,萬物云當日啟動招股,預計發行價介乎每股47 1港元至52 7港元,預計9月29日登陸港交所主板。按發行1 167億股計算,萬

        發布時間: 2022-09-20 10:39
        管理   2022-09-20

        公募基金二季度持股情況曝光 隱形重倉股多為高端制造業

        隨著半年報披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數為9794只,資產凈值為269454 75億元,同比上

        發布時間: 2022-09-02 10:45
        資訊   2022-09-02

        又有上市公司宣布變賣房產 上市公司粉飾財報動作不斷

        再有上市公司宣布變賣房產。四川長虹25日稱,擬以1 66億元的轉讓底價掛牌出售31套房產。今年以來,A股公司出售房產不斷。根據記者不完全統

        發布時間: 2022-08-26 09:44
        資訊   2022-08-26

        16天12連板大港股份回復深交所關注函 股份繼續沖高

        回復交易所關注函后,大港股份繼續沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時觸及漲停,報20 2元 股。值得一提的是,在7月21日

        發布時間: 2022-08-12 09:56
        資訊   2022-08-12

        萬家基金再添第二大股東 中泰證券擬受讓11%基金股權

        7月13日,中泰證券發布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權,交易雙方共同確定本次交易的標的資

        發布時間: 2022-07-14 09:39
        管理   2022-07-14

        央行連續7日每天30億元逆回購 對債市影響如何?

        央行12日再次開展了30億元逆回購操作,中標利率2 10%。這已是央行連續7日每天僅進行30億元的逆回購縮量投放,創下去年1月以來的最低操作規

        發布時間: 2022-07-13 09:38
        資訊   2022-07-13

        美元指數創近20年新高 黃金期貨創出逾9個月新低

        由于對美聯儲激進加息的擔憂,美元指數11日大漲近1%創出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創出逾9個月新低。美

        發布時間: 2022-07-13 09:36
        資訊   2022-07-13

        美股三大股指全線下跌 納斯達克跌幅創下記錄以來最大跌幅

        今年上半年,美股持續回落。數據顯示,道瓊斯指數上半年下跌15 3%,納斯達克綜合指數下跌29 5%,標普500指數下跌20 6%。其中,納斯達克連續

        發布時間: 2022-07-04 09:51
        推薦   2022-07-04

        融資客熱情回升 兩市融資余額月內增加超344億元

        近期A股走強,滬指6月以來上漲4%,融資客熱情明顯回升。數據顯示,截至6月16日,兩市融資余額1 479萬億元,月內增加344 67億元,最近一個半

        發布時間: 2022-06-20 09:41
        資訊   2022-06-20

        4個交易日凈買入超百億元 北向資金持續流入A股市場

        北向資金凈流入態勢延續。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計凈

        發布時間: 2022-06-17 09:37
        推薦   2022-06-17