Scilla尝鲜

Scilla 目前还正在积极开发中。 但是你可以使用线上 IDE 来编写 Scilla。

Savant IDE

Neo Savant IDE 是一个基于 Web 的开发环境,它允许你与模拟测试网环境、开发者测试网和主网进行交互。 另外它针对在 Chrome 浏览器中的使用进行了优化。 Neo Savant IDE 允许你从外部钱包(如 Ledger 或密钥库文件)导入帐户。

当钱包成功导入时,IDE 会自动请求水龙头向你支付测试网 $ZIL。 在模拟的测试网环境中,你将获得 10,000 枚 ZIL。 在开发者测试网上,你将获得 300 枚 ZIL。 主网没有水龙头。

在使用 隔离服务器Zilliqa-JS 等工具进行自动化脚本测试之前,Neo Savant IDE 可以充当临时环境。 要试用 Neo Savant IDE,用户需要访问 Neo Savant IDE

示例合约

Savant IDE 附带以下用 Scilla 编写的示例智能合约:

  • HelloWorld :这是一个简单的合约,允许指定的帐户 owner 设置欢迎消息。 设置欢迎消息是通过 setHello (msg: String) 完成的。 该合约还提供了一个接口 getHello() 以允许任何帐户在调用时返回欢迎消息。

  • BookStore :CRUD 应用程序的演示。 只有合约的 owner 才能添加 members 。 所有 members 都将具有读/写权限,可以使用 book titleauthorbookID 对库存中的书籍进行 OR 操作。

  • CrowdFunding :Crowdfunding 实现了一个 Kickstarter-style 的众筹活动,用户可以使用 Donate() 向合约捐赠资金。 如果众筹成功,即在给定时间段内筹集到足够的资金,则可以通过 GetFunds() 将筹集的资金发送给预定义的帐户 owner 。 相反,如果众筹失败,则贡献者可以通过名为 ClaimBack() 的ransition收回他们的捐款。

  • Auction :一个简单的公开拍卖合约,投标人可以使用 Bid() 进行投标,最高中标金额进入预定帐户。 没有获胜的投标人可以使用名为 Withdraw() 的transition收回他们的投标。 拍卖的组织者可以通过调用名为 AuctionEnd() 的transition来获取最高出价。

  • FungibleToken :ZRC-2 同质化通证标准合约,用于创建可替代的数字资产,例如稳定币、实用通证和忠诚度积分。

  • NonFungible Token :ZRC-1 非同质化代币(即NFT)标准合约,用于创建独特的数字资产,例如数字收藏品、音乐唱片、艺术和域名。

  • ZilGame :一个两人游戏,目标是找到与给定 SHA256 摘要( puzzle )最接近的原像。更具体地说,就是对于一些 Distance 函数,给定摘要 d 和两个值 xy,如果 Distance(SHA-256(x), d) < Distance(SHA-256(y), d),与 d 相比,则称 xy 更接近原像。游戏分两个阶段进行:在第一阶段,玩家使用名为 Play(guess: ByStr32) 的transition提交他们的哈希值,即 SHA-256(x) 和 SHA-256(y)。一旦第一个玩家提交了她的哈希值,第二个玩家则必须在限定时间内来提交她的哈希值。如果第二位玩家没有在规定时间内提交她的哈希,那么第一位玩家就可能成为获胜者;在第二阶段,玩家必须使用名为 ClaimReward(solution: Int128) 的transition来提交相应的值 xy ,提交的哈希值最接近原像的玩家被宣布为获胜者并获得奖励。该合约还提供了一个名为 Withdraw () 的transition以在没有玩家玩游戏的情况下收回资金并发送给指定的 owner

  • SchnorrTest :一个用于测试 Schnorr 公钥/私钥对的生成、使用私钥对 msg 进行签名以及验证签名的示例合约。

  • ECDSATest :一个用于测试 ECDSA 公钥/私钥对的生成、使用私钥对消息进行签名以及验证签名的示例合约。