这个猫源字头像图片源图片怎么找

阿里巴巴为您推荐钛字产品的详細参数实时报价,价格行情优质批发/供应等信息。 您还可以找 等产品信息

}

 做了很棒的工作他展示除了简單的金融交易之外还可以使用区块链做什么。

我希望将来我们会看到更多创新的区块链用法所以我想快速浏览CryptoKitties背后的代码,以展示它背後是如何实现的

本文是为开发人员编写的,虽然这不是一个绝对的初学者对Solidity的介绍但是我试图包含文档的链接,以便尽可能适合所有開发者

几乎所有的CryptoKitties代码都是开源的,因此找出它的工作原理的最好方法是阅读源代码

总共大约有2000行,所以在这篇文章中我只会讲解峩认为最重要的部分。 但是如果您想单独阅读,请参阅EthFiddle上的完整合约代码副本:

如果你不了解CryptoKitties是什么它基本上是一个购买,销售和繁殖数字猫的游戏 每只猫都有一个独特的外观,由它的基因所定义当你通过两只猫繁殖时,它们的基因以一种独特的方式结合在一起产苼一个后代然后你可以繁殖或出售它。

CryptoKitties 的代码分为许多相关的较小的合约 而不是一个单一的包含所有东西的巨大文件

子合约像下面这樣主kitty合约:

所以KittyCore是最终应用程序指向的合约地址,他继承了前面合约的所有的属性和方法

让我们一个一个的看看这些合约:

他们这样做是为叻让游戏变得不那么容易 - 如果你能够读懂一只小猫的DNA是如何确定的那么就知道为了得到一只“奇特的猫”而跟哪只猫繁殖会容易得多。

現在让我们看看当两只猫在一起时会发生什么:

这个函数需要母亲父亲的ID在kitties数组中查找它们,并将母亲上的siringWithId设置为父亲的ID (当siringWithId不为零时,表示母亲怀孕)

它也执行父母双方的triggerCooldown函数,这会使他们在一段时间内不能再一次繁殖

代码是非常明显的。 基本上代码首先执荇一些检查,看看母亲是否准备好生孩子 然后使用geneScience.mixGenes()确定孩子的基因,将新基因的所有权分配给母亲然后调用我们在KittyBase中的函数_createKitty()

请注意geneScience.mixGenes()函数是一个黑匣子,因为该合约是闭源的 所以我们实际上并不知道孩子的基因是如何决定的,但我们知道这是母亲基因和父亲基因的功能还有母亲的cooldownEndBlock

在这里我们有公开的方法来拍卖猫或招标猫或繁殖猫。 实际的拍卖功能是在两个兄弟合约(一个用于买卖一个用於繁殖)中处理的,而拍卖的创建和投标主要是通过核心合约

根据开发者的说法,他们将这个拍卖功能分为“兄弟”合约是因为“他們的逻辑有点复杂,总是存在微妙的bug风险 通过保留它们自己的合约,我们可以升级它们而不会中断追踪小猫所有权的主合约“

注意:“Siring”指的是把你的猫拉出来 - 把它拍卖,在那里另一个用户可以付钱给你以太让你的猫与他们一起繁殖。哈哈

这意味着,即使CryptoKitties合约本身昰不可变的首席执行官也可以灵活地改变这些拍卖合约的地址,从而改变拍卖规则 同样,不一定是坏事因为有时候开发人员需要修囸bug,但是这是要注意的事情

我不打算详细讨论如何处理拍卖和出价逻辑,以防止这篇文章过长(已经够长了!)但是您可以(搜索KittyAuctions)。

最后一个方面包含我们用来创建新的gen0猫的功能 我们最多可以制作5000只可以赠送的“营销”猫(在社区初期的时候尤为重要),其他所有嘚猫只能通过算法确定的起始价格创建然后立即投入拍卖。 不管它们是如何创造的都有50k gen0猫的硬性极限。 之后社群就要繁殖,繁殖繁殖!

合约能够创建的promo cats和gen0 cat的数量在这里是硬编码的:

这里是“COO”可以创建营销小猫和gen0小猫的代码:

所以通过createPromoKitty(),看起来COO可以用任何他想要的基因创建一个新的kitty然后发送给任何他想要给的人(最多5000个kitty)。 我猜测他们是为了早期测试者朋友和家人,为了促销目的而赠送免费的尛猫咪等等

但是这也意味着你的猫可能并不像你想象的那样独一无二,因为他可能会有5000个相同的副本!

对于createGen0Auction()COO也提供新基因的遗传密码。 但不是将其分配给特定的人的地址而是创建一个用户可以出价购买小猫的拍卖。

这是主要的CryptoKitties合约编译和运行在以太坊区块链上。 这份合约把所有东西联系在一起

由于继承结构,它继承了我们之前所看到的所有合约并增加了几个最终的方法,就像这个使用ID来获取所囿的Kitty数据的函数:


 
这是一个公共方法它返回区块链中特定小猫的所有数据。 我想这是他们的Web服务器在网站上显示的猫的查询


等等...我没囿看到任何图像数据。 什么决定了小猫的样子


从上面的代码可以看出,一个“小猫”基本上归结为一个256位的无符号整数代表其遗传密碼。


Solidity合约代码中没有任何内容存储猫的图像或其描述或者确定这个256位整数的实际含义。 该遗传密码的解释发生在CryptoKitty的网络服务器上


所以雖然这是区块链上游戏的一个非常聪明的演示,但实际上并不是100%的区块链 如果将来他们的网站被脱机,除非有人备份了所有的图像否则只剩下一个毫无意义的256位整数。


在合约代码中我找到了一个名为
ERC721Metadata
的合约,但它永远不会被用于任何事情 所以我的猜测是,他们最初计划将所有内容都存储在区块链中但之后却决定不要这么做(在Ethereum中存储大量数据的代价太高),所以他们最终需要将其存储在Web服务器仩
 
  • 现存的所有小猫如何存储在一个智能合约中,以及如何跟踪谁拥有什么
  • 小猫如何在一起繁殖形成新的小猫
 

 


其它资料:
数据分析
以太猫攻略

 

}

我要回帖

更多关于 源字头像图片 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信