全球数字财富领导者
财富汇
|
美股投研
|
客户端
|
旧版
|
北美站
|
FX168 全球视野 中文财经
首页
资讯
速递
行情
日历
数据
社区
视频
直播
点评旗舰店
商品
SFFE2030
外汇开户
登录 / 注册
搜 索
综合
行情
速递
日历
话题
168人气号
文章
Vitalik:以太坊多客户端将如何与ZK-EVM交互?
go
lg
...
协作管理的规范(是用非常易读但非常慢的
Python
编写的)并且有多个团队实现规范(也称为“客户端”),这些客户端客户端由用户实际运行。 每个以太坊节点运行一个共识客户端和一个执行客户端。截至今天,没有共识或执行客户端占网络的2/3 以上。如果在其类别中份额低于 1/3 的客户端出现错误,则网络将照常运行。如果在其类别中占有 1/3 到 2/3 份额的客户端(例如 Prysm、Lighthouse 或 Geth)出现错误,链将继续添加区块,但它会停止最终确定区块,从而为开发人员提供时间进行干预。 以太坊验证方式的一个未被充分讨论但非常重要的即将到来的重大转变是ZK-EVM的兴起。证明 EVM 执行的 SNARK已经开发多年,该技术正被称为ZK rollups的2 层协议积极使用。其中一些 ZK Rollups已经在主网激活,很快就会有更多。但从长远来看,ZK-EVM 不仅仅用于Rollup;我们也想使用它们来验证1 层的执行情况。 一旦发生这种情况,ZK-EVM 实际上成为第三种类型的以太坊客户端,对网络安全的重要性与当今的执行客户端和共识客户端一样重要。这自然会提出一个问题:ZK-EVM 将如何与多客户端交互?困难的部分之一已经完成:我们已经有多个正在积极开发的 ZK-EVM 实现。但其他困难的部分仍然存在:我们如何真正为 ZK 证明以太坊区块的正确性创建一个“多客户端”生态系统?这个问题提出了一些有趣的技术挑战——当然还有权衡是否值得的迫在眉睫的问题。 以太坊多客户端理念的最初动机是什么? 以太坊的多客户端哲学是一种去中心化,就像一般的去中心化一样,人们可以关注架构去中心化的技术收益或政治去中心化的社会收益。最终,多客户理念受到双方的推动并为双方服务。 技术去中心化 技术去中心化的主要好处很简单:它降低了一个软件中的一个错误导致整个网络灾难性崩溃的风险。例证这种风险的历史情况是2010 年的比特币溢出漏洞。当时,比特币客户端代码没有检查交易输出的总和是否溢出(通过总和超过最大整数回绕到零),所以有人做了一笔交易,给了自己数十亿枚比特币。该漏洞在数小时内被发现,并迅速修复并在整个网络中快速部署,但如果当时有一个成熟的生态系统,这些代币就会被交易所、桥和其他构造所接受,攻击者可能已经带走了很多钱。如果有五个不同的比特币客户,他们不太可能都有相同的错误,因此会立即出现分叉,而分叉中有错误的一方可能会输掉。 使用多客户端方法来最小化灾难性错误的风险需要权衡:相反,你会遇到共识失败错误。也就是说,如果你有两个客户端,则存在客户端对某些协议规则有细微不同解释的风险,虽然两种解释都是合理的并且不允许偷钱,但分歧会导致链分叉成两个。这种类型的严重分叉在以太坊的历史上发生过一次(还有其他更小的分叉,其中运行旧版本代码的网络的很小一部分被分叉了)。单一客户端方法的捍卫者将共识失败作为不具有多个实现的原因:如果只有一个客户端,则该客户端不会不同意自己。他们关于客户数量如何转化为风险的模型可能如下所示: 我当然不同意这种分析。我不同意的地方在于 (i) 2010 年风格的灾难性错误也很重要,并且 (ii)你实际上永远不会只有一个客户端。后一点在2013 年的比特币分叉中表现得最为明显:由于两个不同版本的比特币客户端之间存在分歧而发生了链分叉,其中一个版本意外地限制了可以使用的对象数量,但未记录在案。在单个区块中进行修改。因此,理论上一个客户端在实践中通常是两个客户端,理论上五个客户端在实践中可能是六个或七个客户端。所以我们应该面对冒险并走在风险曲线的右侧,并且至少有几个不同的客户端。 政治去中心化 垄断的客户端的开发人员处于拥有大量政治权力的位置。如果客户端开发人员提出更改,而用户不同意,理论上他们可以拒绝下载更新版本,或者在没有它的情况下创建一个分叉,但实际上用户通常很难做到这一点。如果不愉快的协议更改与必要的安全更新捆绑在一起怎么办?如果主要团队威胁说如果他们不按他们的方式行事就退出怎么办?或者,更温和地说,如果垄断的客户端团队最终成为唯一拥有最强大协议专业知识的群体,而使生态系统的其他部分处于不利地位,无法判断客户端团队提出的技术论点,从而使客户端团队面临有很大的空间来推动他们自己的特定目标和价值观,这可能与更广泛的社区不匹配? 对协议政治的担忧,特别是在2013-14 比特币 OP_RETURN 战争的背景下,一些参与者公开支持分叉链的特定用途,是以太坊早期采用多客户端哲学的重要促成因素,这旨在让一小部分人更难做出此类决定。以太坊生态系统特有的担忧——即避免权力集中在以太坊基金会内部——为这一方向提供了进一步的支持。2018 年,基金会决定有意不实施以太坊 PoS 协议(即现在所谓的“共识客户端”),将该任务完全留给外部团队。 未来ZK-EVM将如何进入1层? 如今,ZK-EVM 用于Rollup。这通过允许仅在链下发生几次昂贵的 EVM 执行来增加扩展性,而其他人只需验证链上发布的SNARKs即可证明 EVM 执行计算是否正确。它还允许一些数据(特别是签名)不包含在链上,从而节省 gas 成本。这给了我们很多可扩展性的好处,可扩展计算与 ZK-EVM 和可扩展数据与数据可用性采样的结合可以让我们扩展得更远。 然而,今天的以太坊网络也有一个不同的问题,一个再多的 layer 2 扩容也无法自行解决的问题:layer 1 难以验证,以至于没有多少用户运行自己的节点。相反,大多数用户只是信任第三方提供商。Helios和Succinct等轻客户端正在采取措施解决该问题,但轻客户端远非完全验证节点:轻客户端仅验证称为同步委员会的随机验证者子集的签名,而不会验证该链实际上遵循协议规则。为了让我们进入一个用户可以实际验证链是否遵守规则的世界,我们必须做一些不同的事情。 选项 1:限制1层,强制几乎所有活动移动到2层 随着时间的推移,我们可以将1层每个区块的 gas 目标从 1500 万减少到 100 万,足以让一个区块包含一个 SNARK 和一些存款和取款操作,但其他的不多,从而强制几乎所有用户活动移动到2层协议。这样的设计仍然可以支持在每个区块中提交许多Rollup:我们可以使用由定制构建者运行的链下聚合协议来从多个2层协议收集SNARK,并将它们组合成一个SNARK。在这样的世界中,1层的唯一功能是成为2层协议的交换所,验证它们的证据并偶尔促进它们之间的大额资金转移。 这种方法可能有效,但它有几个重要的弱点: 它实际上是向后不兼容的,因为许多现有的基于 L1 的应用程序在经济上变得不可行。高达数百或数千美元的用户资金可能会陷入困境,因为费用变得如此之高,以至于超过了清空这些账户的成本。这可以通过让用户签署消息以选择协议内大规模迁移到他们选择的 L2 来解决(参见此处的一些早期实施想法),但这增加了过渡的复杂性,这需要1层的某种SNARK真正足够便宜。当涉及到SELFDESTRUCT 操作码之类的东西时,我通常喜欢打破向后兼容性,但在这种情况下,权衡似乎不太有利。 它可能仍然无法使验证变得足够便宜。理想情况下,以太坊协议应该不仅在笔记本电脑上而且在手机、浏览器扩展程序甚至其他链中都应该易于验证。第一次同步链的时候,或者长时间离线后,应该也很容易。笔记本电脑节点可以在大约 20 毫秒内验证 100 万gas,但即使这样也意味着在离线一天后需要 54 秒进行同步(假设单slot最终确定性将slot时间增加到 32 秒),而对于手机或浏览器扩展,则需要每个区块几百毫秒,并且可能仍然是不可忽略的电池消耗。这些数字是可控的,但并不理想。 即使在 L2 优先的生态系统中,L1 至少在某种程度上可以负担得起也是有好处的。如果用户在注意到新的状态数据不再可用时可以提取资金,Validiums可以从更强大的安全模型中受益。如果经济上可行的跨 L2 直接转移的最小规模较小,套利将变得更加有效,尤其是对于较小的代币。 因此,尝试找到一种使用 ZK-SNARKs 来验证1层本身的方法似乎更合理。 选项 2:SNARK验证第 1 层 类型1(完全等效于以太坊)ZK-EVM可用于验证(1 层)以太坊区块的 EVM 执行。我们可以编写更多的 SNARK 代码来验证区块的共识方面。这将是一个具有挑战性的工程问题:今天,ZK-EVM 需要几分钟到几小时来验证以太坊区块,并且实时生成证明需要一个或多个(i)改进以太坊本身以删除对 SNARK 不友好的组件,(ii) ) 要么通过专门的硬件获得巨大的效率提升,要么 (iii) 通过更多的并行化改进架构。然而,没有根本的技术原因不能做到这一点——所以我希望,即使需要很多年,它也会完成。 这是我们看到与多客户端范式交集的地方:如果我们使用 ZK-EVM 来验证 1 层,我们使用哪个 ZK-EVM? 我看到三个选项: 1、单一 ZK-EVM:放弃多客户端范式,并选择我们用来验证区块的单一ZK-EVM。 2、Closed multi ZK-EVM:就一组特定的多个 ZK-EVM 达成一致并达成共识,并有一个共识层协议规则,即一个区块需要来自该集合中超过一半的 ZK-EVM 的证明才能被认为是有效的. 3、Open multi ZK-EVM:不同的客户端有不同的 ZK-EVM 实现,每个客户端在接受一个区块为有效之前等待与自己的实现兼容的证明。 对我来说,(3)似乎是理想的,至少直到并且除非我们的技术改进到我们可以正式证明所有 ZK-EVM 实现彼此等效的程度,此时我们可以选择最重要的一个高效的。(1) 会牺牲多客户端范式的好处,并且 (2) 会关闭开发新客户端的可能性并导致更加中心化的生态系统。(3) 有挑战,但这些挑战似乎比其他两个选项的挑战要小,至少目前是这样。 实施 (3) 不会太难:每个类型的证明可能都有一个 p2p 子网络,使用一种类型证明的客户端将监听相应的子网络并等待直到他们收到证明他们的证明验证者认为有效。 (3) 的两个主要挑战可能如下: 延迟挑战:恶意攻击者可能会延迟发布一个区块,以及对一个客户端有效的证明。生成对其他客户有效的证明实际上需要很长时间(即使例如 15 秒)。这段时间足够长,可能会创建一个临时分叉并中断几个插槽的链。 数据效率低下:ZK-SNARKs 的一个好处是可以从区块中删除仅与验证相关的数据(有时称为“见证数据”)。例如,一旦你验证了一个签名,你就不需要将签名保存在一个区块中,你可以只存储一个表示签名有效的bit,以及区块中确认所有签名有效的单个证明。但是,如果我们希望能够为一个区块生成多种类型的证明,则需要实际发布原始签名。 在设计单slot最终确定性协议时要小心,可以解决延迟挑战。单slot最终确定性协议可能需要每个slot超过两轮的共识,因此可能需要第一轮包含区块,并且只需要节点在第三轮(或最后一轮)签署之前验证证明。这确保了在发布区块的截止日期和预计证明可用的时间之间始终有一个重要的时间窗口可用。 数据效率问题必须通过单独的协议来聚合与验证相关的数据来解决。对于签名,我们可以使用ERC-4337 已经支持的BLS聚合。另一大类与验证相关的数据是用于隐私的ZK-SNARKs 。幸运的是,这些往往有自己的聚合协议。 还值得一提的是,SNARK 验证 1 层有一个重要的好处:链上 EVM 执行不再需要由每个节点验证这一事实使得可以大大增加发生的 EVM 执行量。这可以通过大幅增加1 层gas限制或引入enshrined rollups或两者兼而有之。 结论 使一个开放的多客户端 ZK-EVM 生态系统运行良好需要大量的工作。但真正的好消息是,这项工作的大部分正在发生或无论如何都会发生: 我们已经有多个强大的ZK-EVM实现。这些实现还不是类型 1(完全等同于以太坊),但其中许多正在积极朝着这个方向发展。 在Helios和Succinct等轻客户端上的工作最终可能会变成对以太坊链的 PoS 共识端进行更全面的 SNARK 验证。 客户端可能会开始尝试使用 ZK-EVM 来证明自己的以太坊区块执行,特别是当我们有无状态客户端并且没有技术需要直接重新执行每个区块来维护状态时。我们可能会从客户端通过重新执行它们来验证以太坊区块,过渡到大多数客户端通过检查 SNARK 证明来验证以太坊区块。 ● ERC-4337 和 PBS 生态系统可能会很快开始使用 BLS 和证明聚合等聚合技术,以节省 gas 成本。在 BLS 聚合上,工作已经开始。 有了这些技术,未来看起来非常美好。以太坊区块会比今天更小,任何人都可以在他们的笔记本电脑甚至他们的手机或浏览器扩展程序中运行一个完全验证的节点,这一切都会发生,同时保留以太坊多客户端理念的好处。 从长远来看,当然任何事情都有可能发生。也许 AI 会加强形式验证,使其可以轻松证明 ZK-EVM 实现等效并识别导致它们之间差异的所有错误。这样的项目甚至可能是现在就开始着手的实用项目。如果这种基于形式验证的方法取得成功,则需要建立不同的机制以确保该议的政治去中心化持续进行;也许到那时,协议将被视为“完整的”,不变性规范将更加强大。但即使这是更长远的未来,开放的多客户端 ZK-EVM 世界似乎也是天然的下一步,无论如何都有可能发生。 从短期来看,这仍然是一段漫长的旅程。ZK-EVM就在这里,但 ZK-EVM 在1 层真正可行将需要它们成为类型 1,并使证明足够快以使其可以实时发生。有了足够的并行化,这是可行的,但要实现这一点仍然需要做很多工作。共识变化,如提高 KECCAK、SHA256 和其他哈希函数预编译的 gas 成本,也将是未来图像的重要组成部分。也就是说,过渡的第一步可能比我们预期的要早:一旦我们切换到Verkle树和无状态客户端,客户端就可以开始逐渐使用ZK-EVM,并且到“开放的多ZK-EVM”世界的过渡可以自行发生。 特别感谢 Justin Drake 的反馈和审阅 来源:金色财经
lg
...
金色财经
2023-04-03
以太坊主网Shapella升级官方公告:质押提款即将到来 我需要做什么?
go
lg
...
ELS) 中查看,它是用于执行层的新
Python
参考实现。 Capella升级 Capella 升级对共识层的修改详情在 capella 目录 的 v1.3.0-rc.3 规范里。README 清单中列出了完整的更改集。从高层次来讲,这次升级引入了: 验证者的完整和部分提款 BLSToExecutionChange消息,它允许使用 BLS_WITHDRAWAL_PREFIX的验证者把提款更新到ETH1_ADDRESS_WITHDRAWAL_PREFIX,这是提款的前提。 分开的状态和区块历史数据累加器,取代原来的单个的历史数据根 我们鼓励质押者都去阅读《提款 FAQ》,以了解更多关于验证者应该如何准备 Capella 的资讯。 Engine API 对 Engine API 的修改可以在 execution-apis repository 的 shanghai.md 文档里找到。简而言之,引入了 WithdrawalV1 结构,并添加了多个相关结构和方法。自 Merge 以来对执行层 API 的更改已经打包在仓库的最新版本中。 客户端版本 以下的客户端版本支持在以太坊主网的 Shanghai & Capella 升级。此前的 Shapella 升级客户端版本仅支持测试网的部署,与主网升级并不兼容。 当在选择运行哪个客户端时,验证者应该特别注意在执行层和共识层运行多数客户端的风险。关于这些风险以及他们的后果可以阅读这篇文章了解更多。而如果想预估当前执行层和共识层客户端的分布,以及了解如何从一个客户端切换至另一个客户端,则可以阅读这篇文章。 共识层主网升级版本 客户端 版本 链接 Lighthouse v4.0.1 https://github.com/sigp/lighthouse/releases/tag/v4.0.1 Lodestar v1.7.0 https://github.com/ChainSafe/lodestar/releases/tag/v1.7.0 Nimbus v23.3.2 https://github.com/status-im/nimbus-eth2/releases/tag/v23.3.2 Prysm v4.0.0 https://github.com/prysmaticlabs/prysm/releases/tag/v4.0.0 Teku v23.3.1 https://github.com/ConsenSys/teku/releases/tag/23.3.1 注意:运行一个验证者时,共识层信标节点和验证者客户端都必须更新至最新版本。 执行层主网升级版本 客户端 版本 链接 Besu v23.1.2 https://github.com/hyperledger/besu/releases/tag/23.1.2 Erigon v2.42.0 https://github.com/ledgerwatch/erigon/releases/tag/v2.42.0 go-ethereum (geth) v1.11.5 https://github.com/ethereum/go-ethereum/releases/tag/v1.11.5 Nethermind v1.17.3 https://github.com/NethermindEth/nethermind/releases/tag/1.17.3 注意:在 Erigon v2.41.0 中发现一个问题。此版本不适合 Shapella 升级。Erigon 用户应该升级到 v2.42.0。 FAQ 作为一个以太坊用户或者 ETH 持有者,我需要做什么? 简单来说,没有。 如果你使用交易所、数字钱包或硬件钱包,你不需要做任何事情,除非你的交易所或钱包提供商通知你采取额外的措施。 如果你运行自己的以太坊节点,请参阅下文。 作为一个非质押的节点运营商,我需要做什么? 为了与主网的 Shapella 升级兼容,请将你的节点更新到上文表中所列的以太坊客户端版本。 作为一个质押者,我需要做什么? 为了与主网的 Shapella 升级兼容,请将你的节点更新到上文表中所列的以太坊客户端版本。 我们建议你阅读《提款 FAQ》。 如果我是一个验证者或节点运行者,且不参加这次升级,会怎么样? 如果你使用的以太坊客户端没有更新到上面列出的最新版本,一旦升级发生,你的客户端将同步到分叉前的区块链上。 你将被困在一个不兼容的链上,遵循旧的规则,无法发送 ETH 或在 Shapella 升级后的以太坊网络上操作。 作为一个应用程序或工具开发者,我应该怎么做? Shapella 不会为智能合约引入不兼容的修改。应用程序和工具开发人员应审阅升级修改,以确保任何问题都解决了,或了解如何使用新引入的功能。 也就是说,应用程序开发者应该意识到在上海升级中,SELFDESTRUCT 操作码已被弃用。虽然它的语义没有在这次网络升级中进行更改,但在后续的升级中可能会更改。更多信息请参考 EIP-6049。 为什么叫 "Shapella"? 执行层的升级按照 Devcon 举办城市来起名,而共识层的升级则根据恒星名字来取。"Shapella" 是上海 (Devcon 2 的举办地) 和 Capella (Auriga 北方星座中最亮的星) 的结合。 哪里可以观看 Shapella 升级直播? EthStaker 和 Ethereum Cat Herders 会组织 Shapella 升级观看派对,在升级差不多开始前直播。你可以在这里收听。 感谢所有为 Shapella 升级做出贡献的人,感谢所有新旧质押者,感谢他们帮助保护了仍处于早期阶段的 PoS 以太坊! 封面图片由 Yiran Ding 原创,由 Tomo Saito 改编。 来源:金色财经
lg
...
金色财经
2023-03-30
Filecoin检索土星Saturn服务Treasury的规格(连载2)
go
lg
...
在运行。bookkeeper 是一个
python
脚本,它遍历 BigQuery 中的所有日志,并且:进行基本的欺诈检测。不规则报告被删除 欺诈检测后,计算收入+费用并将这些计算结果写入单独的 BigQuery 表 根据上述计算结果向客户发放款项并向客户收费。 簿记员将结果写入表:留下书面记录,以及 因此,如果事情因任何原因出现故障或失败,将来可以重新运行支出和收费 簿记员向 PayPal 提交付款,网站获得付款。如果簿记员已经支付给定站点一天的费用(基于非空数据库记录),则该站点将不会再次获得付款。这使我们能够随时重新运行簿记员以发出任何未付款或失败的付款。 簿记员向 stripe 提交费用,客户被收取费用。 来源:金色财经
lg
...
金色财经
2023-03-30
金色观察 | 以太坊基金会官方详解Shapella主网升级
go
lg
...
LS)中查看,这是一个新的用于执行层的
Python
实现参考。 Capella升级 关于Capella升级对共识层的更新细节在v1.3.0-rc.5规范中有具体规定。README罗列了全部更新之处。从较高层次来看,该升级将推出如下功能: · 验证者的全部和部分提款功能。 · BLSToExecutionChange消息——允许验证者使用BLS_WITHDRAWAL_PREFIX将其更新为ETH1_ADDRESS_WITHDRAWAL_PREFIX,这是提款的先决条件。 · 独立状态和区块历史累加器——用以取代原来的单一历史roots。 客户端版本 以下客户端版本支持以太坊主网的Shanghai升级和Capella升级。以前的Shapella版本只支持测试网部署,与主网升级不兼容。 选择要运行哪个客户端时,验证者应该特别注意在执行层(EL)和共识层(CL)上运行大多数客户端的风险。关于这些风险及其后果的解释可以在这里找到。还可以点击这里获取当前EL和CL客户端分布的预估情况以及客户端切换操作指南。 共识层主网发布 名称 版本 下载链接 Lighthouse v4.0.1 点击下载 Lodestar v1.7.0 点击下载 Nimbus v23.3.2 点击下载 Prysm v4.0.0 点击下载 Teku v23.3.1 点击下载 注意:运行验证者节点时,必须更新共识层信标节点和验证者客户端。 执行层主网发布 名称 版本 下载链接 Besu v23.1.2 点击下载 Erigon v2.41.0 v2.42.0 点击下载 go-ethereum (geth) v1.11.5 点击下载 Nethermind v1.17.3 点击下载 注意:已发现Erigon v2.41.0版本存在问题。此版本不适合Shapella升级。Erigon用户应该升级到v2.42.0版本。 FAQ (1)作为以太坊用户或以太坊持有者,我需要做些什么吗? 简单说,不需要。 如果你使用的是交易所、数字钱包或硬件钱包,你不需要做任何操作,除非你的交易所或钱包提供商通知你进行额外操作。 如果你运行的是你自己的以太坊节点,请参考下一个问题。 (2)作为非质押节点运营者,我需要做些什么吗? 想要与主网升级兼容,请将你的节点更新为上表所列的以太坊客户端版本。 (3)作为质押者,我需要做些什么吗? 想要与主网升级兼容,请将你的节点更新为上表所列的以太坊客户端版本。请确保你的信标节点和验证者客户端都已更新! 我们还建议你看一看提款FAQ。 (4)如果我是质押者或节点运营者,但我不参与升级,会发生什么? 如果你使用的以太坊客户端没有更新到最新版本(上面列出的),一旦发生升级,你的客户端将同步到分叉前的区块链。 你将被困在遵循旧规则的非兼容链上,你将无法发送以太币或操作Shapella升级后的以太坊网络。 (5)作为应用程序或工具开发人员,我应该做些什么? Shapella升级没有带来智能合约相关的突破性变化。应用程序和工具开发人员应该审查升级内容,以确保完成了所有问题修复,或者了解了如何使用新推出的功能。 也就是说,应用程序开发人员应该意识到,上海升级后,SELFDESTRUCT操作码已被视为弃用。虽然它的语义在这次网络升级中没有变化,但在后续的升级中可能会改变。详细信息请参见EIP-6049。 (6)为什么叫“Shapella”升级? 执行层的升级因Devcon城市名称得名,共识层的升级得名于恒星。“Shapella”是Devcon 2的举办地上海(Shanghai)和北方星座御夫座中最亮的恒星Capella 的组合。 (7)哪里可以观看Shapella升级直播? EthStaker和Ethereum Cat Herders正在举办Shapella升级直播派对,在升级上线之前不久开始直播。你可以在这里收看。 来源:金色财经
lg
...
金色财经
2023-03-29
Web3公司到底靠什么盈利?
go
lg
...
后端编程语言(如 Node JS 或
Python
)构建应用程序,并将其托管在由 AWS、Google Cloud Platform 等提供商提供的服务器上。 但在 Web 3 中,我们需要从 Alchemy 获取一个节点,并构建智能合约,然后部署在以太坊或 Polygon 上。 区块链商业模式有哪些不同类型? 1. 代币经济 — 实用代币商业模型 因此,所有的区块链技术都使用分布式账本技术(DLT),需要一致性,而代币是奖励代币矿工或代币持有者的机制之一。 例如:Basic Attention Token (BAT) BAT 代币与 Brave 浏览器配合使用,旨在提高安全性和隐私性。Basic Attention Token 允许采用新的广告收入模型,不再需要不断跟踪用户行为。Brave 用户可以选择查看广告以赚取 BAT。然后可以使用 BAT 来向其网站或 Twitter 上的内容创作者打赏。 但是这些公司如何发行这些代币呢? 这些公司会在其首次代币发行(1CO)时以折扣价格发行一些代币。 这些通常被早期采纳者购买,他们相信这些项目,并通过持有它们一段时间来赚钱。 但在购买任何实用型代币之前,请关注其代币经济学。 如果您仔细研究 Solana 的代币经济学,您会发现内部人员仍然持有 60%以上的通证,而以太坊基金会/内部人员仅持有 7-8%的代币。 2. 区块链即服务商业模型(BaaS) BaaS 是建立像亚马逊(AWS)一样的服务生态系统,但它是在 Web 3 空间中实现的。 例如:Polygon 区块链即服务(EBaaS)。 从开发到存储再到部署,AWS 拥有超过 200 种服务,涵盖您技术栈中的所有内容。 您可以使用 Amazon EC2 启动服务器,并使用 Amazon RDS 管理 SQL 数据库,在 Amazon S3 桶中存储静态文件等。 同样,Polygon 为 Web 3 生态系统提供了一系列产品。因此,无论您想出售 NFT 或加密货币,都可以利用它们的产品。 3. P2P 区块链商业模型 点对点(P2P)区块链使终端用户能够直接彼此交互,无需任何中介。 例如 - IPFS。 4. 基于区块链节点的聚合器 它们基本上是区块链的亚马逊,这意味着您只需对您喜欢的区块链进行 API 调用,即可使用该服务。 例如: Alchemy 是多种区块链的节点提供商,为与加密货币相关的软件提供监控、分析、警报、调试和日志记录等工具。 5. 网络费用收取 如果区块链商业模型对在网络上部署某些 dApp 的网络问题进行收费。 例如,以太坊和 NEO。 这些网络费用会向开发者收取以太坊和 NEO 以使其 dApp 上线。 来源:panews 撰写:《6 Amazing Blockchain business Models you must know(with examples)》by Navdeep Yadav 编译:深潮 TechFlow 来源:金色财经
lg
...
金色财经
2023-03-25
OpenAI官方解读ChatGPT插件:语言模型的“眼睛和耳朵”
go
lg
...
提供反馈。 代码解释器 一个可以使用
Python
处理上传和下载的实验性 ChatGPT 模型 我们为我们的模型提供了一个在 沙盒、防火墙执行环境中工作的
Python
解释器,以及一些临时磁盘空间。由我们的解释器插件运行的代码在一个持久会话中进行评估,该会话在聊天对话期间一直有效(具有上限超时),后续调用可以相互构建。我们支持将文件上传到当前对话工作区并下载您的工作结果。 执行逻辑计算的代码解释器插件 我们希望我们的模型能够使用它们的编程 技能为我们计算机的最基本功能提供更自然的接口。接触到以指尖的速度工作的非常热心的初级程序员可以使全新的工作流程变得轻松高效,并向新的受众开放编程的好处。 从我们最初的用户研究中,我们确定了使用代码解释器特别有用的用例: 解决定量和定性的数学问题 进行数据分析和可视化 在格式之间转换文件 我们邀请用户尝试代码解释器集成并发现其他有用的任务。 ChatGPT解释器插件演示 安全考虑 将我们的模型连接到编程语言解释器的主要考虑因素是对 执行进行适当的沙盒处理,以便 AI 生成的代码不会在现实世界中产生意外的副作用。我们在安全环境中执行代码,并使用严格的网络控制来防止外部互联网访问执行代码。此外,我们对每个会话都设置了资源限制。禁用互联网访问限制了我们代码沙箱的功能,但我们相信这是正确的初始权衡。第三方插件被设计为将我们的模型连接到外部世界的安全第一方法。 检索 开源检索插件使 ChatGPT 能够访问个人或组织信息源(经许可的)。它允许用户通过提问或用自然语言表达需求,从他们的数据源中获取最相关的文档片段,例如文件、笔记、电子邮件或公共文档。 作为一个开源和自托管的解决方案,开发人员可以部署他们自己的插件版本并在 ChatGPT 上注册。该插件利用OpenAI 嵌入并允许开发人员选择矢量数据库(Milvus、Pinecone、Qdrant、Redis、Weaviate或Zilliz)来索引和搜索文档。信息源可以使用 webhooks 与数据库同步。 首先,访问检索插件存储库。 ChatGPT检索插件演示 安全考虑 检索插件允许 ChatGPT 搜索内容矢量数据库,并将最佳结果添加到 ChatGPT 会话中。这意味着它没有任何外部影响,主要风险是数据授权和隐私。开发人员应该只将他们有权使用的内容添加到他们的检索插件中,并且可以在用户的 ChatGPT 会话中共享。 第三方插件 一个知道何时以及如何使用插件的实验模型 ChatGPT中的第三方插件 第三方插件由清单文件描述,其中包括插件功能的机器可读描述以及如何调用它们,以及面向用户的文档。 示例:用于管理todo事项的插件的清单文件 创建插件的步骤是: 使用您希望语言模型调用的端点构建 API(这可以是新的 API、现有的 API 或围绕专门为 LLM 设计的现有 API 的包装器)。 创建一个记录您的 API 的 OpenAPI 规范,以及一个链接到 OpenAPI 规范并包含一些特定于插件的元数据的清单文件。 在chat.openai.com上开始对话时,用户可以选择他们想要启用的第三方插件。有关已启用插件的文档作为对话上下文的一部分显示给语言模型,使模型能够根据需要调用适当的插件 API 来实现用户意图。目前,插件是为调用后端 API 而设计的,但我们正在探索也可以调用客户端 API 的插件。 ChatGPT第三方插件演示 ChatGPT 插件开发者体验 未来 我们正在努力开发插件并将它们带给更广泛的受众。我们有很多东西要学,在大家的帮助下,我们希望构建一些既有用又安全的东西。 文章来源:https://openai.com/blog/chatgpt-plugins 来源:金色财经
lg
...
金色财经
2023-03-24
ChatGPT插件功能最令人震动的地方:自然语言编程
go
lg
...
能走通,如果这成为行业标准,那么……
Python
终于没有存在的意义了。 来源:金色财经
lg
...
金色财经
2023-03-24
一文读懂分布式超级计算机Muon Network | veDAO研究院
go
lg
...
应用程序容器中运行高级、防篡改的计算(
Python
、Java、C、C++、Rust 等)。运行同一个应用程序的节点可以协同工作,形成一个去中心化的超级计算机。这也使得创建Muon Keepers成为可能,它能够根据链上或链下事件在链上执行交易,创造一个安全但高度优化和自动化的环境。这是目前区块链基础设施无法做到的。 可定制且具有成本效益:节点不需要运行所有应用程序,它们可以轻松地选择加入或退出他们想其机器上运行的程序。随着时间的推移,我们将开始看到网络中可用节点类型之间的划分: 专用节点:运行特定应用程序的节点 通用(普通)节点:运行(几乎)所有应用程序的节点 因此,Web3.0 开发人员现在可以在此配置产生的权衡之间进行转换:安全性与速度。节点的硬件要求也可以与目前的软件要求相比较,每个MuonApp都可以根据自己的喜好有自己的节点要求,当然也有明显的 "最低要求"。例如在你的windows机器上运行Muon核心,但真正的节点要求将基于你想安装的MuonApps,如果在你的机器上安装更多的MuonApps那将会产生更多的请求,最终也会产生更多的Muon交易费用。更多关于运行Muon节点的最低要求以及最初的MuonApp要求和潜在的 "Muon App Store "更新的信息将在代币发行后公布。 团队以及合作伙伴 Muon Network是由全球各地30多名经验丰富的工程师团队组合而成。例如:其中一位联合创始人Lafayette Tabor,一个在区块链和编程领域非常有经验和知识的工程师,同时是DEUS Finance协议的联合创始人和项目负责人,元宇宙及沉浸式虚拟体验服务提供商Infinite Holding Limited的CEO兼CTO,以及Bitstamp比特币交易所的独立加密货币研究者。 目前,muon已经洽谈许多合作项目,且已经发布了多版本测试网,支持合作伙伴运行节点并部署项目。目前已经有项目在测试网运:DEUS:可以交易多种股票的区块链defi协议;NFTD:跨链NFT协议;FEAR:游戏开发机构,目前已经在Muon搭建了多款游戏;以及本次IDO的合作伙伴DAO Maker等。 经济模型 $MUON代币构成了网络的骨干,旨在以最有效的方式激励网络参与者,并最大限度地提高网络价值,包括技术开发、营销/社区和网络激励。其主要实用程序以及长期经济效用: 节点操作:为了保护网络免遭受潜在的欺诈活动,这些节点需要投入一定数量的$MUON作为抵押品。当网络成为公共网络时,节点运营商将有资格获得$MUON的网络奖励,作为其保持网络安全和分散的服务的激励。 网络费用:$MUON的用途也与其他Gas代币相同。Muon网络的用户支付用于支付节点运营商的费用,以激励他们继续验证网络上的数据。 流动性:$MUON将在多个链和市场(包括CEX和DEX)推出。在DEX上市将为用户提供用其$MUON提供流动性的机会,并因此获得奖励。 DAO治理:未来Muon DAO治理结构将是一个分散的倡议,围绕Muon方向进行决策。希望在项目中拥有更大发言权的$MUON持有者将能够为DAO做出贡献。 $MUON的总供应量为10亿枚,分配图以及具体内容如下: 30%(3亿枚)- 生态系统奖励:用于激励节点运营商和其他网络活动的奖励 19%(1.9亿枚)- 开发、项目和团队:用于开发、项目和Muon团队的代币供应 17%(1.7亿枚)- LP 存款/激励、做市和质押:用于激励在多个市场(包括中心化和去中心化交易所)上深度交易 $MUON,以及对持有者的质押激励 7%(7000万枚)- 天使轮:分配给社区预售以及其他早期销售的代币 9%(9000万枚)- 营销和储备:用于信息/营销活动/事件的资金 + 储备代币资金 6%(6000万枚)- 种子轮:分配给为项目提供初期资金的早期投资者 6%(6000万枚)- 合作伙伴和顾问:分配给选定的早期项目合作伙伴和顾问的代币 6%(6000万枚)- SHO(DAO Maker 社区预售):用于DAO Maker的社区预售SHO(Strong Hands Offering)的代币供应。 $MUON的总供应量归属期为4年(48个月),每组都有定期解锁。以下是$MUON的归属和释放时间表的图片介绍和细节。 所有社区投资轮(种子+天使+SHO)的10%将在启动时被解锁;这些将在27个月内完全解锁。(这将包括社区预售。) 4450万个代币(总供应量的4.45%)将在启动时被解锁。4周后,这将增加到7400万(7.4%)。 开发和合作伙伴的代币在1年后才会被解锁,并需要整整4年时间才能完全解锁。 虽然理论上MUON的总供应量为10亿,但节点运营商的生态系统激励将在很长一段时间内释放(估计在4-10年之间)。 即将在DAO Maker上IDO Muon Network将在DAO Maker上进行IDO,本次IDO模式是SHO(Strong Holder Offering),即只有通过严格筛选和抽签的参与者才能购买MUON代币,此次IDO的总供应量为6000万枚,单价0.03美元/MUON。该项目属于Web3.0+基础设施赛道,通过搭建聚合网络的方式来实现跨链系统和预言机系统,客观上赛道优质,和目前的基础设施项目形成错位竞争。后续IDO日期确定后,我们也会持续关注未来$MUON价格走势。如果你对Muon Network IDO感兴趣想要更加深入了解它,以下媒介可以供你探索: 官网地址:https://www.muon.net/ 官方推特:https://twitter.com/muon_net Discord:https://discord.com/invite/rcK4p8g7Ce Gitbook:https://docs.muon.net/muon-network/ 关注我们 veDAO是一个由DAO主导的去中心化投融资平台,将致力于发掘行业最有价值的信息,热衷于挖掘数字加密领域的底层逻辑和前沿赛道,让组织内每一个角色各尽其责并获得回报。 Website: http://www.vedao.com/Twitter: https://twitter.com/vedao_officialFacebook:bit.ly/3jmSJwNTelegram:t.me/veDAO_zhDiscord:https://discord.gg/NEmEyrWfjV ?投资有风险,项目仅供参考,风险请自担哦? 来源:金色财经
lg
...
金色财经
2023-03-22
剖析六种 EVM 语言:优秀的语言要如何设计
go
lg
...
per Vyper 是一种语法类似于
Python
的高级语言。它几乎是
Python
的一个子集,只有一些小的不同。它是第二受欢迎的 EVM DSL。Vyper 针对安全性、可读性、审计能力和 Gas 效率进行了优化。它不采用面向对象模式、内联汇编,并且不支持代码重用。它的编译器是用
Python
编写的。 存储在持久性存储器中的变量是在文件级别声明的。如果它们的值在编译时已知,可以将它们声明为「constant(常量)」;如果它们的值在部署时已知,则可以将它们声明为「immutable(不变量)」;如果它们被标记为 public,则最终合约将为该变量公开一个只读函数。常量和不变量的值通过它们的名称在内部访问,但是持久性存储器中的可变量可以通过在名称前面添加「self.」来访问。这对于防止存储变量、函数参数和局部变量之间的命名空间冲突非常有用。 和 Solidity 类似,Vyper 也使用函数属性来表示函数的可见性和可变性。被标记为「@external」的函数可以通过「call」指令从外部合约访问。被标记为「@internal」的函数只能在同一合约中访问,并且必须以「self.」为前缀。被标记为「@pure」的函数不能从执行环境或持久存储中读取数据,也不能写入持久存储或创建任何副作用。被标记为「@view」的函数可以从执行环境或持久存储中读取数据,但不能写入持久存储或创建副作用。被标记为「@payable」的函数可以读取或写入持久存储,创建副作用,接受收 ETH。没有声明这个可变性属性的函数默认为 non-payable,也就是说,它们和 payable 函数一样,但不能接收 ETH。 Vyper 编译器还选择将局部变量存储在内存中而不是堆栈上。这使得合约更加简单和高效,并解决了其他高级语言中常见的「堆栈过深」的问题。但是,这也带来了一些折衷。 另外,由于内存布局必须在编译时知道,因此动态类型的最大容量也必须在编译时知道,这是一个限制。此外,分配大量内存会导致非线性的 Gas 消耗,正如 EVM 概述部分中提到的。但是,对于许多用例来说,这个 Gas 成本可以忽略不计。 虽然 Vyper 不支持内联汇编,但它提供了更多内置函数,以确保几乎每个 Solidity 和 Yul 中的功能在 Vyper 中也可以实现。通过内置函数可以访问低级位运算、外部调用和代理合约操作,通过编译时提供覆盖文件可以实现自定义存储布局。 Vyper 没有丰富的的开发工具套件,但它有更紧密集成的工具,并且也可以插入到 Solidity 开发工具中。值得关注的 Vyper 工具包括 Titanaboa 解释器,它具有许多与 EVM 和 Vyper 相关的内置工具,可用于实验和开发,以及 Dasy,一种基于 Vyper 的 Lisp,具有编译时代码执行功能。 下面是用 Vyper 编写的一个简单合约: Fe Fe 是一种类似 Rust 的高级语言,目前正在积极开发中,大部分功能尚未推出。它的编译器主要用 Rust 编写,但使用 Yul 作为其中间表示形式(IR),依赖于用 C++ 编写的 Yul 优化器。随着 Rust 原生后端 Sonatina 的加入,这一点有望改变。Fe 使用模块进行代码共享,因此不使用面向对象的模式,而是通过基于模块的系统重用代码,在模块内声明变量、类型和函数,可以以类似于 Rust 的方式进行导入。 持久存储变量在合约级别声明,如果没有手动定义的 getter 函数则不可公开访问。常量可以在文件或模块级别声明,并且可以在合约内部访问。当前不支持不可变的部署时变量。 方法可以在模块级别或合约内声明,默认是 pure 和 private。要使合约方法公开,必须在定义前加上「pub」关键字,这使得它可以在外部访问。要从持久化存储变量中读取,方法的第一个参数必须是「self」,在变量名前加上「self.」,使该方法具有只读访问本地存储变量的权限。要读取和写入持久化存储,第一个参数必须是「mut self」。「mut」关键字表示合约的存储在方法执行期间是可变的。访问环境变量是通过将「Context」参数传递给方法来完成的,通常命名为「ctx」。 函数和自定义类型可以在模块级别声明。默认情况下,模块项都是私有的,除非加上「pub」关键字才能访问。但是,不要和合约级别的「pub」关键字混淆。模块的公共成员只能在最终合约或其他模块内部访问。 Fe 暂时不支持内联汇编,相反,指令由编译器内部函数或在编译时解析为指令的特殊函数包装。 Fe 遵循 Rust 的语法和类型系统,支持类型别名、带有子类型的枚举、特征和泛型。目前这方面的支持还有限,但正在进行中。特征可以针对不同类型进行定义和实现,但不支持泛型,也不支持特征约束。枚举支持子类型,并可以在其上实现方法,但不能在外部函数中对其进行编码。尽管 Fe 的类型系统仍在发展中,但它在为开发人员编写更安全、编译时检查的代码方面显示出了很大的潜力。 下面是用 Fe 编写的一个简单的合约: Huff Huff 是一种汇编语言,具有手动堆栈控制和对 EVM 指令集的最小化抽象。通过「#include」指令,编译时可以解析任何包含的 Huff 文件,从而实现代码重用。最初由 Aztec 团队编写用于极度优化的椭圆曲线算法,编译器后来被用 TypeScript 重写,然后又被用 Rust 重写。 常量必须在编译时定义,目前不支持不可变量,并且语言中没有显式定义持久性存储变量。由于命名存储变量是高级抽象,因此在 Huff 中写入持久性存储是通过操作码 「sstore」 写入和 「sload」读取。自定义存储布局可以由用户定义,也可以按照惯例从零开始并且每个变量递增使用编译器内在的「FREE_STORAGE_POINTER」。使存储变量外部可访问需要手动定义一个可以读取并返回变量给调用者的代码路径。 外部函数也是高级语言引入的抽象,因此在 Huff 中没有外部函数的概念。但是,大多数项目在不同程度上遵循其他高级语言的 ABI 规范,最常见的是 Solidity。一个常见的模式是定义一个「调度程序」,加载原始调用数据并使用它来检查是否匹配函数选择器。如果匹配,则执行其后续代码。由于调度程序是用户定义的,因此它们可能遵循不同的调度模式。Solidity 按名称字母顺序对其调度程序中的选择器进行排序,Vyper 按数字顺序排序并在运行时执行二进制搜索,大多数 Huff 调度程序按预期的函数使用频率排序,很少使用跳转表。目前,跳转表在 EVM 中不被原生支持,因此需要使用类似「codecopy」的内省指令才能实现。 内部函数使用「#define fn」指令定义,可以接受模板参数以提高灵活性,并指定函数开始和结束时的预期堆栈深度。由于这些函数是内部的,因此无法从外部访问,在内部访问需要使用「jump」指令。 其他控制流程,例如条件语句和循环语句可以使用跳转目标定义。跳转目标是由标识符后跟冒号定义的。可以通过将标识符压入堆栈并执行跳转指令来跳转到这些目标。这在编译时解析为字节码偏移量。 宏由「#define macro」定义,其他方面与内部函数相同。关键区别在于宏不会在编译时生成「jump」指令,而是将宏的主体直接复制到文件中的每个调用中。 这种设计权衡了减少任意跳转与运行时 Gas 成本之间的关系,代价是调用多次时代码的大小增加。「MAIN」 宏被视为合约的入口,并且其主体中的第一条指令将成为运行时字节码中的第一条指令。 编译器内置的其他特性还包括为日志记录生成事件哈希、为调度生成函数选择器、为错误处理生成错误选择器以及内部函数和宏的代码大小检查器等。 注意:「// [count]」之类的堆栈注释不是必需的,它们只是用于指示该行执行结束时的堆栈状态。 下面是用 Huff 编写的一个简单合约: ETK EVM 工具包(ETK)是一种具有手动堆栈管理和最小化抽象的汇编语言。代码可以通过「%include」和「%import」指令进行重用,编译器是用 Rust 编写的。 Huff 和 ETK 之间的一个显着区别是,Huff 为 initcode 添加了轻微的抽象,也称为构造函数代码,这些代码可以通过定义特殊的「CONSTRUCTOR」宏来覆盖。在 ETK 中,这些不会被抽象化,initcode 和运行时代码必须一起定义。 与 Huff 类似,ETK 通过「sload」和「sstore」指令读写持久性存储。然而,没有常量或不可变关键字,但是可以使用 ETK 中的两种宏之一来模拟常量,即表达式宏。表达式宏不会解析为指令,而是生成可用于其他指令中的数字值。例如,它可能不会完全生成「push」指令,但可能会生成一个数字以包含在「push」指令中。 如前所述,外部函数是高级语言概念,因此在外部公开代码路径需要创建函数选择器调度程序。 内部函数不像其他语言那样可以显式定义,而是可以为跳转目标指定用户定义的别名,并通过其名称跳转到它们。这也允许其他控制流,例如循环和条件语句。 ETK 支持两种宏。第一种是表达式宏,可以接受任意数量的参数并返回可用于其他指令的数字值。表达式宏不生成指令,而是生成立即值或常量。然而,指令宏接受任意数量的参数,并在编译时生成任意数量的指令。ETK 中的指令宏类似于 Huff 宏。 下面是 ETK 用编写的一个简单合约: Yul Yul 是一种具有高级控制流和大量抽象的汇编语言。它是 Solidity 工具链的一部分,并可以选择在 Solidity 编译通道中使用。 Yul 不支持代码重用,因为它旨在成为编译目标而不是独立语言。它的编译器是用 C++ 编写的,计划将其与 Solidity 通道的其余部分一起迁移到 Rust。 在 Yul 中,代码被分成对象,这些对象可以包含代码、数据和嵌套对象。因此,Yul 中没有常量或外部函数。需要定义函数选择器调度程序才能将代码路径公开到外部。 除了堆栈和控制流指令外,大多数指令在 Yul 中都作为函数公开。指令可以嵌套以缩短代码长度,也可以分配给临时变量,然后传递给其他指令使用。条件分支可以使用「if」块,如果值为非零,则执行该块,但没有「else」块,因此处理多个代码路径需要使用「switch」处理任意数量的情况和「default」后备选项。循环可以使用「for」循环执行;虽然其语法与其他高级语言不同,但提供了相同的基本功能。可以使用「function」关键字定义内部函数,并且与高级语言的函数定义类似。 Yul 中的大多数功能在 Solidity 中使用内联汇编块公开。这允许开发人员打破抽象,编写自定义功能或在高级语法中不可用的功能中使用 Yul。但是,使用此功能需要深入了解 Solidity 在 calldata、memory 和 storage 方面的行为。 还有一些独特的函数。 「datasize」,「dataoffset」和「datacopy」函数通过其字符串别名操作 Yul 对象。 「setimmutable」和「loadimmutable」函数允许在构造函数中设置和加载不可变参数,尽管它们的使用受到限制。 「memoryguard」函数表示只分配给定的内存范围,从而使编译器可以使用超出保护范围的内存进行附加优化。最后,「verbatim」允许使用 Yul 编译器不知道的指令。 下面是用 Yul 编写的一个简单合约: 优秀 EVM DSL 的特性 一个优秀的 EVM DSL 应该从这里列出的每种语言的优缺点中学习,还应该包括几乎所有现代语言中的基础,如条件语句、模式匹配、循环、函数等等。代码应该是明确的,为了代码美观或可读性而添加最少的隐式抽象。在高风险、正确性至关重要的环境中,每行代码都应该是明确可解释的。此外,一个定义良好的模块系统应该是任何伟大语言的核心。它应该清楚地说明哪些项定义在哪个作用域中,以及哪些可以访问。默认情况下,模块中的每个项都应该是私有的,只有显式公共项才能在外部公开访问。 在 EVM 这样的资源受限环境中,效率很重要。效率通常通过提供低成本的抽象来实现,如通过宏进行编译时代码执行,丰富的类型系统来创建设计良好的可重用库以及常见的链上交互包装器。宏在编译时生成代码,这对于减少常见操作的样板代码非常有用,在像 Huff 这样的情况下,它可用于在代码大小与运行时效率之间进行权衡。丰富的类型系统允许更具表现力的代码、更多的编译时检查以在运行时之前捕获错误,并且当与类型检查的编译器内部函数结合使用时,可能会消除大部分内联汇编的需求。泛型还允许可空值(例如外部代码)被包装在「选项」类型中,或者易出错的操作(例如外部调用)被包装在「结果」类型中。这两种类型是库编写者如何通过定义代码路径或恢复失败结果的事务来强制开发人员处理每个结果的示例。然而,请记住,这些是编译时抽象,会在运行时解析为简单的条件跳转。强制开发人员在编译时处理每个结果会增加初始开发时间,但好处是运行时的意外情况要少得多。 灵活性对于开发人员也很重要,因此,虽然复杂操作的默认情况应该是安全且可能不那么高效的路线,但有时需要使用更高效的代码路径或不支持的功能。为此,应该向开发人员开放内联汇编,而且没有护栏。Solidity 的内联汇编为了简单和更好的优化器传递设置了一些护栏,但是当开发人员需要完全控制执行环境时,他们应该被授予这些权利。 一些可能有用的功能包括可以在编译时操作函数和其他项的属性。例如,「inline」属性可以将简单函数的主体复制到每个调用中,而不是为了效率创建更多的跳转。而「abi」属性可以允许手动覆盖给定外部函数生成的 ABI,以适应不同代码风格的语言。此外,还可以定义一个可选的函数调度器,允许在高级语言内进行定制,以便对预期更常用的代码路径进行额外的优化。例如,在执行「name」之前检查选择器是否为「transfer」或「transferFrom」。 结论 EVM DSL 设计任重而道远。每种语言都有自己独特的设计决策,我期待看到它们在未来如何发展。作为开发人员,学习尽可能多的语言符合我们的最大利益。首先,学习多种语言并了解它们的不同之处和相似之处将加深我们对编程和底层机器体系结构的理解。其次,语言具有深远的网络效应和强大的保留特性。毫无疑问,大型参与者都在构建自己的编程语言,从 C#、Swift 和 Kotlin 到 Solidity、Sway 和 Cairo。学习在这些语言之间无缝切换为软件工程职业提供了无与伦比的灵活性。最后,重要的是要了解每一种语言背后都需要付出大量的工作。没有人是完美的,但无数有才华的人付出了大量努力,为像我们这样的开发者创造安全愉快的体验。 来源:DeFi之道 来源:金色财经
lg
...
金色财经
2023-03-19
百度产品展示 文心一言露怯
go
lg
...
写代码能力,给出的评价是“一般般”,“
Python
语言还可以,其他语言就不太行了。”他还测试了文心一言是否具有GPT-4的角色扮演能力,结论是“没办法”。 聚焦企业客户 以用户反馈促迭代 “从我自己的内测体验看,文心一言确实也不能叫作完美。”李彦宏谦虚了一下又说,“但是,为什么今天要发布?”屏幕前一定有人以为他要说竞争、要说文心一言的出品难度,没想到的是,他自问完自答:因为有市场需求。 他说,百度的各个产品线,从搜索、智能云到自动驾驶、到小度都等着要用这样的的技术,“更重要的是,我们的客户、我们的合作伙伴在等着用这样的技术,大家都在催,我们需要尽早的将它发布出来。” 一句话,李彦宏道出了文心一言的企业级场景,客户、合作伙伴成为重中之重,背后的一页PPT里写着,“文心一言让每一家公司都离客户更近”。 李彦宏解释大模型的产业机会 在解释文心一言以及底层的文心大模型会带来哪些创业机会和投资机会时,李彦宏说,大模型将带来三大产业机会,包括新型云计算、行业模型精调和应用开发,而有关文字、图像、音视频生成、数字人、3D生成等的应用开发是“最大的机会”。 万众期待的文心一言发布会在这一刻如同一场“商业路演”,坐等客户上门。而在这场发布会之前的一个月里,几百家企业纷纷官宣加入了文心一言生态,百度给出的数据是650多家。 To B或许是文心一言的重要优势,毕竟,这个产品是集合了百度多个大模型的产物,包括ERNIE和PLATO,而这两个模型都产出过多个企业级模型,场景涵盖金融、医疗、航天、媒体、汽车等等。文心一言给企业用,简直是水到渠成。 此前,有两家“官宣”的公司告诉《元宇宙日爆》,“先占坑,测试后再看怎么用。”企业需求到底有多强烈,还有待观察。观察的窗口期也开始了,在发布会上,百度CTO王海峰当场宣布,“邀请测试”当天启动,获得邀请码即可参与测试,包括合作伙伴和个人。 很快,文心一言的测试入口开通,当然,需要邀请码才能开测。当晚10点,百度发布了文心一言的“邀测”喜报,申请调用的企业为6.5万家。 测试Demo是提前录制的,真实的测试将在有限的用户中展开,文心一言到底强不强,测试用户心里会有数。那么个人用户如何获得邀测权限?百度公布方案: 在测试入口网站点击“立即体验”,参与排队。更广泛的个人用户想要用到这个产品,大概率要等它正式上线了。 百度倒不是不重视C端,发布会上,李彦宏说了,大语言模型这种产品,一旦发布出来,就会获得真实用户的反馈,“有了这些反馈,它迭代的速度、能力的提升就会非常快。” 可见,“真实用户中”的C端也有他的价值,为文心一言的大模型贡献“反馈”,提升它的迭代速度与能力。希望这个贡献对C端是免费的,这样又能与ChatGPT产生差异化。毕竟,那个“外国AI”要向体验GPT-4模型的用户收Plus版的订阅费。 来源:DeFi之道 来源:金色财经
lg
...
金色财经
2023-03-18
上一页
1
•••
23
24
25
26
27
•••
30
下一页
24小时热点
中美重大信号!美国财长贝森特:美中已经具备达成协议的条件
lg
...
“美国恐迎史上最严重经济危机”!传奇投资人罗杰斯清空美股 已显著增持这一贵金属
lg
...
中国突然祭出意外举动!中国将对债券利息收入征税 此前数十年一直免税
lg
...
中国突传重磅!华尔街日报独家:中国正在掐断对西方国防公司的关键矿产供应
lg
...
非农爆雷引发金价惊人暴涨行情!两张图看黄金技术前景 投资者如何获利了结?
lg
...
最新话题
更多
#Web3项目情报站#
lg
...
6讨论
#SFFE2030--FX168“可持续发展金融企业”评选#
lg
...
36讨论
#链上风云#
lg
...
111讨论
#VIP会员尊享#
lg
...
1989讨论
#CES 2025国际消费电子展#
lg
...
21讨论