如何使用 JS 创建挥动智能合约和资产?
Posted
技术标签:
【中文标题】如何使用 JS 创建挥动智能合约和资产?【英文标题】:How can I create that waves smart contracts and assets with JS? 【发布时间】:2019-07-16 09:12:54 【问题描述】:我正在尝试为 Waves 平台编写智能合约,据我了解,没有像以太坊那样的智能合约,有智能账户和智能资产,可以验证交易,但我如何创建智能合同和资产?我在 JS 库中没有找到方法 (https://github.com/wavesplatform/waves-api)。
【问题讨论】:
您提供的存储库不再维护,据我了解,这是交易 API,仅支持交易不支持智能合约。试试this。也许它是你需要的 【参考方案1】:实际上,你是对的,没有像以太坊那样的智能合约,但有智能账户和智能资产。 基本上,Waves 智能账户 可以在提交交易以包含在下一个生成的区块之前检查交易是否满足脚本中定义的某些条件。因此,您可以在您的帐户上使用脚本,该脚本允许您控制不同用例中的所有传出交易,包括 2FA、Multisig、托管和预言机等(您可以使用 SetScript Transaction 来做到这一点)。 智能资产的概念很简单,智能资产是带有附加脚本的资产,该脚本验证该资产中的每笔交易(您可以使用 SetAssetScript Transaction 来做到这一点)。
如果您有兴趣了解更多,可以查看智能账户和智能资产部分。 您可以通过Waves IDE 开始创建smart account 或smart assets, 下面是一个简单的智能资产示例,用于制作白名单用例:
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 IDE、Waves documentation 和Github 中找到更多示例。 Waves API JS 库已过时,您可以为此使用 Waves Transactions。
【讨论】:
以上是关于如何使用 JS 创建挥动智能合约和资产?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取有关随机智能合约地址的数据。如创建日期、链表、持有者(持有多少个钱包)