l n为开发人员提供了构建高性能面向用户的所需的可扩展性和可用性。在同行眼中,阿蒂斯区块链有着让人觊觎的好品质,也有着很多让人嫉妒的忠实粉丝。
l n为以太坊提供了一个第二层解决方案,具有以下主要优点:......
l n为开发人员提供了构建高性能面向用户的所需的可扩展性和可用性。
l n为以太坊提供了一个第二层解决方案,具有以下主要优点:
. -秒确认时间。
. 用户无需支付气体费。
. 避免主网交易拥塞。
. 与mm和其他主要以太坊钱包完全兼容。
创建智能合约
如果您是创建以s编写的智能合约的初学者,我强烈建议您使用r ide来开发和使用智能合约。它可以轻松地测试某些功能。r还会为任何智能合约创建合约abi和-您以后需要将它们集成到游戏客户端中。
对于高级编码人员或专家,我建议使用t。您还可以遵循p r的本指南,使用t为l创建和部署智能合约。
我们将创建的智能合约是针对使用g e u创建的小型单人原型游戏,玩家可以在其中收集硬币。 这些硬币实际上是免费创建并保存在l区块链上的!
&;=.. &;..;
/// @ j s
/// @ a
cc {
/// @ t .
c;
/// @ m .
( =&; )c;
/** @ e .
* @ _ t .
*/
sg( _);
/** @ e .
* @ _ t .
* @ _c t .
*/
cc( _,_c);
/** @ e .
* @ _ t .
*/
eg( _);
/** @ c .
* @ t , .
* @ _c t .
*/
( _c){
c = _c;
}
/** @ a .
* @ rc..
*/
g(){
c[.] = ;
sg(.);
}
/** @ a .
* @ i . .
*/
c(){
c[.] += ;
cc(., c[.]);
(c[.] == c){
eg(.);
}
}
/** @ s .
* @ r ..
* @ t .
*/
cc() () {
c[.];
}
}
一步一步来
让我们先创建此原型游戏智能合约。
首先让我们创建一个通用的智能合约
&;=.. &;..;
cc {
}
注意,我们定义了编译器版本的范围。它必须在版本.和.之间。推荐这样做是因为较低的版本可能包含安全问题,而较高的版本可能会破坏合同代码。我们的合同称为cc。
让我们包括一个获胜条件,即玩家赢得游戏需要收集的硬币数量。
&;=.. &;..;
cc {
c;
( _c){
c = _c;
}
}
注意,我们创建了一个全局变量“ c”,其类型为(正自然数)。此外,我们包括了构造函数。 一旦部署了智能合约,构造函数就是一个特殊功能。在这里,我们在参数中定义实际的获胜条件。让我们开始吧。.为了更好的概述,让参数始终以下划线开头,以便您可以区分参数和全局变量。
我们的功能:
&;=.. &;..;
cc {
c;
( =&; )c;
( _c){
c = _c;
}
g(){
c[.] = ;
}
c(){
c[.] += ;
}
cc() () {
c[.];
}
}
注意,除了构造函数,我们现在还创建了三个函数。我们希望能够开始游戏,收集硬币并始终接收有关已经收集了多少硬币的信息。我们为每个函数提供了可见性修饰符。可能的修饰符是,,和。
. p意味任何人都可以调用公共函数。
. p意味着只能从契约内部调用函数。
. i允许从父合约继承的合约使用该函数。
. e 函数是合约接口的一部分,这意味着它们可以从其他合约和通过事务调用。
也就是说,除非需要进行外部交互,否则请将函数设为p或i。此外我们的cc函数具有“ ”关键字,该关键字是可选的,但指定我们不更改此函数内的任何存储变量。我们仅“查看”某些数据,例如我们的硬币。
为了跟踪收集了多少硬币,我们添加了映射c。游戏开始时,将重置玩家的值,并且在玩游戏时,每个硬币收集将使该值增加。我们的映射将获取一个地址(当前玩家)并将其“指向”该值,即所收集硬币的计数。因此,我们能够在c中保存每个玩家的当前状态。
让我们添加最后的代码段:e。e对我们的客户而言最重要。它使我们能够注意到发生了什么。例如我们想知道玩家何时开始并赢得比赛或何时收集硬币。
&;=.. &;..;
cc {
c;
( =&; )c;
sg( _);
cc( _,_c);
eg( _);
( _c){
c = _c;
}
g(){
c[.] = ;
sg(.);
}
c(){
c[.] += ;
cc(., c[.]);
(c[.] == c){
eg(.);
}
}
cc() () {
c[.];
}
}
请注意,我们在存储变量所在的顶部添加了可能的事件。每个事件定义了所需的信息。在c函数中,我们添加了一个语句,以始终检查仅收集硬币的玩家是否满足获胜条件。如果是这样,将发出结束游戏事件,并且客户端会注意到该事件。每次我们在代码中引用“ .”时,它都指向传入交易的地址,即播放器。
智能合约基本完成。随意玩耍并添加其他功能,例如可以收集的全部硬币,收集不同的硬币类型,或者集成机制以使其成为多人游戏。是时候发挥你的创造力!
部署智能合约
首先,我们需要使用以下命令安装l sdk:
:///--///_. |
接下来,使用以下命令创建部署智能合约所需的私钥:
- _ - _
现在,我们正在为智能合约创建一个二进制文件。
-- -- - . cc.
并使用此二进制文件将我们的智能合约部署到l t(完全免费!)。我们指定私钥“-”,二进制文件“-”,链url“-”和链id“-”。
- _ - cc. -
--.: -- “--”
结果应如下所示,其中最上方是合约地址,后跟我们的。
n : --:
cefeee
r : [
]
t :
请注意,已部署的智能合约地址为“ cefeee”。 现在您可以在l b e中找到它。需要将智能合约地址添加到您的游戏客户端。
非常好!智能合约已经开发完善,去在u中创建迷你游戏吧,立即使用您的智能合约!