首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何创建与JS的智能合同和资产?

我如何创建与JS的智能合同和资产?
EN

Stack Overflow用户
提问于 2019-02-22 09:48:56
回答 1查看 374关注 0票数 4

我正在尝试为Wave平台编写智能契约,据我所知,目前还没有像Ethereum这样的智能契约,有智能帐户和智能资产,它们可以验证交易,但我如何创建智能契约和资产?我没有在JS库(https://github.com/wavesplatform/waves-api)中找到方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 11:07:16

事实上,是的,你是对的,没有像Ethereum那样的智能合同,但是有智能帐户和智能资产。基本上,Wave智能帐户可以检查事务是否满足在提交到下一个生成块之前在脚本中定义的某些条件。因此,您可以在您的帐户上使用一个脚本,该脚本允许您在不同的用例中控制所有传出事务,包括2FA、Multisig、托管和预言等(您可以通过使用SetScript Transaction来实现这一点)。智能资产的概念很简单,智能资产是带有附加脚本的资产,该脚本验证该资产中的每个事务(您可以使用SetAssetScript transaction 来实现这一点)。

如果您有兴趣阅读更多内容,可以查看智能帐户和智能资产部分。您可以通过智能帐户智能资产开始创建一个波形IDE,下面是一个简单的智能资产示例,以创建白名单用例:

代码语言:javascript
运行
复制
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的一个简单的智能帐户示例:

代码语言:javascript
运行
复制
#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

您可以在波形IDE波浪文献Github中找到更多的示例。Waves库已经过时,您可以为此使用波浪交易

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54824307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档