成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

星云計劃——智能合約NVM內(nèi)置功能模塊

李增田 / 3144人閱讀

摘要:星云計劃智能合約代碼入門卡酷少星云團隊已經(jīng)發(fā)布了數(shù)個庫來幫助大家更容易編寫智能合約。參數(shù)級別參數(shù)級別參數(shù)級別參數(shù)級別參數(shù)別名如何調(diào)用合約以上就是與智能合約相關(guān)的內(nèi)置功能模塊介紹。

星云計劃——智能合約代碼入門
卡酷少

Wechat:13260325501


星云團隊已經(jīng)發(fā)布了數(shù)個庫來幫助大家更容易編寫智能合約。這意味著我們不需要從頭開始來創(chuàng)建任何一個智能合約,節(jié)省了很多精力。但這些庫里面的內(nèi)容我們需要逐個了解。

BigNumber

BigNumber 模塊構(gòu)建于 bignumber.js之上,用來處理任意精度的十進制和非十進制運算。合約可以直接使用BigNumber 來處理交易和其他轉(zhuǎn)賬操作中涉及到的數(shù)值計算。

var value = new BigNumber(0);//創(chuàng)建bigNumber對象
value.plus(1);//調(diào)用方法
…
Storage

storage 模塊用來支持 Nebulas 上的數(shù)據(jù)持久化存儲。功能上類似于傳統(tǒng)的鍵值存儲系統(tǒng)。存儲不是免費的,需要消耗一定的 GAS。LocalContractStorage 是可以直接在合約中使用的內(nèi)置storage對象,可存儲的數(shù)據(jù)類型包括數(shù)字、字符串和 JavaScript 對象(需要序列化為字符串,JSON轉(zhuǎn)譯)。鏈上數(shù)據(jù)只能被存儲它們的合約訪問和修改,也就是自己的合約地址只能調(diào)用和修改自己合約里的內(nèi)容。

基礎(chǔ)

LocalContractStorage 支持三個操作:

set,實現(xiàn)存儲功能,類似于put

get,實現(xiàn)讀取功能

del,實現(xiàn)刪除數(shù)據(jù)功能

“use strict”;
var BankVaultContract = function () {
  // 無內(nèi)容
};
BankVaultContract.prototype = {//prototype里有三個方法:get,set,delete
  init: function() {
      // 無內(nèi)容
  },
  set: function(name, value) { //set,存儲數(shù)據(jù)
  // 以下“增查刪”操作都以name=”robin”, value=10000為例
  //LocalContractStorage一個封裝包,“.set”是帶哦用set方法
      LocalContractStorage.set(“name”, name);
      // put 操作相當于 set
      LocalContractStorage.put(“value”, value);
  },
  get: function() {//get,獲取數(shù)據(jù)
      var name = LocalContractStorage.get(“name”);
      console.log(name);  // 打印 ‘robin’
      var value = LocalContractStorage.get(“value”);
     console.log(value); // 打印 ‘10000’
  },
  del: function() {//del,刪除
      var result = LocalContractStorage.del(“name”);
      console.log(result); // 打印 ‘robin’
      // delete 操作相當于 del
      result = LocalContractStorage.delete(“value”);
      console.log(result); // 打印 ‘10000’
      // 刪除操作之后數(shù)據(jù)就不能被讀取
  }
};
module.exports = BankVaultContract;
Blockchain

Blockchain模塊用來獲取當前正在執(zhí)行的合約內(nèi)的交易和區(qū)塊信息。另外,還提供了幾個有用的方法,例如從合約賬戶中轉(zhuǎn)出 NAS,進行地址格式驗證等。

Blockchain 有兩個屬性:

block 執(zhí)行合約的當前區(qū)塊

它具有下列屬性:

— timestamp 區(qū)塊時間戳

— height 區(qū)塊高度

2.transaction 執(zhí)行合約的當前交易

它具有下列屬性:

— hash 交易哈希值

— from 交易源地址

— to 交易目的地址,對于合約調(diào)用就是合約地址

— value 交易數(shù)值,字符串, 合約內(nèi)用BigNumber存儲計算

— nonce 交易的 nonce 值

— timestamp 交易時間戳

— gasPrice 交易的 gasPrice,字符串,合約內(nèi)用 BigNumber 存儲計算

— gasLimit 交易的 gasLimit,字符串,合約內(nèi)用 BigNumber 存儲計算

Blockchain 還提供了兩個方法:

transfer(address, value) 將 NAS 從合約轉(zhuǎn)出到address對應(yīng)的賬戶。

參數(shù) address:接收 NAS 的 Nebulas 賬戶地址

參數(shù) value:轉(zhuǎn)移數(shù)值,一個 BigNumber 對象

返回:0 – 轉(zhuǎn)移成功,1 – 轉(zhuǎn)移失敗

verifyAddress(address) 驗證參數(shù) address 是否為一個有效的 Nebulas 地址。

返回:1 – 地址有效,0 – 地址無效

‘use strict’;
var BankVaultContract = function () {};//聲明類
BankVaultContract.prototype = {//類的方法
   init: function () {
       console.log(‘init: Blockchain.block.height = ‘ + Blockchain.block.height);
       console.log(‘init: Blockchain.transaction.from = ‘ + Blockchain.transaction.from);
   },
   //這里給出兩個方法:transfer和 verifyaddress
   transfer: function (address, value) {
       var result = Blockchain.transfer(address, value);
       console.log(“transfer result:”, result);
   },
   verifyAddress: function (address) {
    var result = Blockchain.verifyAddress(address);
       console.log(“verifyAddress result:”, result);
   }
};
module.exports = BankVaultContract;
事件(Event)

Event 模塊用來記錄在合約執(zhí)行過程中產(chǎn)生的事件。被記錄的事件存儲在鏈上的事件Trie結(jié)構(gòu)中,可以通過事件查詢方法 rpc.getEventsByHash 獲取所有事件。通過Event模塊輸出的事件其最終Topic由用戶自定義topic加固定前綴 chain.contract. 兩部分構(gòu)成 。

使用方法如下:

//Event.Trigger(topic, obj);
//topic:用戶定義的topic
//obj:JSON 對象

‘use strict’;
var BankVaultContract = function () {};//聲明類
BankVaultContract.prototype = {

   init: function () {},
//這里只有一個testevent方法
//testevent里又一個event.Trigger()
//event.Trigger里有("topic",{ data{} })
testEvent: function() {
       // 實際被存儲的topic是“chain.contract.topic”
       Event.Trigger(“topic“, {
   Data: {
value: “Event test.”
   }
       });
   }
};
module.exports = BankVaultContract;
控制臺(Console)

console 模塊提供了一個簡單的調(diào)試控制臺,類似于網(wǎng)頁瀏覽器提供的 JavaScript 控制臺。console 將把所有接收到的 args 以指定級別打印到 Nebulas Logger 上。

console.log([參數(shù))?—?— info 級別

console.debug([參數(shù))?—?— debug 級別

console.warn([參數(shù))?—?— warn 級別

console.error(參數(shù))?—?— error 級別

console.info(參數(shù))?—?— console.log() 別名

如何調(diào)用合約

以上就是與智能合約相關(guān)的內(nèi)置功能模塊介紹。接下來,我們將簡單說明下如何調(diào)用合約。

首先通過啟動本地節(jié)點加入 Nebulas 的主網(wǎng)或測試網(wǎng),啟動本地節(jié)點。

節(jié)點啟動后,調(diào)用任何合約函數(shù)前首先使用 [unlockAccount()]

(https://github.com/nebulasio/...` 方法解鎖賬戶。

然后你就可以使用 sendTransaction() 函數(shù)來執(zhí)行智能合約調(diào)用了。

// Request
//終端命令行
curl -i -H ‘Accept: application/json’ -X POST http://localhost:8685/v1/admin/transaction -H ‘Content-Type: application/json’ -d ‘{“from”:”n1NZttPdrJCwHgFN3V6YnSDaD5g8UbVppoC”,”to”:”n1qsgj2C5zmYzS9TSkPTnp15bhCCocRPwno”, “value”:”100″,”nonce”:8,”gasPrice”:”1000000″,”gasLimit”:”2000000″,”contract”:{“function”:”testEvent”,”args”:”[]”}}’
// Result
//運行結(jié)果
{
“result”:{“txhash”:”b55358c2e12c1d48d4e6beaee7002a59138294fb2896ea8059ff5277553af59f”,”contract_address”:””}
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24061.html

相關(guān)文章

  • 星云計劃——智能合約代碼入門

    摘要:星云計劃智能合約代碼入門卡酷少星云鏈上的智能合約類似于面向?qū)ο缶幊陶Z言中的類,合約可能包含狀態(tài)變量持久化固定化的變量以及可以修改這些變量的函數(shù)。星云鏈使用作為合約的執(zhí)行引擎。是星云支持的第一種智能合約語言,還可以用寫,但本文主要介紹。 星云計劃——智能合約代碼入門 卡酷少Wechat:13260325501 星云鏈上的智能合約類似于面向?qū)ο缶幊陶Z言中的類,合約可能包含狀態(tài)變量(持久...

    csRyan 評論0 收藏0
  • 基于星云鏈開發(fā)智能合約和DApp

    摘要:剛好又過了一段時間,看到了星云發(fā)布的星云激勵計劃第一季活動,就是鼓勵開發(fā)者們基于星云鏈主網(wǎng)開發(fā)去中心化應(yīng)用的活動,里面也包含了不小的獎勵。 最近一段時間,除了上班加班之外,基本上都在忙著開發(fā) DApp,也就是所謂的去中心化應(yīng)用(Decentralized Applications)啦,為什么突然就搞起這個了呢?事情是這樣的…… 就在前不久,很偶然地了解到了 Loom Network 這...

    Lyux 評論0 收藏0
  • 鏈游成公鏈新寵,風(fēng)口之下究竟哪家稱王?

    摘要:截至目前,布洛克城用戶數(shù)量已經(jīng)突破萬,吸引了眾多區(qū)塊鏈應(yīng)用入駐,包括預(yù)言家?guī)诺美拢约叭f利馬鏈與飛車等游戲應(yīng)用。 以謎戀貓為起點,區(qū)塊鏈游戲這趟列車已經(jīng)風(fēng)馳電掣地跑了滿一年。回顧去年同期,整個數(shù)字貨幣市場都陷入了非理性的狂熱中,天價貓不斷刷新著記錄,以太坊網(wǎng)絡(luò)也一度擁堵到被業(yè)內(nèi)外大肆嘲笑,看,它竟然被一只貓給搞癱瘓了。時隔一年,盡管養(yǎng)貓游戲熱度已降,但是新玩法的興起還是吸引了越來越多...

    chenatu 評論0 收藏0
  • 聚焦區(qū)塊鏈應(yīng)用,SegmentFault 黑客馬拉松引爆珠三角

    摘要:月日,思否在廣州未來社舉辦黑客馬拉松,聚焦區(qū)塊鏈應(yīng)用開發(fā)。未來,將繼續(xù)傳遞極客文化,在海內(nèi)外和一些合作伙伴舉辦黑客馬拉松,。希望通過舉辦的黑客馬拉松發(fā)現(xiàn)一些優(yōu)質(zhì)項目,未來展開更深入的合作。 6月23日,SegmentFault 思否在廣州未來社舉辦黑客馬拉松,聚焦區(qū)塊鏈應(yīng)用 DApp 開發(fā)?;顒游藖碜灾槿堑臉O客參與,現(xiàn)場也來自硅谷和多倫多、上海等地區(qū)的團隊參與。本次活動嘉賓有 C...

    loonggg 評論0 收藏0
  • 區(qū)塊鏈游戲 Dapp 獲得思否黑客馬拉松北京站冠軍

    摘要:上周末,來自硅谷團隊的游戲作品獲得思否區(qū)塊鏈黑客馬拉松北京站冠軍。本次黑客馬拉松有來自基金會科學(xué)家楊耀東合伙人劉海核心開發(fā)者姜家志星云鏈實驗室負責(zé)人劉杜然等多位嘉賓出席。 上周末,來自硅谷團隊的游戲作品Crypto Bird - An Implement of NabBoard獲得 SegmentFault 思否區(qū)塊鏈黑客馬拉松北京站冠軍。本次黑客馬拉松有來自 QuarkChain 基...

    GitChat 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<