簡體   English   中英

如何使用JS創建智能合約和資產?

[英]How can I create that waves smart contracts and assets with JS?

我試圖為Waves Platform編寫智能合約,據我所知,沒有智能合約,如以太坊,有智能賬戶和智能資產,可以驗證交易,但我怎樣才能創建智能合約和資產? 我沒有在JS庫中找到方法( https://github.com/wavesplatform/waves-api )。

實際上是的,你是對的,沒有像以太坊那樣的智能合約,但有智能賬戶和智能資產。 基本上, Waves智能帳戶可以檢查事務是否滿足在提交事務以包含在下一個生成的塊中之前在腳本中定義的某些條件。 因此,您可以在帳戶上使用一個腳本,該腳本允許您控制不同用例中的所有傳出事務,包括2FA,Multisig,托管和oracles等(您可以使用SetScript Transaction執行此操作)。 智能資產的概念很簡單,智能資產是帶有附加腳本的資產,該腳本驗證該資產中的每個事務(您可以通過使用SetAssetScript Transaction來實現 )。

如果您有興趣了解更多信息,可以查看智能帳戶和智能資產部分。 您可以通過Waves IDE開始創建智能帳戶智能資產 。以下是制作白名單用例的簡單智能資產示例:

let whiteListAccount = tx.sender
match tx {
   case tx : TransferTransaction =>
   let recipient = toBase58String(addressFromRecipient(tx.recipient).bytes)
   isDefined(getInteger(whiteListAccount, recipient))
   case _ => true
}

以下是2-3 MultiSig的簡單智能帳戶示例:

#define public keys
let alicePubKey  = base58'5AzfA9UfpWVYiwFwvdr77k6LWupSTGLb14b24oVdEpMM'
let bobPubKey    = base58'2KwU4vzdgPmKyf7q354H9kSyX9NZjNiq4qbnH2wi2VDF'
let cooperPubKey = base58'GbrUeGaBfmyFJjSQb9Z8uTCej5GzjXfRDVGJGrmgt5cD'

#check whoever provided the valid proof
let aliceSigned  = if(sigVerify(tx.bodyBytes, tx.proofs[0], alicePubKey  )) then 1 else 0
let bobSigned    = if(sigVerify(tx.bodyBytes, tx.proofs[1], bobPubKey    )) then 1 else 0
let cooperSigned = if(sigVerify(tx.bodyBytes, tx.proofs[2], cooperPubKey )) then 1 else 0

#sum up every valid proof to get at least 2
aliceSigned + bobSigned + cooperSigned >= 2

您可以在Waves IDEWaves文檔Github中找到更多示例。 Waves API JS庫已過時,您可以使用Waves Transactions進行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM