首先,如果之前有人问过这个问题,我很抱歉,但我找不到合适的答案,而且我对这一切都很陌生,所以提前感谢你的理解。
我想创建一个游戏(1对1),其中:
我的问题:
-can I在一份合同中制造2种不同类型的NTS (胜利者只获得2种/更宽松的许可令牌)
-is智能合同可能等待决斗的结果(就像等待函数)
-how做我最好的查询数据从一个sql数据库到一个智能契约。
谢谢你的帮助!
发布于 2022-12-01 16:14:12
在一个合同中创建两种不同类型的NFT是可能的,但是它需要一些额外的工作来设置。您可以创建两个不同的NFT令牌契约,一个用于获胜者接收的NFT,另一个用于两个玩家接收的“可替换访问密钥”。然后,在您的主游戏契约中,您可以调用适当的令牌契约上的mint函数来创建NFT。
聪明的合同不可能以你所描述的方式“等待”决斗的结果。智能契约是在区块链上执行的,这是一个分散的网络,无法访问外部信息,比如游戏的结果。
如果要将决斗的结果存储在SQL数据库中,则需要创建一个单独的后端系统,该系统可以与数据库和智能契约进行通信。智能契约需要包括触发后端系统以存储决斗结果的某种方式,例如调用合同上的特定函数或发出后端系统可以侦听的事件。然后,后端系统可以将结果存储在数据库中,并在智能契约中触发适当的函数来创建NFT。
将SQL数据库中的数据查询到智能契约是不可能的,因为智能契约无法访问外部数据源。如上所述,您需要创建一个单独的后端系统来处理数据库和智能契约之间的通信。
发布于 2022-12-01 22:32:58
我的问题是:我能否在一份合同中区分两种不同的NTS (胜利者获得2种/更宽松的许可令牌)
是的,您可以在一个合同中拥有任意数量的NFT。我不知道为什么您的访问令牌是不可替换的,因为您明确地说,您希望它是可替换的。它可以是一个正常的,可替代的令牌。
聪明的合同是否可能等待决斗的结果(就像等待功能一样)?
不是的。聪明的合同不能等了。如果您需要合同等待,那么您需要让它记住它正在等待,然后返回,然后下次它被调用时,它需要查看它正在等待的事实,看看它正在等待的事情是否已经完成,等等。
如何最好地将数据从sql数据库查询到智能契约中。
最好是让你的智能合同尽可能少,以节省汽油。因为您已经拥有了这个集中式游戏服务器和集中式SQL数据库服务器,所以您可以将其设置为使服务器发送一个创建NFT的事务。
如果您不想给您的服务器一个Ethereum帐户,或者不想支付煤气费,您可以给获胜的玩家一个数字签名,让他自己制作NFT,而智能合同可以确保签名是有效的,以前也没有使用过。失败的玩家可以得到一个不同的签名,这给了他另一个访问令牌。
无论哪种方式,智能契约都无法访问数据库。
https://ethereum.stackexchange.com/questions/140375
复制相似问题