Git让生活变得更加有趣,我希望CKB也可以做到这一点。
原文标题:《CKB,版本控制与区块链演进》撰文:谢晗剑,Nervos首席架构师,秘猿科技首席执行官,前以太坊核心研发团队成员
我是Linus的粉丝。他创造了一个随处可见的开源操作系统,与人合著了一本我非常喜欢的书,还建立了一个几乎每个开发者每天都在使用的分布式版本控制系统。
我在见到Git的那一刻就开始用上了Git,并被它的速度和优雅所吸引。开发者用版本控制系统来管理源代码,这样他们就可以随时掌握代码的更新情况,与朋友和同事共享修改,在出现新错误时回滚到之前没有bug的版本等等。Git让生活变得更加有趣,我希望CKB也可以做到这一点。
CKB是Git
我们在创建CKB和Cell模型的过程受到了Git的启发。Git的出现是出于Linus对Linux内核开发方便的渴望,人们无论何时想要组织一些东西,从注释到博客文章,到图片,都可以使用它。它是一个具有极好历史跟踪功能支持的知识库。
Git知识库被称为「存储库」,在内部维护着一个不可变的只可追加的对象数据库。Git中的基本存储单元是Blob。每个blob都会被哈希,并且该blob哈希会被用作引用blob的标识符。工作了几个小时之后,您创建了一些新文件并修改了一些现有文件,然后将所有更改提交到存储库中,将新的提交同步给同事们,便收工了。
某巨鲸3月8日至今已累计从Amber处买入 360 万枚 DYDX 和 1050 万枚 BLUR:金色财经报道,据推特用户余烬监测,某巨鲸再度从 Amber 处接收了 50 万枚 DYDX 和 100 万枚 BLUR,从 3 月 8 日至今已累计买入 360 万枚 DYDX(均价 2.57 美元)、1050 万枚 BLUR(均价 0.66 美元),目前 DYDX 浮亏 173 万美元,BLUR 浮亏 190 万美元。[2023/5/14 15:01:30]
一个提交是Git中的基本历史点,存储库历史由一系列提交组成,这些提交包括从存储库的起源到最近的更新。提交是某个特定时间的存储库版本,包括版本元数据,如作者、时间戳、上一个提交和对blobtree的引用。就像区块头通过写下矿机地址、时间戳、父块哈希和交易merkletree的根来为区块链的每次更新保存元数据一样。您和您的同事们通过扩展git存储库的历史来获得报酬,就像矿工通过扩展区块的历史来获得区块奖励一样。
Git存储库也可以有Fork。人们在不同的分支上工作,但是哪个分支是「正确的」是由存储库维护者决定的,而不是通过共识。Git是一个没有共识的分布式系统,依赖于特殊的点对点通信进行数据交换。
Git和区块链之间有着相似之处,这也意味着我们应该更谨慎地将Git的想法融入到区块链中,而不应该将相互冲突的设计选择引入到区块链中,这样区块链或智能合约开发者就可以享受到Git的一些已被证明的优点。这就是CKB内在的真实样子:一个拥有真正的p2p网络、全球共识和增强blob的唯一大型Git库,由一群匿名者不断进行更新。
Coinbase首席法务官:如果SEC需要法庭,那我们将捍卫法治:金色财经报道,Coinbase首席法务官Paul Grewal在社交媒体上表示,Coinbase 收到了美国证券交易委员会的 Wells 通知。在多年要求合理的加密货币规则之后,我们对美国SEC正在考虑通过建设性对话进行法庭审查感到失望。但如果需要法庭,那就这样吧。我们将捍卫法治。
相比之下,多年来,我们已经能够在全球许多其他司法管辖区(包括新加坡、爱尔兰、澳大利亚和德国)成功成为一家获得许可和受监管的加密货币企业。我们还能够成功地受到另一家美国联邦监管机构的监管,从 CFTC 获得我们的 DCM 和 DCO 许可证。并受到许多美国州监管机构的欢迎。SEC 仍然是这里唯一的异常值。
事实是,今天美国SEC没有关于加密货币的明确规则手册,与美国证券交易委员会接触的努力遭到沉默或执法行动。他们没有按照 APA 的要求,遵循行业的诚信规则制定流程。[2023/3/23 13:21:56]
这不是一个区块链
按照你喜欢的方式给Cell命名
Git和CKB的核心都是数据对象和哈希引用。哈希引用是一个对象的固有名称,是你可以挥舞的魔杖,提取出数据的价值。如果你知道一个对象的名字,你就可以通过引用它,从而获得它的力量。在CKB上,智能合约的代码和用户数据是分离的,所以哈希引用可以让你直接命名一段代码或用户数据,让它们成为系统中的一级对象。这种精细的颗粒度创造了一个灵活而强大的编程模式。下面是一些例子。
Immutable X代币IMX将于11月5日解锁超2.5亿枚,约占总供应量的13%:11月2日消息,TokenUnlocks数据显示,NFT Layer2解决方案Immutable X的原生功能型代币IMX将于11月5日迎来一次大额解锁,总计254,862,617.5枚(价值约1.49亿美元),占IMX总供应量的12.743%。包括项目开发1.34亿枚(总供应量的6.73%),私募1.2亿枚(总供应量的6.01%)。[2022/11/2 12:08:16]
重用代码/数据
因为cell是可引用的存储单元,所以在CKB上重用代码/数据很容易。假设在cell0xbeef#1中存储了一些共享代码/数据,要重用它,首先需要加载cell0xbeef#1作为交易依赖项,然后使用ckb_load_cell_data系统调用从它那里读取数据,如默认的锁定脚本所示。一旦将cell0xbeef#1中的数据加载到VM内存中,那么就可以根据您的需要,将其视为代码或数据使用。通过这种方式,CKB就类似于一个代码和数据共享库,供运行在上面的智能合约使用。如果我们能通过组合现有的安全乐高积木来构建一个智能合约,是不是很酷?而不需要从GitHub上的某个地方复制代码,并且一次又一次地部署相同的代码,这既浪费了时间,也浪费了链上的空间。一项对以太坊合约的分析中表明,95%~99%的合约都是重复的。
Huobi Global成立全球顾问委员会:据官方消息,Huobi Global控股股东百域资本基金管理人决定成立全球顾问委员会,百域资本创始人、原景林资产创始合伙人Ted Chen(陈亦骅)、Huobi Global联合创始人杜均、香港科技大学副校长汪扬、波场创始人孙宇晨、Valkyrie投资联合创始人Leah Wald成为该顾问委员会委员。
此前报道,Huobi Global控股股东完成股份出售,百域资本旗下并购基金成为Huobi Global的第一大股东和实控人。Huobi创始人李林表示,其不再是实控人与股东,不拥有任何权限。[2022/10/10 12:52:04]
Ethereum上重复最多的智能合约
无惧依赖删除
在上面的代码/数据重用例子中,你不需要担心有人修改存储在依赖cell中的代码/数据,因为cell是不可变的,也就是说,没有人有办法修改它。但是如果依赖cell的所有者直接将其从CKB中删除呢?那会不会让我的智能合约无法使用呢?
在Ethereum上的确是这样的。如果你在这个领域待的时间足够长,你可能会知道2017年关于2.8亿美元的意外事故。整个悲剧是由Ethereum上一个智能合约的意外删除引发的,这个合约被许多其他智能合约使用。这次删除导致所有依赖它的智能合约都功能失调,所有存储在这些智能合约中的资产都被冻结。
说唱歌手Snoop Dogg已提交两项NFT和元宇宙相关商标申请:6月20日消息,据美国律师Mike Kondoudis的推文,说唱歌手Snoop Dogg为UNCLE SNOOP以及UNCLE SNOOP’S提交了NFT和元宇宙相关商标申请,涵盖范围包括服装/头饰/鞋类、虚拟大麻及吸烟用品、NFT及数字收藏品市场。
此前消息,今年2月份,Snoop Dogg在The SandBox发售1万个Avatar化身,3月份,Snoop Dogg发布了以 ApeCoin (APE) 和Bored Ape Yacht Club (BAYC) 为主题的音乐NFT,名为“Ape Drops 03 : An 8th”,并发布第一款音乐NFT作品;6月4日消息,Snoop Dogg将开设BAYC NFT主题甜品餐厅。[2022/6/20 4:39:59]
而在CKB上,这样的意外并不会造成什么影响,因为任何保存代码副本的人都可以在链上再次部署相同的代码,代码哈希的引用仍然有效。我们只需使用新的依赖cell来构造交易即可。没有人会因此受到损失,一切都仍将正常运转。
从依赖删除中恢复
实际上,我们甚至可以有意地利用这一点来实现代码的「先使用后部署」。假设您想使用一个新的自定义锁定脚本来保护你的cell。与通常的先部署后使用流程不同,您可以在不进行部署的情况下使用它。只需要将新的锁定脚本的代码哈希放入celllock中,那么这些cell就会被新的lock保护,且立即生效。
实际锁定脚本代码的部署可以延迟到您想要解锁这些cell之时。如果想要解锁,首先需要在链上部署脚本代码,然后像往常一样发送另一个交易来解锁这些cell。在cell被解锁之后,您可以删除部署的代码并索回被占用的CKByte,以减少不必要的存储成本。先使用后部署的额外好处是更好的隐私性:在你解锁之前,没有人知道这个新锁的逻辑是什么。
进化的CKB
在了解了CKB和Git之间的相似性及其优点之后,我们来探讨一个更有趣的问题:如果CKB是一个git库,我们可以用CKB来管理CKB的代码吗?
是的!这就是为什么一些CKB核心功能,如交易签名验证和NervosDAO都是以智能合约形式实现的原因。以交易签名验证为例——这是几乎所有区块链的核心功能,并且是用原生语言硬编码的。
为了升级区块链,人们必须在大多数节点上分发和部署新的软件版本,这需要大量的协调工作。对于CKB来说,交易签名验证可以和其它智能合约一样,通过在链上部署新版本来进行升级。这让CKB具备了Tezos提出的长期可升级性。
我们还可以做到更好。在CKB上,每个用户都拥有自己的数据,所以一份合约更像是用户和CKB之间的两方协议,个人可以做出独立的选择。如果你通过代码哈希来使用合约,这意味着「我同意了这个特定版本的合约」。你不必担心有一天开发者会升级合约代码,因为新合约的代码哈希是不一样的,你的lock/type仍然会引用旧的合约而不是新的合约。新版本部署后,会与系统中的旧版本共存。如果您通过其代码哈希使用系统合约,那么新版本对您不会造成影响,您可以自主决定是否升级。如果答案是yes,那么你可以更新所有cell以使用新版本。如果是no,则什么都不需要做,继续使用旧版本。
这对那些可能不经常在线的持有者来说是一个友好的保证,因为他们可以保证在创建时附加在他们cell上的合约不会被更改。人们的资产将始终按照他们锁定时指定的方式进行锁定。这是对SoV用户的终极保证,也是CKB资产不同于其它区块链上资产的原因。这和比特币通过「只遵循软分叉」的方式来为持有者提供保障是一样的。唯一的缺点是,当进行安全升级时,您需要承担「太晚」的风险。因此,为了方便起见,有些人可能还是喜欢一直使用最新的版本,因为他们相信开发团队,不需要操心去审核合约和手动升级,在这种情况下,他们会使用typeid来引用合约。大致来说,typeid就类似于Git中的HEAD,一个可更新的引用总是指向当前的版本。通过提供这两种选项我们将选择合适升级策略的权利还给了用户。有选择总是好的。我们可以有不同的选择,没有人会被强迫升级。
系统脚本升级
从长远来看,CKB将越来越抽象化、模块化,更多的核心功能将会在链上智能合约中被提取和实现。在其完整的形态下,我们应该可以无需通过软/硬分叉就能升级CKB。这其中缺失的一环是,我们,即社区如何决定升级系统合约与否,或者说CKB的治理模式是什么?更准确地说,是我们如何决定升级一个系统合约的typeid。
今天,CKB使用的是和比特币一样的链下治理模式,我们仍然依赖于软/硬分叉。为了让使用其typeid引用的人启用新版本的系统脚本,需要硬分叉来更新typeid引用以指向最新版本,因为代码cell是被一个可解锁的lock锁定_(https://explorer.nervos.org/address/ckb1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqhzeqga,检查一下它的代码哈希)_。不使用核心团队控制的多签签名锁是一个有意的选择,因为系统脚本的升级应该遵循社区制定的治理决策。
正如我们在定位白皮书中所说的那样,虽然目前有很多有趣的建议,但我们还没有看到一个切实可行的治理模式。一旦我们找到了合适的治理模式,我们就可以用「治理锁」来代替不可解锁的锁,让系统智能合约在征得社区同意的情况下进行升级,比如投票的结果。在此之前,我们会暂时坚持不完善的链下治理模式,但CKB治理和演进的脊梁已经存在。
来源链接:谢晗剑
以太坊
以太坊
开放的分布式区块链应用平台,通过其专属加密货币Ether以太币提供去中心化的虚拟机,处理点对点合约。允许任何人建立和使用通过区块链技术运行的去中心化应用,没有任何欺诈、审查、第三方监管。以太坊的概念首次在2013至2014年由维塔利克·布特林VitalikButerin受比特币启发后提出,旨在共同构建一个更全球化、更自由、更可靠的互联网。以太坊EthereumETHERCERCERC20ERC721ERC以太坊查看更多Nervos
OpenFinance“开放金融”-基于公共区块链的开源金融服务基础设施-可能是Fintech之后的下一个主要数字化金融形态.
1900/1/1 0:00:00最近市场有很多公司宣传卖满算力矿机,不用自己出质押币,买了之后第2天单T产币量就能达到全网最高值.
1900/1/1 0:00:00Filecoin中的质押机制是指矿工算力增长过程、区块奖励释放过程及市场数据交易过程中涉及到的代币质押与释放机制.
1900/1/1 0:00:00亲爱的Bankless玩家,我们的分析工具正在不断改进。一年前,业界几乎不了解如何对加密资本资产进行估值。我们对市盈率(P/E)和市销率(P/S)等概念还只是停留在表面。但现在我们做到了.
1900/1/1 0:00:00目前100000人已关注加入我们扫一扫下载全网最新数据报告查看完整报告请阅读全文查看完整报告请阅读全文以上资料均从网络公开资料收集整理而成.
1900/1/1 0:00:00刘毅认为PoS?相较PoW的优势在于安全启动外、快速最终性、快速获得可量化的结算保证。原文标题:《对话野花说|刘毅:有了PoW,为什么还需要PoS?》作者:刘毅来源:野花说由野花说、CdotNe.
1900/1/1 0:00:00