成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

李增田 / 3230人閱讀

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

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

Wechat:13260325501


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

BigNumber

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

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

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

基礎(chǔ)

LocalContractStorage 支持三個(gè)操作:

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

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

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

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

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

Blockchain 有兩個(gè)屬性:

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

它具有下列屬性:

— timestamp 區(qū)塊時(shí)間戳

— height 區(qū)塊高度

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

它具有下列屬性:

— hash 交易哈希值

— from 交易源地址

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

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

— nonce 交易的 nonce 值

— timestamp 交易時(shí)間戳

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

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

Blockchain 還提供了兩個(gè)方法:

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

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

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

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

verifyAddress(address) 驗(yàn)證參數(shù) address 是否為一個(gè)有效的 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);
   },
   //這里給出兩個(gè)方法: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)生的事件。被記錄的事件存儲(chǔ)在鏈上的事件Trie結(jié)構(gòu)中,可以通過事件查詢方法 rpc.getEventsByHash 獲取所有事件。通過Event模塊輸出的事件其最終Topic由用戶自定義topic加固定前綴 chain.contract. 兩部分構(gòu)成 。

使用方法如下:

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

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

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

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

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

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

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

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

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

如何調(diào)用合約

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

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

節(jié)點(diǎn)啟動(dòng)后,調(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
//運(yùn)行結(jié)果
{
“result”:{“txhash”:”b55358c2e12c1d48d4e6beaee7002a59138294fb2896ea8059ff5277553af59f”,”contract_address”:””}
}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/24061.html

相關(guān)文章

  • 星云計(jì)劃——智能合約代碼入門

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

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

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

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

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

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

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

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

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

    GitChat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<