From 67a60e7b3f1ccec0fcbdb2b46109bd5a07bb4b38 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:16 -0800 Subject: [PATCH 001/581] update(i18n): public/content/translations/zh/community/events/organizing/index.md --- .../zh/community/events/organizing/index.md | 221 ++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 public/content/translations/zh/community/events/organizing/index.md diff --git a/public/content/translations/zh/community/events/organizing/index.md b/public/content/translations/zh/community/events/organizing/index.md new file mode 100644 index 00000000000..553f2e6bbe0 --- /dev/null +++ b/public/content/translations/zh/community/events/organizing/index.md @@ -0,0 +1,221 @@ +--- +title: 组织一次以太坊事件 +description: 如何组织一次以太坊活动 +lang: zh +hideEditButton: true +--- + +# 如何组织一次以太坊活动{#how-to-organize-an-ethereum-event} + +建立强大且充满活力的社群是以太坊生态系统成长的核心。 无论您是打算组织聚会、研讨会或大型会议,活动的成功举办都有赖于当地社交网络的连接与参与。 这个指南将协助您为一个活跃的以太坊社群奠定基础,并一步一步带领您组织一个难忘又有影响力的会议。 + +## 问问自己,有以太坊社群吗? {#ask-yourself-is-there-an-ethereum-community} + +一个成功的以太坊会议建立在一个活跃且参与度高的社群上。 如果你已经有了一个社群,那你就率先走在了这场游戏的前列——但如果你还没有,最重要的前期步骤就是打好这个基础。 重要的是要区分一个现场和社区:现场可能包括某个领域的公司和个人,但他们往往独立运作,只是偶尔联合开展活动--就像许多地方的传统web2生态系统一样。 另一方面,社区是一个由相互联系的人们和组织构成的网络,他们相互协作、相互支持,这在web3生态系统中经常可以看到。 + +**你的第一步应该是:** + +- 探索当地的初创企业和公司——在你所在的城市或国家拥有强大、活跃的公司往往是建立社区最关键的先决条件。 +- 查看是否已经有一些聚会——以太坊官网[活动页面](https://ethereum.org/community/events/) +- [以太坊官网](https://ethereum.org/community/events/) 和 ethereum.org Discord——查看当地是否有以太坊的活动、开发者和贡献者。 +- Luma 和 Meetup.com——查看您所在地区是否有与以太坊相关的活动或更广泛的 Web3 活动。 +- X——尽量在Spaces上寻找支持者或有影响力的人。 + +如果您发现了这些要素中的大多数,这就充分说明已经具备了建立社区的条件,但并不一定说明社区已经可以建立起来了。 下一步的关键工作是组织、吸引和培养这些参与者,为合作和长期发展创造机会。 + +### 如果没有这些要素,如何构建社群 {#if-not-how-to-build-it} + +如果你发现缺少许多要素,不要担心——从头开始建立一个社群是一个充满挑战但回报丰厚的过程。 一个强大的以太坊社区不会一蹴而就;它需要耐心、一致性和清晰的愿景。 您可以从这些步骤开始: + +- **建立一个交流渠道**——可以是 Telegram、Signal、WhatsApp、微信或 Discord 服务器,只要是你所在的地方比较流行的媒体,人们就可以由此联系、提问和共享资源。 +- \*\* 找到你的早期使用者\*\* 找出一些对以太坊和 Web3 充满热情的人。 他们将成为你的核心支持者和合作伙伴。 +- **举办小型、定期的活动。** 从非正式的聚会、学习小组或工作坊开始。 一致性是关键——即使初期规模不大,定期举办活动也能建立信任并形成势头。 +- **尝试联系当地企业**、教育机构或共享办公空间,看能否获得免费场地支持。 若无法在本国找到演讲者,可邀请线上的演讲者,但需线下聚集人群。 让观众聚集在同一个物理空间至关重要。 +- \*\*与现有技术社群合作。\*\*若已有开发者团体、初创企业生态圈或区块链聚会活动,可与其建立合作关系,引入以太坊相关议题并扩大影响力。 +- **分享关于以太坊潜力的教育内容**。 +- **拓展全球社群网络。** 联系全球成熟的以太坊团体与项目,获取支持、指导及潜在合作机会。 全球以太坊社区至少有一个共同点:他们都热衷于提供帮助。 +- **尝试争取资金支持**——无论是来自本地Web3企业,还是通过某些资助项目,例如[ESP](https://esp.ethereum.foundation/)。 + +### 如果成功获取了资金,如何维持并扩大规模 {#if-yes-how-to-maintain-and-grow-it} + +建立了社群之后,工作也就不会停止——事实上,这才刚刚开始。 要保持社区活跃、参与度高且持续发展,需要持续的努力和创造力。 保持社区参与的关键要素之一,就是你应该不断尝试新的形式和创意。 + +以下是一些保持以太坊社区蓬勃发展的策略: + +- **丰富活动形式:** 不要只局限于一种聚集的模式。 通过线下聚会、简短的黑客松、专题讨论会和社交活动来搞点新花样。 你可以尝试组织大家一同工作的日子或教育课程。 +- \*\*拓展议题:\*\*以太坊不仅是一项技术,更是一套涵盖法律、营销和商业领域的价值体系。 +- **询问你社区**的反馈和想法。 +- **与不同受众群体互动**。 根据受众差异化的经验水平定制内容和活动——从初次探索以太坊的新手,到经验丰富的开发者和创业者。 + +通过提供多样化的学习、协作与成长机会,您能确保社区保持活跃状态,随时准备迎接更大型的活动,例如组织会议。 + +## 活动{#event} + +### 何时是举办活动的最佳时机? {#when-is-the-right-time-to-organize-an-event} + +成功举办以太坊会议或社区活动需要精心安排时间且考虑周全。 恰当的时机取决于多种因素,这些因素共同促成了活动从整体上来说的成功。 + +你应综合考量社区发展成熟度、市场环境、团队组建情况以及当地生态圈的活跃度(例如潜在赞助商资源)。 + +### KYC — 了解你的社区 {#kyc-know-your-community} + +组织活动最重要的步骤之一就是了解你的社区。 正如金融服务中的“了解你的客户”(KYC),“了解你的社区”(KYC)意味着花时间去理解本地受众的具体需求、偏好和特征。 这种理解将有助于您量身定制会议内容,确保其成功与内容相关性。 + +虽然立即策划大型活动听起来颇具诱惑,但从小的活动着手往往是最佳策略。 若你客观审视社区的现状及某些看似无关的因素——例如:你的国家是否是热门旅游目的地,或者住宿的成本怎么样——你自会明白何为最佳解决方案。 + +在第一年,你的受众群体主要来自本地社区,因此筹办大型活动时,所有工作都应围绕该社区的需求和规模展开。 + +### 从哪里开始 {#where-to-start} + +在筹办会议时,最初要做什么往往令人不知所措。 但只要制定清晰的计划和框架,你就能将整个过程分解为可控的任务。 我们将逐一分析它们。 + +采用结构化的方法开始筹备,将有助于你在推进活动筹备的各个阶段时保持清晰的条理,从而减轻压力。 您所做的每个决定都应让您更接近于提供满足社区需求的体验。 + +**首要任务是组建一支职责分工明确的组织团队。** + +在开始构建程序或联系赞助商之前,另一个重要步骤是选择日期。 虽然这听起来像是一个简单的步骤,但在实施之前,你应该考虑几个重要的因素。 其中的一些因素是: + +- **避免与重要会议或活动日期冲突** +- **考虑当地条件和情况**(例如一年中的季节、主要节日等) +- **考虑市场条件** +- **给自己充足的时间来安排一切**——至少九个月 + +### 如何组建一个团队 {#how-to-assemble-a-team} + +选择那些与你志同道合、能互补你技能的人。 有些团队以集体形式运作,有些则设有明确分工——找出最适合你的方式。 保持定期沟通并明确期望至关重要。 尽管人们很想依赖通讯平台来策划活动,但我们建议选择任务管理平台(例如Notion、Basecamp、Trello、Asana,甚至经典的Google表格)来统筹安排并追踪各项待办事项。 拥有一个运作良好且组织有序的团队至关重要。 + +不同的以太坊组织团队在各自团队中承担着不同的职责,但都包含负责后勤、预算、市场营销、项目策划、设计以及合作伙伴关系的人员。 + +### 活动方案:成功活动的关键要素{#the-program-a-key-element-of-a-successful-event} + +要举办一场真正有价值且令人难忘的会议,**议程安排至关重要**。 在这个领域,你绝不能有丝毫妥协。 虽然赞助商对活动融资至关重要,但观众的体验及其获得的价值必须始终优先考虑。 充斥着过量宣传内容和无休止赞助商推销的活动安排,不仅会使你同观众疏远,更会损害活动的公信力。 + +每次会议、专题讨论和工作坊都应让社区成员获得信息、受到启发并积极参与。 倾听受众的心声——了解他们的兴趣、需求和面临的挑战。 哪些主题能够引起他们的共鸣? 同时,引入新颖视角和创新形式,保持节目的活力。 在熟悉主题与热门话题之间取得平衡,融入前沿理念,确保议程全面覆盖以太坊生态系统的差异化维度——从技术深度解析、社区建设研讨会,到政策讨论与实践工作坊。 此外,还需考虑会议的语言——尽管英语是大多数以太坊活动的默认语言,但提供本地语言的会议环节能让活动更便于区域开发者和爱好者参与。 + +\*\*在挑选演讲嘉宾时,应至少在会议召开前六个月启动征集流程,以吸引高质量的投稿并为议程策划预留充足时间。\*\*负责嘉宾筛选的人员需具备丰富的行业经验,并对生态系统有深刻理解。 这确保他们能够识别有价值、有见地的贡献,并保持内容的高标准。 + +### 在哪里寻找经济支持{#where-to-find-financial-support} + +举办一场高质量的会议需要承担高昂的成本——场地租赁、宣传物料、餐饮服务、活动制作以及其他无数开支。 尽早获得资金支持至关重要,这能确保活动达到专业水准,并为参与者提供卓越的体验。 + +#### 如何创建赞助演示文稿? {#how-to-create-a-sponsorship-deck} + +首先,你需要一个演示文稿。 **向其他会议组织者寻求建议**,甚至请他们分享演示文稿,以便你据此设计自己的方案。 在定价方面,你应该保持务实态度,目标是覆盖成本而非盈利,尤其是在起步阶段。 + +**每份赞助方案都应清晰有力地概述活动概况**,确保潜在赞助商充分理解活动的规模、重点及价值。 从基础要素入手——场地、日期以及组织团队的详细信息——以建立可信度。 然后,突出该活动的核心主题,因为不同的以太坊会议面向不同的受众群体。 有些社区高度侧重建设者,以深入的技术讨论为特色;而另一些则可能更关注DeFi、DAO或政策议题。 + +不仅要描述活动本身,还要设定明确的期望。 请概述预计参会人数及已确认的关键演讲嘉宾,这有助于赞助商评估其潜在影响力。 最重要的是,明确界定赞助方将获得的回报——展位空间、演讲机会、社交媒体推广、品牌曝光度或专属人脉资源。 精心设计的演示文稿不仅能向潜在赞助商传递信息,更能激发他们参与活动的热情。 + +#### 谁可能会支持你的活动? {#who-might-support-your-event} + +首先,联系您所在城市或国家内以太坊及更广泛技术生态系统中的企业。 这些**组织通常对支持促进社区发展和创新的本地活动有着既得的利益**。 他们也更可能认识到投资本地生态系统的价值,并将您的会议视为与人才、合作伙伴及用户建立联系的契机。 + +一旦你获得了本地支持,就可以将你的影响力扩展到Web3领域的全球参与者。 **成熟的协议、DAO及生态系统基金通常会为社区驱动的活动分配预算**。 对于初次承办活动的组织者而言,这可能颇具挑战性——毕竟他们尚未建立可展示的活动记录。但请尝试精心设计一份引人入胜的赞助方案,清晰阐明支持活动的益处:品牌曝光度、演讲机会以及与目标受众建立有意义的互动。 尝试发掘你与众不同的、他人所不具备的独特价值。 + +#### 其它的活动资金的筹措方式 {#alternative-forms-of-funding-your-event} + +拨款是另一种潜在的资金来源,许多组织者往往忽视了这一点。 诸如以太坊基金会推出的[生态系统支持计划](https://esp.ethereum.foundation/)(ESP)以及[其他资助项目](https://ethereum.org/community/grants/#ethereum-grants)等计划,旨在支持社区主导的活动。 + +除资金赞助外,还可考虑实物合作,特别是在食品饮料方面的合作。 与当地文化或科技社群契合的品牌,可成为您活动的绝佳合作伙伴。 咖啡品牌、饮料公司甚至本地披萨店都可能愿意提供产品,以换取在活动中的曝光机会。 这些合作有助于降低成本,同时提升参会者的体验。 + +既然谈到经济问题,请牢记:每投入一美元打造卓越的参会者体验,都将获得指数级的回报。 高品质的制作、舒适的场地、精心准备的礼品以及组织有序的配套活动,共同打造出令人难忘的体验,让参与者在会议结束后仍会津津乐道。 满意的参与者将成为您最忠实的拥护者,并确保活动的长期成功。 + +### 物流{#logistics} + +在确保资金到位的同时,您应将重点放在后勤保障上。 一场组织完善的会议需要在多个领域进行周密规划,从会场布置到参会者体验都需精心安排。 拥有具备扎实活动组织经验的人员——不一定是Web3活动,但必须是活动策划方面的经验——将产生巨大影响。 经验丰富的物流主管能够预见潜在问题,并在问题显现前予以解决,从而节省时间、金钱和精力。 + +负责后勤的人员应选择场地、制作公司以及餐饮、饮料和商品的不同供应商,同时还需配备一个易于使用的在线票务系统,该系统应支持参会者使用加密货币进行注册和支付。 + +### 位置基础设施 {#location-infrastructure} + +在选择会议地点时,重要的是要超越场地本身,考虑更广泛的城市和国家基础设施。 天气、交通便利性、安全保障以及政治环境等因素对塑造参会者体验具有重大影响。 + +对于知名度较低的地方,这一点尤为关键。 来自世界各地的与会者和赞助商需要确信他们能够轻松且安全地出行。 考察机场交通便利性、公共交通系统以及住宿选择等方面的因素。 同时,明智的做法是考虑该地区的文化和政治环境,以避免可能阻碍国际参与者的复杂因素,例如签证政策。 + +### 如何推广活动 {#how-to-promote-the-event} + +有效推广活动是吸引目标受众并营造热烈氛围的关键。 精心设计的推广策略能确保您的会议获得应有的关注度和参与度。 设计在您的品牌建设中同样扮演着重要角色,因此您务必为此预留预算。 + +#### 社交媒体{#social-media} + +X.com将成为您社交媒体推广的核心支柱。 尽量保持活跃并坚持在该平台发帖,同时积极参与各类讨论——既要使用个人账号参与,也要通过组织账号参与互动。 + +尽管领英听起来并非最显而易见的推广选择,但你可以在那里接触到完全不同的受众群体,甚至吸引到一些赞助商。 + +#### 与其他以太坊社区的合作 {#partnerships-with-other-ethereum-communities} + +与不同以太坊组织者的合作能借助现有网络扩大影响力,尤其当你从零起步时。 提供社区折扣,与其他活动进行交叉推广,并邀请合作伙伴共同举办配套活动或工作坊。 + +#### 大学宣传 {#university-outreach} + +通过学生社团或教授联系当地理工科和经济学院系,推广本次活动。 与高校开展合作有助于吸引青年人才、研究人员及未来行业专业人士,从而加强学术界与以太坊生态系统的联系。 这对于组织黑客松活动尤为理想,学生们往往能带来新颖的创意、饱满的热情以及扎实的技术基础。 + +#### 媒体{#media} + +联系专注于Web3领域的媒体机构和通讯刊物,争取活动报道。 尽管Web3媒体通常期望为其公关文章收取费用,但若您没有预算进行付费推广,也可以提供免费门票或安排与知名演讲嘉宾及赞助商的专访机会。 创建一个公关资料包,内含新闻稿及若干视觉素材,以便在社交媒体或网站上以不同格式进行推广。 此外,还应扩大合作范围,涵盖本地记者乃至内容创作者(只要他们具备良好声誉),只要他们能报道科技领域,这对于向更广泛的受众展示活动至关重要。 这有助于弥合加密行业与广大公众之间的鸿沟,吸引主流科技和商业圈的关注。 + +### 你应该组织一个黑客松吗? {#should-you-organize-a-hackathon-as-well} + +组织黑客松活动具有多重益处,因为这类活动既能有效凝聚开发者社群,又能激发创新活力。 它还提供了实践机会,让参与者能够协作并构建项目,这些项目有望为生态系统带来切实成果。 黑客松吸引了那些通常不参加会议但热衷于构建和测试新想法挑战的开发者。 如果您的会议面向开发者、创新和实践项目,举办黑客松是绝佳选择。 + +但在组织活动之前,请考虑你是否有足够的资源和时间。 黑客松需要投入大量时间、人力和资金资源。 确保您有专门的团队来处理此事,尤其是在您同时负责管理会议的情况下。 另外,检查你的社区是否有兴趣。 如果你的社区更侧重建设者,那么组织黑客松或许更有意义。 + +尽管组织黑客松有诸多益处,但请注意:根据会议规模的不同,增加这项活动可能会令人应接不暇。 你应该评估同时管理两者是否会降低其中任何一方的质量。 您可选择举办规模较小、主题聚焦的黑客松,或将活动分散在不同月份举行。 + +### (几乎不可避免)你将面临的挑战 {#almost-inevitable-challenges-that-you-will-face} + +在组织会议时,尤其是以太坊领域的会议,最大的挑战之一就是确保获得足够的资金。 许多活动组织者都面临着筹集资金的困境,这些资金用于支付场地费用、餐饮服务及其他后勤开支。 赞助往往至关重要,但建立关系并说服企业投资你的活动可能需要时间。 此外,在市场低迷时期,吸引赞助商的难度可能会增加,因为企业可能不太愿意投资于非核心业务。 + +有效地管理预算是关键。 **意外开支**,例如临时变更场地和额外的活动技术需求,可能迅速超出预算。 + +对于新活动而言,**邀请高质量演讲者尤其困难**。 以太坊领域中有名的思想领袖或意见领袖可能日程安排已满,对于缺乏成功案例的新活动,他们可能会犹豫是否参与。 请提前做好准备,在活动开始前就投入时间进行人脉拓展,并联系潜在的演讲嘉宾。 + +此外,在与演讲者沟通时,务必保持清晰且持续的交流——明确设定提交演示文稿的截止日期,并避免任何临时变更。 + +一场成功的会议需要一支专业团队来统筹后勤保障、市场推广、赞助商对接、技术支持及参会者管理等各项工作。 寻找具备科技活动组织经验的人选颇具挑战性,尤其当预算有限——或者更常见的是根本没有预算,只能依靠志愿者参与时。 + +### 你不应该独自做这件事。 你需要志愿者们。 {#you-shouldnt-do-it-alone-you-need-volunteers} + +组织以太坊活动需要一支多元化且敬业的团队来处理后勤保障、注册管理、演讲者协调、参会者支持等诸多事务。 团队规模仅为3至15人的时候,志愿者对活动的顺利开展至关重要。 + +志愿者往往是许多会议的中流砥柱,提供关键支持,尤其是在预算有限的情况下。 他们能够胜任从接待登记到协助活动布置的各项工作,确保活动尽可能顺利进行。 + +虽然向志愿者提供金钱补偿存在困难,但必须给予他们有价值的回报,使他们的付出获得应有的回报。 考虑为他们提供人脉拓展机会、技能提升培训、专属福利、证书或推荐信。 + +### 活动组织者合规要点 {#compliance-essentials-for-event-organizers} + +在组织活动时,有几个重要的法律和后勤问题需要注意: + +- **赞助协议**——确保与赞助商签订明确的合同,其中应包含清晰界定的取消条款。 +- **行为准则** ——根据活动类型(会议/黑客松、黑客之家等)制定相应的行为准则。 +- **隐私政策** – 为您的网站起草隐私政策,以符合数据保护法规及图像使用规范 +- **地方当局通知**——即使您的活动属于封闭式聚会,也建议向当地警察局进行申报。 +- **票务协议** – 与您的票务服务提供商签订正式协议,以明确条款和责任。 +- **合规要求** – 提前确认会议举办国是否对加密货币行业设有特定法规或限制 +- **商品清关** – 若您需进口赞助商品,建议聘请报关行以高效完成清关流程。 +- **摄影与媒体政策** – 明确规定摄影及媒体报道的准则,确保参与者知晓同意权及退出选项。 + +## 活动之后:接下来是什么? {#after-the-event-whats-next} + +活动结束后,务必收集参会者、演讲嘉宾和赞助商的反馈意见,并撰写内部报告,以便为未来的活动做好更充分的准备。 这能够帮助识别哪些部分做的好,哪些部分需要改进。 通过问卷调查或一对一访谈收集宝贵见解,为未来的迭代提供指导。 请务必花时间回顾任何失误或低效环节,这些问题在下次会议中可避免,从而使流程更顺畅。 + +关键是保持势头。 继续与社区保持互动,分享根据他们的反馈所取得的进展,并为下一场活动营造令人兴奋的氛围。 通过维持这种联系,确保会议的影响力超越活动本身,巩固关系并为未来的成功奠定基础。 + +## 致谢 {#acknowledgement} + +衷心感谢所有为本文贡献见解的同仁:来自布拉迪斯拉发以太坊的斯拉沃·法比西克;来自Kipu以太坊和拉丁美洲以太坊的萝拉;来自贝尔格莱德以太坊的坦雅·姆拉德诺维奇;来自波哥大以太坊的胡安·大卫;来自华沙以太坊的莫妮卡·扎伊奇克;来自那不勒斯以太坊的拉斐尔·奥雷菲斯;来自利雅得以太坊的肖武(玲);来自urbe.eth的马可;来自都柏林以太坊的考兰·沃尔什;来自克卢日以太坊的亚历克斯·马莱斯;以及来自斯洛文尼亚以太坊的斯坦科·德维奇。 + +## 资源{#resources} + +播客:如何从头到尾组织和推广一场以太坊活动: + +- [《ETHWarsaw案例研究》,作者:不凡](https://www.youtube.com/watch?v=io2Dx1ouz8o) + +推特空间: + +- [ETH 社区 AMA](https://x.com/NapulETH/status/1905732699094151623) + +文章: + +- [建设ETHKL,作者:Danny H.](https://sekto.tech/ethkl24) +- [POKT活动指南](https://docs.pokt.network/community/pokt-events-playbook) From 7ada7739f5ec9429ec7f271f38d8e3665e551eab Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:19 -0800 Subject: [PATCH 002/581] update(i18n): src/intl/zh/page-layer-2-networks.json --- src/intl/zh/page-layer-2-networks.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/intl/zh/page-layer-2-networks.json b/src/intl/zh/page-layer-2-networks.json index aba040567b9..24dc4a49c17 100644 --- a/src/intl/zh/page-layer-2-networks.json +++ b/src/intl/zh/page-layer-2-networks.json @@ -6,7 +6,7 @@ "page-layer-2-networks-more-advanced-descripton-2": "仍处于起步阶段,有一定实验性。", "page-layer-2-networks-more-advanced-descripton-3": "关于这些网络的技术、风险和信任假设的更多信息,我们建议查阅 L2BEAT,其中为每个项目提供了全面的风险评估框架,并为一般数据分析提供 growthepie。", "page-layer-2-networks-more-advanced-link-1": "访问 l2beat.com", - "page-layer-2-networks-more-advanced-link-2": "访问 growthepie.xyz", + "page-layer-2-networks-more-advanced-link-2": "访问 growthepie.com", "page-layer-2-networks-callout-1-title": "有哪些好处?", "page-layer-2-networks-callout-1-description": "以太坊的强大和安全性为其他网络提供了坚实的构建平台。", "page-layer-2-networks-callout-2-title": "想了解更多细节?", @@ -31,7 +31,7 @@ "page-layer-2-networks-age": "时期", "page-layer-2-networks-show-how-long": "显示网络已经运行多长时间。", "page-layer-2-networks-data-from": "数据来源", - "page-layer-2-networks-period": ".", + "page-layer-2-networks-period": "。", "page-layer-2-networks-wallet-support": "钱包支持", "page-layer-2-networks-how-many-wallet-support": "表示有多少个钱包应用程序支持使用该网络。", "page-layer-2-networks-active-address": "活跃地址", From 795eec94a2eb60980546dec179430efeb7dda6e1 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:23 -0800 Subject: [PATCH 003/581] update(i18n): public/content/translations/zh/developers/docs/oracles/index.md --- .../zh/developers/docs/oracles/index.md | 179 +++++++++--------- 1 file changed, 91 insertions(+), 88 deletions(-) diff --git a/public/content/translations/zh/developers/docs/oracles/index.md b/public/content/translations/zh/developers/docs/oracles/index.md index 4612e3e44bf..a3ee8f5682b 100644 --- a/public/content/translations/zh/developers/docs/oracles/index.md +++ b/public/content/translations/zh/developers/docs/oracles/index.md @@ -4,17 +4,17 @@ description: 以太坊智能合约通过预言机访问真实数据,为用户 lang: zh --- -预言机是产生数据馈送的应用程序,使链下数据来源可供区块链用于智能合约。 由于默认情况下,基于以太坊的智能合约无法访问存储在区块链网络外部的信息,预言机是必不可少的。 +预言机是产生并发送数据的应用程序。它使链下数据可供智能合约区块链使用。 由于默认情况下,基于以太坊的智能合约无法访问存储在区块链网络外部的信息,预言机是必不可少的。 -赋予智能合约使用链下数据执行的能力,扩展了去中心化应用程序的效用和价值。 例如,链上预测市场依靠预言机提供有关结果的信息,用于验证用户的预测。 假设 Alice 下注 20 个以太币赌谁将成为下一任美国 总统。 在这种情况下,预测市场去中心化应用程序需要预言机来确认选举结果,并判定 Alice 是否有资格获得付款。 +赋予智能合约使用链下数据的能力扩展了去中心化应用程序的效用和价值。 例如,链上预测市场依靠预言机提供有关结果的信息。这些结果用于验证针对用户的预测。 假设 Alice 下注 20 个以太币赌谁将成为下一任美国 总统。 在这种情况下,预测市场去中心化应用程序需要预言机来确认选举结果,并判定 Alice 是否有资格获得付款。 ## 前提条件 {#prerequisites} -本页面假设读者熟悉以太坊基础知识,例如[节点](/developers/docs/nodes-and-clients/)、[共识机制](/developers/docs/consensus-mechanisms/)和[以太坊虚拟机](/developers/docs/evm/)等。 读者还应该深刻了解[智能合约](/developers/docs/smart-contracts/)和[智能合约分析](/developers/docs/smart-contracts/anatomy/),尤其要了解[事件](/glossary/#events)。 +本页内容假定读者熟悉以太坊基础知识,包括[节点](/developers/docs/nodes-and-clients/)、[共识机制](/developers/docs/consensus-mechanisms/)和 [EVM](/developers/docs/evm/)。 你还应该对[智能合约](/developers/docs/smart-contracts/)和[智能合约剖析](/developers/docs/smart-contracts/anatomy/)有很好的了解,特别是[事件](/glossary/#events)。 ## 什么是区块链预言机? {#what-is-a-blockchain-oracle} -预言机是指获取、验证外部信息(即存储在链下的信息)并将外部信息传送给在区块链上运行的智能合约的应用程序。 预言机除了“拉取”链下数据并在以太坊上广播以外,还可以将信息从区块链“推送”到外部系统,例如,一旦用户通过以太坊交易发送费用,就解锁智能锁。 +预言机是获取、验证外部信息(即存储在链下的信息)并将其传输到在区块链上运行的智能合约的应用程序。 预言机除了“抓取”链下数据并在以太坊上广而告之以外,还可以将信息从区块链“推送”到外部系统,例如,一旦用户通过以太坊交易并缴费,就能解锁智能锁。 如果没有预言机,智能合约将只能使用链上数据。 @@ -22,11 +22,11 @@ lang: zh ## 智能合约为什么需要预言机? {#why-do-smart-contracts-need-oracles} -许多开发者将智能合约视为在区块链上特定地址运行的代码。 然而,对[智能合约更为普遍的观点](/smart-contracts/)是,它们是自动执行的软件程序,一旦满足特定条件,就能够执行各方之间的协议 - 因此术语称为“智能合约”。 +许多开发者将智能合约视为在区块链上特定地址运行的代码。 然而,对[智能合约](/smart-contracts/)更为普遍的观点是,它们是自动执行的软件程序,一旦满足特定条件,就能够执行各方之间的协议——因此术语称为“智能合约”。 但是,使用智能合约执行人之间的协议并非易事,因为以太坊是确定性系统。 [确定性系统](https://en.wikipedia.org/wiki/Deterministic_algorithm)是指在给定初始状态和特定输入的情况下始终产生相同结果的系统,这意味着根据输入计算输出的过程不存在随机性或变化。 -要实现确定性执行,区块链将节点限制为通过_仅_使用存储在区块链本身中的数据就简单的二进制 (true/false) 问题达成共识。 这类问题的示例包括: +为了实现确定性执行,区块链将节点限制为通过_仅_使用存储在区块链本身中的数据就简单的二进制 (true/false) 问题达成共识。 这类问题的示例包括: - “帐户所有者(由公钥识别)是否使用配对私钥签署该交易?” - “该帐户是否有足够资金支付这笔交易?” @@ -40,11 +40,11 @@ lang: zh 为此,预言机通常由链上运行的智能合约和一些链下组件构成。 链上合约接收其他智能合约的数据请求,并将这些请求传送给链下组件(称为预言机节点)。 这类预言机节点可以查询数据源—例如使用应用程序接口 (API)—并发送交易将请求的数据存储在智能合约的存储中。 -就本质而言,区块链预言机弥合了区块链和外部环境之间的信息缺口,创建了“混合智能合约”。 混合智能合约的工作原理基于链上合约代码和链下基础设施的结合。 去中心化预测市场就是混合智能合约的一个很好的示例。 其他示例可能包括作物保险智能合约,在一组预言机确定某些天气现象已经发生时这些合约做出赔付。 +就本质而言,区块链预言机弥合了区块链和外部环境之间的信息缺口,创建了“混合智能合约”。 混合智能合约的工作原理是链上合约代码和链下基础设施的结合。 去中心化预测市场就是混合智能合约的一个很好的示例。 其他示例可能包括作物保险智能合约,在一组预言机确定某些天气现象已经发生时这些合约做出赔付。 ## 什么是预言机问题? {#the-oracle-problem} -预言机解决了一个重要问题,但也带来了一些复杂性,例如: +预言机解决了一个重要问题,但也带来了一些复杂问题,例如: - 如何验证注入信息是从正确来源提取的或者未被篡改? @@ -54,11 +54,11 @@ lang: zh 不同的预言机对于预言机问题有着不同的解决方案,稍后将进行探讨。 通常会根据预言机应对以下挑战的能力来评估它们: -1. **正确性**:预言机不应导致智能合约基于无效的链下数据触发状态变化。 预言机必须保证数据的_真实性_与_完整性_。 真实性是指数据是从正确来源获取的,完整性是指数据在发送到链上前保持完好无缺(即数据未修改过)。 +1. **正确性**:预言机不应导致智能合约基于无效的链下数据触发状态更改。 预言机必须保证数据的_真实性_和_完整性_。 真实性意味着数据来自正确的来源,而完整性意味着数据在发送到链上之前保持完好无损(即未被更改)。 -2. **可用性**:预言机不应延迟或阻止智能合约执行操作或触发状态变化。 这意味着预言机提供的数据必须_在请求时可用_并且不会出现间断。 +2. **可用性**:预言机不应延迟或阻止智能合约执行操作和触发状态更改。 这意味着预言机提供的数据必须_按需可用_且不中断。 -3. **激励兼容性**:预言机应激励链下数据提供者向智能合约提交正确的信息。 奖励兼容性包括_可归因性_和_问责性_。 可归因性指将一条外部信息与其提供者联系起来,而问责性则将数据提供者和他们提供的信息联结起来,因此能够根据提供的数据质量奖励或者惩罚数据提供者。 +3. **激励兼容性**:预言机应激励链下数据提供者向智能合约提交正确的信息。 激励兼容性包括_可归因性_和_问责性_。 可归因性指将一条外部信息与其提供者联系起来,而问责性则将数据提供者和他们提供的信息联结起来,因此能够根据提供的数据质量奖励或者惩罚数据提供者。 ## 区块链预言机服务是如何运作的? {#how-does-a-blockchain-oracle-service-work} @@ -66,7 +66,7 @@ lang: zh 用户是指需要区块链外部的信息以完成特定操作的实体(即智能合约)。 预言机服务的基本工作流程始于用户向预言机合约发送数据请求。 数据请求通常将回答下列一部分或所有问题: -1. 链下节点可以在哪些来源中查询请求的信息? +1. 链下节点可以从哪里查询到想要了解的信息? 2. 报告者如何处理数据来源中的信息并提取有用的数据点? @@ -80,37 +80,37 @@ lang: zh 预言机合约是预言机服务的链上部分。 它侦听其他合约的数据请求,将数据查询转送到预言机节点,并将返回的数据广播到客户端合约。 该合约还可以对返回的数据点进行一些计算,以产生聚合值并发送给请求合约。 -预言机合约公开了一些函数,客户端合约在发出数据请求时调用它们。 收到新查询后,智能合约将触发一个[日志事件](/developers/docs/smart-contracts/anatomy/#events-and-logs),其中有数据请求详细信息。 这将通知订阅该日志的链下节点(通常使用类似 JSON-RPC `eth_comment` 的命令),让其继续检索日志事件中定义的数据。 +预言机合约公开了一些函数,客户端合约在发出数据请求时调用它们。 收到新查询后,智能合约将发出一个包含数据请求详情的[日志事件](/developers/docs/smart-contracts/anatomy/#events-and-logs)。 这将通知订阅该日志的链下节点(通常使用 JSON-RPC `eth_subscribe` 之类的命令),这些节点会继续检索日志事件中定义的数据。 -下面是 Pedro Costa 提供的[预言机合约示例](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e)。 它是一个简单的预言机服务,可以在其他智能合约发出请求时查询链下应用程序接口,并在区块链上存储请求的信息: +以下是 Pedro Costa 编写的一个[预言机合约示例](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e)。 它是一个简单的预言机服务,可以在其他智能合约发出请求时查询链下应用程序接口,并在区块链上存储要求的信息: ```solidity pragma solidity >=0.4.21 <0.6.0; contract Oracle { - Request[] requests; //list of requests made to the contract - uint currentId = 0; //increasing request id - uint minQuorum = 2; //minimum number of responses to receive before declaring final result - uint totalOracleCount = 3; // Hardcoded oracle count + Request[] requests; //向合约发出的请求列表 + uint currentId = 0; //递增的请求 id + uint minQuorum = 2; //宣布最终结果前收到的最少响应数 + uint totalOracleCount = 3; //硬编码的预言机数量 - // defines a general api request + // 定义一个通用的 API 请求 struct Request { - uint id; //request id + uint id; //请求 id string urlToQuery; //API url - string attributeToFetch; //json attribute (key) to retrieve in the response - string agreedValue; //value from key - mapping(uint => string) answers; //answers provided by the oracles - mapping(address => uint) quorum; //oracles which will query the answer (1=oracle hasn't voted, 2=oracle has voted) + string attributeToFetch; //要在响应中检索的 json 属性 (键) + string agreedValue; //来自键的值 + mapping(uint => string) answers; //预言机提供的答案 + mapping(address => uint) quorum; //将查询答案的预言机(1=预言机未投票,2=预言机已投票) } - //event that triggers oracle outside of the blockchain + //在区块链外部触发预言机的事件 event NewRequest ( uint id, string urlToQuery, string attributeToFetch ); - //triggered when there's a consensus on the final result + //就最终结果达成共识时触发 event UpdatedRequest ( uint id, string urlToQuery, @@ -127,23 +127,23 @@ contract Oracle { uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, "")); Request storage r = requests[length-1]; - // Hardcoded oracles address + // 硬编码的预言机地址 r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1; r.quorum[address(0xb5346CF224c02186606e5f89EACC21eC25398077)] = 1; r.quorum[address(0xa2997F1CA363D11a0a35bB1Ac0Ff7849bc13e914)] = 1; - // launch an event to be detected by oracle outside of blockchain + // 启动一个事件,供区块链外部的预言机检测 emit NewRequest ( currentId, _urlToQuery, _attributeToFetch ); - // increase request id + // 增加请求 id currentId++; } - //called by the oracle to record its answer + //由预言机调用以记录其答案 function updateRequest ( uint _id, string memory _valueRetrieved @@ -151,18 +151,18 @@ contract Oracle { Request storage currRequest = requests[_id]; - //check if oracle is in the list of trusted oracles - //and if the oracle hasn't voted yet + //检查预言机是否在可信预言机列表中 + //以及预言机是否尚未投票 if(currRequest.quorum[address(msg.sender)] == 1){ - //marking that this address has voted + //标记此地址已投票 currRequest.quorum[msg.sender] = 2; - //iterate through "array" of answers until a position if free and save the retrieved value + //迭代答案“数组”,直到找到一个空闲位置并保存检索到的值 uint tmpI = 0; bool found = false; while(!found) { - //find first empty slot + //查找第一个空时隙 if(bytes(currRequest.answers[tmpI]).length == 0){ found = true; currRequest.answers[tmpI] = _valueRetrieved; @@ -172,8 +172,8 @@ contract Oracle { uint currentQuorum = 0; - //iterate through oracle list and check if enough oracles(minimum quorum) - //have voted the same answer as the current one + //迭代预言机列表,检查是否有足够的预言机(最低法定人数) + //投票给了与当前答案相同的答案 for(uint i = 0; i < totalOracleCount; i++){ bytes memory a = bytes(currRequest.answers[i]); bytes memory b = bytes(_valueRetrieved); @@ -200,19 +200,19 @@ contract Oracle { 预言机节点是预言机服务的链下部分。 它从外部来源提取信息,例如托管在第三方服务器上的应用程序接口,并将信息放在链上供智能合约使用。 预言机节点侦听来自链上预言机合约的事件,继而完成日志中描述的任务。 -预言机节点的常见任务是,向应用程序接口服务发送 [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) 请求,解析响应以提取相关数据,设置为区块链可读的输出格式,并通过将输入包含在预言机合约的交易中将其发送到链上 在利用“真实性证明”证明所提交信息的有效性和完整性时,可能也会用到预言机节点,我们稍后会对此进行探讨。 +预言机节点的常见任务是,向 API 服务发送 [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) 请求,解析响应以提取相关数据,将其格式化为区块链可读的输出,并通过将其包含在发送给预言机合约的交易中来发送到链上。 在利用“真实性证明”证明所提交信息的有效性和完整性时,可能也会用到预言机节点,我们稍后会对此进行探讨。 -计算预言机也依赖链下节点执行计算任务,但因为燃料成本和区块大小限制,这类计算在链上执行是不切实际的。 例如,预言机节点的任务可能是生成一个可验证的随机数字(例如,用于区块链游戏)。 +计算预言机也依赖链下节点执行计算任务,因为燃料成本和区块大小限制,这类计算想在链上执行是不切实际的。 例如,预言机节点的任务可能是生成一个可验证的随机数字(例如,用于区块链游戏)。 ## 预言机设计模式 {#oracle-design-patterns} -预言机有不同的类型,包括_立即读取_、_发布-订阅_和_请求-响应_,后两者在太坊智能合约中最受欢迎。 在此我们简单描述发布-订阅和请求-响应模型。 +预言机有不同类型,包括_立即读取_、_发布-订阅_和_请求-响应_,后两者在以太坊智能合约中最受欢迎。 在此我们简单描述发布-订阅和请求-响应模型。 -### 发布-订阅预言机 {#publish-subscribe-oracles} +### 发布-订阅型预言机 {#publish-subscribe-oracles} 这类预言机公开了“数据馈送”,其他合约通常可以通过读取数据馈来获取信息。 在这种情况下,数据可能会频繁变化,因此客户端合约必须侦听预言机存储中数据的更新。 例如,向用户提供最新以太币-美元价格信息的预言机。 -### 请求-响应预言机 {#request-response-oracles} +### 请求-响应型预言机 {#request-response-oracles} 请求-响应设置允许客户端合约请求除发布-订阅预言机所提供数据以外的任意数据。 当数据集太大而无法存储在智能合约的存储中,并且/或者用户在任何时间点只需要一小部分数据时,请求-响应预言机是理想之选。 @@ -220,19 +220,19 @@ contract Oracle { 发起数据查询的用户必须承担从链下来源检索信息的费用。 客户端合约还必须提供资金,用以支付预言机合约通过请求中指定的回调函数返回响应所产生的燃料费用。 -## 中心化和去中心化预言机 {#types-of-oracles} +## 中心化预言机与去中心化预言机 {#types-of-oracles} ### 中心化预言机 {#centralized-oracles} 中心化预言机由单个实体控制,该实体负责聚合链下信息并按照请求更新预言机合约的数据。 中心化预言机效率高,因为它们依赖单一真实性来源。 在专有数据集由所有者直接发布并有公认签名的情况下,中心化预言机表现更佳。 然而,它们也带来了弊端: -#### 低正确性保障 {#low-correctness-guarantees} +#### 低正确性保证 {#low-correctness-guarantees} 使用中心化预言机时,无法确认提供的信息是否正确。 甚至“信誉良好”的提供者会耍无赖或者遭遇黑客攻击。 如果预言机被破坏,智能合约将基于错误数据执行。 #### 可用性差 {#poor-availability} -中心化预言机无法保证始终向其他智能合约提供链下数据。 如果提供者决定关闭服务或者黑客劫持了预言机的链下组件,智能合约则会面临拒绝服务 (Dos) 攻击的风险。 +中心化预言机无法保证始终向智能合约提供链下数据。 如果提供者决定关闭服务或者黑客劫持了预言机的链下组件,智能合约就会面临拒绝服务 (Dos)的风险。 #### 激励兼容性差 {#poor-incentive-compatibility} @@ -246,7 +246,7 @@ contract Oracle { 使用去中心化预言机有以下好处: -### 高正确性保障 {#high-correctness-guarantees} +### 高正确性保证 {#high-correctness-guarantees} 去中心化预言机尝试使用不同的方法实现数据的正确性。 其中包括使用证明来证明返回信息的真实性和完整性,以及要求多个实体就链下数据的有效性集体达成一致。 @@ -256,9 +256,9 @@ contract Oracle { 真实性证明的示例包括: -**传输层安全性 (TLS) 证明**:预言机节点通常使用基于传输层安全性 (TLS) 协议的安全 HTTP 连接从外部数据源检索数据。 一些去中心化预言机使用真实性证明验证传输层安全性会话(即,确认节点和特定服务器之间的信息交换),并确认会话内容未被改动。 +**传输层安全协议 (TLS) 证明**:预言机节点通常使用基于传输层安全协议 (TLS) 的安全 HTTP 连接从外部来源检索数据。 一些去中心化预言机使用真实性证明验证传输层安全性会话(即,确认节点和特定服务器之间的信息交换),并确认会话内容未被改动。 -**可信执行环境 (TEE) 认证**:[可信执行环境](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) 是一种沙盒计算环境,它与主机系统的操作进程隔离。 可信执行环境确保在计算环境中存储/使用的任何应用代码或数据都保持完整性、保密性和不可变性。 用户还可以生成一个认证,证明应用程序实例正在可信执行环境中运行。 +**可信执行环境 (TEE) 证明**:[可信执行环境](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) 是一种沙盒化计算环境,与其主机系统的操作进程隔离。 可信执行环境确保在计算环境中存储/使用的任何应用代码或数据都保持完整性、保密性和不可变性。 用户还可以生成一个认证,证明应用程序实例正在可信执行环境中运行。 某些类别的去中心化预言机要求预言机节点运营者提供可信执行环境认证。 这向用户证实,节点运营者在可信执行环境中运行预言机客户端的实例。 可信执行环境防止外部进程更改或读取应用程序的代码和数据,因此,这些认证证明预言机节点保持了信息的完整性和保密性。 @@ -274,17 +274,17 @@ contract Oracle { 如果节点的答案不同于多数答案,将对其进行惩罚,即将其代币分发给提供更正确值的其他节点。 强制节点在提供数据之前提供保证金将激励节点做出诚实的响应,因为假定节点是理性的经济活动参与者,意在最大限度地增加回报。 -质押/投票还能保护去中心化预言机免受[女巫攻击](/glossary/#sybil-attack),在这种攻击中,恶意参与者创建多个身份来利用共识系统。 然而,质押机制不能防止“揩油行为”(预言机节点从其他节点复制信息)和“懒散验证”(预言机节点随大流而不亲自验证信息)。 +质押/投票也能保护去中心化预言机免受[女巫攻击](/glossary/#sybil-attack),在这种攻击中,恶意行为者会创建多个身份来操纵共识系统。 然而,质押机制不能防止“揩油行为”(预言机节点从其他节点复制信息)和“懒散验证”(预言机节点随大流而不亲自验证信息)。 ##### 谢林点机制 -[谢林点](https://en.wikipedia.org/wiki/Focal_point_(game_theory))是一个博弈论概念,它假设在缺乏任何沟通的情况下,多个实体总是默认对一个问题选择共同解决方案。 谢林点机制常用于去中心化预言机网络,使节点对数据请求的应答达成共识。 +[谢林点](https://en.wikipedia.org/wiki/Focal_point_\(game_theory\))是一个博弈论概念,它假设在没有任何沟通的情况下,多个实体总是会默认采用一个共同的解决方案来解决问题。 谢林点机制常用于去中心化预言机网络,使节点对数据请求的应答达成共识。 -这方面的一个早期想法是[谢林币](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/),这是一种提议的数据馈送,参与者提交“标量”问题的答案(这些问题的答案由数量描述,例如“以太币的价格是多少?”)及存款。 提供的值在第 25 和第 75 [百分位](https://en.wikipedia.org/wiki/Percentile)之间的用户将得到奖励,而提供的值大幅偏离中值的用户将受到惩罚。 +这方面的一个早期想法是 [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/),这是一种提议的数据馈送,参与者提交“标量”问题的答案(这些问题的答案由数量描述,例如“ETH 的价格是多少?”),并附带一笔押金。 提供的值在第 25 和第 75 [百分位](https://en.wikipedia.org/wiki/Percentile)之间的用户将得到奖励,而提供的值大幅偏离中值的用户将受到惩罚。 -虽然谢林币目前已不存在,但许多去中心化预言机—特别是 [Maker 协议预言机](https://docs.makerdao.com/smart-contract-modules/oracle-module)—仍使用谢林点机制来提高预言机数据的准确性。 每个 Maker 预言机均由提交抵押品资产的市场价格的链下对等节点网络(“中继者”和“馈送者”)和链上“中值器”合约组成,后者计算所有提供价值的中值。 规定的延迟期结束后,该中值成为相关资产的新参考价格。 +虽然 SchellingCoin 如今已不存在,但许多去中心化预言机(特别是 [Maker 协议的预言机](https://docs.makerdao.com/smart-contract-modules/oracle-module))仍使用谢林点机制来提高预言机数据的准确性。 每个 Maker 预言机均由提交抵押品资产的市场价格的链下对等节点网络(“中继者”和“馈送者”)和链上“中值器”合约组成,后者会计算所有提交的价格的中值。 规定的延迟期结束后,该中值成为相关资产的新参考价格。 -使用谢林点机制的其他预言机示例包括 [Chainlink 链下报告](https://docs.chain.link/docs/off-chain-reporting/)和 [Witnet](https://witnet.io/)。 在这两种系统中,对等网络中的预言机节点的答复聚合成一个单一聚合值,如平均值或中值。 根据其答复与聚合值的一致或偏离程度奖励或惩罚节点。 +使用谢林点机制的其他预言机示例包括 [Chainlink 链下报告](https://docs.chain.link/architecture-overview/off-chain-reporting)和 [Witnet](https://witnet.io/)。 在这两种系统中,对等网络中的预言机节点的答复聚合成一个单一聚合值,如平均值或中值。 根据其答复与聚合值的一致或偏离程度奖励或惩罚节点。 谢林点机制具有吸引力,因为这类机制能够最大限度地减少对链上的影响(只需要发送一笔交易)同时又能保证去中心化。 后者是可行的,因为节点必须批准已提交答复的列表,然后再将答复输入生成平均值/中值的算法。 @@ -292,15 +292,15 @@ contract Oracle { 去中心化预言机服务确保链下数据对智能合约的高可用性。 高可用性是通过对链下信息来源和负责将信息传输到链上的节点同时去中心化实现的。 -这确保了容错,因为预言机合约能够依靠多个节点(这些节点也依靠多个数据源)执行其他合约发出的查询。 在信息来源_和_节点运营商层面实现去中心化至关重要—提供从同一来源检索的信息的预言机节点网络将遇到与中心化预言机相同的问题。 +这确保了容错,因为预言机合约能够依靠多个节点(这些节点也依靠多个数据源)执行其他合约发出的查询。 在来源_和_节点运行者层面实现去中心化至关重要——一个服务于从同一来源检索的信息的预言机节点网络将遇到与中心化预言机相同的问题。 基于质押的预言机也可以对未能快速响应数据请求的节点运营商进行惩罚。 这极大地激励了预言机节点投资于容错基础设施并及时提供数据。 -### 激励兼容性好 {#good-incentive-compatibility} +### 良好的激励兼容性 {#good-incentive-compatibility} -去中心化预言机采纳了不同的激励设计,避免预言机节点中出现[拜占庭](https://en.wikipedia.org/wiki/Byzantine_fault)行为。 具体而言,它们实现了_可归因性_和_问责性_: +去中心化预言机采用各种激励设计,以防止预言机节点之间出现[拜占庭](https://en.wikipedia.org/wiki/Byzantine_fault)行为。 具体而言,它们实现了_可归因性_和_问责性_: -1. 通常,要求去中心化预言机节点对它们为了响应数据请求而提供的数据签名。 这些信息有助于评估预言机节点的历史表现,让用户在发出数据请求时筛选掉不可靠的预言机节点。 例如 Witnet 的[算法信誉系统](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system)。 +1. 通常,要求去中心化预言机节点对它们为了响应数据请求而提供的数据签名。 这些信息有助于评估预言机节点的历史表现,让用户在发出数据请求时筛选掉不可靠的预言机节点。 一个例子是 Witnet 的[算法声誉系统](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system)。 2. 如前所述,去中心化预言机可能要求节点对其提交数据的真实性的可信度进行质押。 如果声明得到证实,这笔质押可以连同诚信服务的奖励一起返还。 但是如果信息不正确,也可以对节点进行惩罚,这就提供了一定程度的问责性。 @@ -308,15 +308,15 @@ contract Oracle { 以下是以太坊中预言机的常见用例: -### 检索金融数据 {#retrieving-financial-data} +### 检索财务数据 {#retrieving-financial-data} -[去中心化金融](/defi/) (DeFi) 应用程序允许点对点贷款、借款和资产交易。 通常,这需要获取不同的金融信息,包括汇率数据(用于计算加密货币的法币价值或比较代币的价格)和资本市场数据(用于计算代币化资产的价值,如黄金或美元)。 +[去中心化金融](/defi/) (DeFi) 应用程序允许点对点借贷和资产交易。 通常,这需要获取不同的金融信息,包括汇率数据(用于计算加密货币的法币价值或比较代币的价格)和资本市场数据(用于计算代币化资产的价值,如黄金或美元)。 例如,一个去中心化金融贷款协议需要查询作为抵押品存储的资产(例如以太币)的当前市场价格。 这样,合约可以确定抵押品资产的价值,并确定它能从系统中借出多少钱。 -去中心化金融中热门的“价格预言机”(常用名称)包括 Chainlink Price Feeds、Compound Protocol 的[开放式喂价工具](https://compound.finance/docs/prices)、Uniswap 的[时间加权平均价格 (TWAP) ](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles)以及 [Maker 预言机](https://docs.makerdao.com/smart-contract-modules/oracle-module)。 +DeFi 中流行的“价格预言机”(人们通常这样称呼它们)包括 Chainlink Price Feeds、Compound Protocol 的[开放价格信息流](https://compound.finance/docs/prices)、Uniswap 的[时间加权平均价格 (TWAP)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) 和 [Maker 预言机](https://docs.makerdao.com/smart-contract-modules/oracle-module)。 -在将这些价格预言机整合到项目中之前,构建者应该了解它们附带的注意事项。 本[文](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles/)详细分析了计划使用任何上述价格预言机时要考虑的因素。 +在将这些价格预言机整合到项目中之前,构建者应该了解它们附带的注意事项。 这篇[文章](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles/)详细分析了计划使用任何上述价格预言机时需要考虑的因素。 下面是一个示例,说明如何使用 Chainlink 喂价工具从智能合约中检索最新以太币价格: @@ -358,73 +358,76 @@ contract PriceConsumerV3 { 某些区块链应用程序(如基于区块链的游戏或彩票方案),需要高度的不可预测性和随机性才能有效工作。 然而,区块链的确定性执行消除了任何随机性。 -原始方法是采用伪随机加密函数(例如 `blockhash`),但是它们可被[矿工操纵](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.),对工作量证明算法进行求解。 同样,以太坊[切换到权益证明](/roadmap/merge/)意味着开发者不再能够依赖 `blockhash` 得到链上随机性。 信标链的 [RANDAO 机制](https://eth2book.info/altair/part2/building_blocks/randomness)为随机性来源提供了替代选择。 +最初的方法是使用伪随机加密函数,例如 `blockhash`,但这些函数可能会被[矿工操纵](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.) 解决工作量证明算法。 此外,以太坊[转向权益证明](/roadmap/merge/)意味着开发者不能再依赖 `blockhash` 来获取链上随机性。 信标链的 [RANDAO 机制](https://eth2book.info/altair/part2/building_blocks/randomness)则提供了另一种随机性来源。 -可以在链下生成随机值并发送到链上,但这样做对用户有很高的信任要求。 他们必须相信值确实是通过不可预测的机制产生的,并且未在传输过程中遭到改动。 +可以在链下生成随机值并发送到链上,但这样做需要对用户有很高的信任度。 他们必须相信值确实是通过不可预测的机制产生的,并且未在传输过程中遭到改动。 -为链下计算设计的预言机解决了这一问题,它们安全地生成链下随机结果并连同证实该过程不可预测性的加密证明一起在链上广播。 [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/)(可验证随机函数)便是一个示例,它是一个可证明公平且防篡改的随机数生成器 (RNG),用于为依靠不可预测结果的应用程序构建可靠的智能合约。 +为链下计算设计的预言机解决了这一问题,它们安全地生成链下随机结果并连同证明该过程不可预测的加密证明一起在链上广播。 一个例子是 [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/)(可验证随机函数),它是一个可证明公平且防篡改的随机数生成器 (RNG),可用于为依赖不可预测结果的应用程序构建可靠的智能合约。 ### 获取事件结果 {#getting-outcomes-for-events} -有了预言机,创建响应真实事件的智能合约并非难事。 预言机服务允许合约通过链下组件连接到外部应用程序接口并使用来自这些数据源的信息,实现了这一点。 例如,前面介绍的预测去中心化应用程序可能会请求预言机返回可信链下来源(如美联社)提供的选举结果。 +有了预言机,创建响应真实事件的智能合约并非难事。 预言机服务允许合约通过链下组件连接到外部应用程序接口并使用来自这些数据源的信息。 例如,前面介绍的预测去中心化应用程序可能会请求预言机提供可信链下来源(如美联社)的选举结果。 使用预言机检索基于真实结果的数据,可以实现其他新颖的用例;例如,去中心化保险产品需要关于天气、灾害等的准确信息才能有效地工作。 -### 智能合约自动化 {#automating-smart-contracts} +### 自动化智能合约 {#automating-smart-contracts} 智能合约不会自动运行;相反,外部帐户 (EOA) 或另一个合约帐户必须触发正确的函数来执行合约代码。 大多数情况下,合约的大部分函数是公共函数,可由外部帐户和其他合约调用。 -但合约中也有其他合约无法访问的_私有函数_,然而它们对于去中心化应用程序的整体功能至关重要。 示例包括定期为用户铸造新非同质化代币的 `mintERC721Token()` 函数、在预测市场中付款的函数或在去中心化交易所中解锁质押代币的函数。 +但是,合约中也有其他人无法访问的_私有函数_;但这些函数对去中心化应用程序的整体功能至关重要。 示例包括定期为用户铸造新 NFT 的 `mintERC721Token()` 函数、在预测市场中奖励支付的函数,或在去中心化交易所 (DEX) 中解锁已质押代币的函数。 开发者需要每隔一段时间触发这些函数,以保持应用程序平稳运行。 然而,这可能导致开发者在普通任务上浪费更多时间,它是智能合约自动执行吸引人的原因。 一些去中心化预言机网络提供自动化服务,允许链下预言机节点根据用户定义的参数触发智能合约函数。 通常,这需要向预言机服务“注册”目标合约,提供资金支付预言机运营商,并指定触发合约的条件或时间。 -Chainlink 的 [Keeper 网络](https://chain.link/keepers)提供智能合约方案,以信任最小化和去中心化的方式将常规维护工作外包。 阅读官方 [Keeper 文档](https://docs.chain.link/docs/chainlink-keepers/introduction/),了解有关如何使合约与 Keeper 兼容以及如何使用 Upkeep 服务的信息。 +Chainlink 的 [Keeper Network](https://chain.link/keepers) 为智能合约提供了以信任最小化和去中心化的方式外包常规维护任务的选项。 阅读官方 [Keeper 文档](https://docs.chain.link/docs/chainlink-keepers/introduction/),了解如何使你的合约与 Keeper 兼容以及如何使用 Upkeep 服务的信息。 ## 如何使用区块链预言机 {#use-blockchain-oracles} 许多预言机应用程序都可以集成到以太坊去中心化应用程序中,如下所示: -**[Chainlink](https://chain.link/)** - _Chainlink 去中心化预言机网络提供防篡改的输入、输出和计算,支持任何区块链上的高级智能合约。_ +**[Chainlink](https://chain.link/)** - _Chainlink 去中心化预言机网络提供防篡改的输入、输出和计算,以支持任何区块链上的高级智能合约。_ -**[Chronicle](https://chroniclelabs.org/)** - _Chronicle 通过开发真正可扩展、经济高效、去中心化且可验证的预言机来克服当前链上数据传输面临的局限。_ +**[RedStone Oracles](https://redstone.finance/)** - _RedStone 是一个去中心化的模块化预言机,可提供 gas 优化数据馈送。 _它专门为新兴资产提供价格馈送,例如流动性质押代币 (LST)、流动性再质押代币 (LRT) 和比特币质押衍生品。_ -**[Witnet](https://witnet.io/)** - _Witnet 是一种无需许可、去中心化和抗审查的预言机,帮助智能合约对真实事件做出响应,提供强大的加密经济保障。_ +**[Chronicle](https://chroniclelabs.org/)** - _Chronicle 通过开发真正可扩展、经济高效、去中心化且可验证的预言机,克服了当前在链上传输数据的局限性。_ -**[UMA 预言机](https://uma.xyz)** - _UMA 的乐观预言机允许智能合约快速接收不同应用程序的任何类型的数据,包括保险、金融衍生品和预测市场。_ +**[Witnet](https://witnet.io/)** - _Witnet 是一种无需许可、去中心化且抗审查的预言机,可帮助智能合约以强大的加密经济保障对现实世界事件做出反应。_ -**[Tellor](https://tellor.io/)** - _Tellor 是一种透明的、无需许可的预言机协议,可以让智能合约在需要时轻松获取任何数据。_ +**[UMA Oracle](https://uma.xyz)** - _UMA 的乐观预言机允许智能合约为不同应用程序快速接收任何类型的数据,包括保险、金融衍生品和预测市场。_ -**[Band Protocol](https://bandprotocol.com/)** - _Band Protocol 是一个跨链数据预言机平台,它将真实数据和应用程序接口聚合并连接到智能合约。_ +**[Tellor](https://tellor.io/)** - _Tellor 是一个透明且无需许可的预言机协议,可让你的智能合约在需要时轻松获取任何数据。_ -**[Pyth 网络](https://pyth.network/)** - _Pyth 网络是第一方金融预言机网络,旨在在防篡改、去中心化和自我可持续的环境中在链上发布连续的真实数据。_ +**[Band Protocol](https://bandprotocol.com/)** - _Band Protocol 是一个跨链数据预言机平台,可将现实世界数据和 API 聚合和连接到智能合约。_ -**[API3 去中心化自治组织](https://www.api3.org/)** - _API3 去中心化自治组织提供第一方预言机解决方案,在智能合约的去中心化解决方案中实现更高的来源透明度、安全性和可扩展性_。 +**[Pyth Network](https://pyth.network/)** - _Pyth 网络是第一方金融预言机网络,旨在防篡改、去中心化和自给自足的环境中,在链上发布连续的真实世界数据。_ -**[Supra](https://supra.com/)** - 跨链解决方案的垂直集成工具包,可互连所有区块链,不论公共区块链(一层网络和二层网络)还是私人区块链(企业),提供可用于链上和链下用例的去中心化预言机价格源。 +**[API3 DAO](https://www.api3.org/)** - _API3 DAO 正在提供第一方预言机解决方案,在为智能合约提供的去中心化解决方案中,能够实现更高的来源透明度、安全性和可扩展性_ -## 延伸阅读 {#further-reading} +**[Supra](https://supra.com/)** - 一套垂直集成的跨链解决方案工具包,可互连所有区块链(公共(一层和二层网络)或私有(企业)),提供可用于链上和链下用例的去中心化预言机价格馈送。 + +**[Gas Network](https://gas.network/)** - 一个分布式预言机平台,提供跨区块链的实时燃料价格数据。 通过将主要燃料价格数据提供商的数据引入链上,Gas Network 正在帮助推动互操作性。 Gas Network 支持超过 35 条链的数据,包括以太坊主网和许多领先的二层网络。 + +## 扩展阅读{#further-reading} **文章** - [什么是区块链预言机?](https://chain.link/education/blockchain-oracles) — _Chainlink_ -- [什么是区块链预言机?](https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72) — _Patrick Collins_ -- [去中心化预言机:综述](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _Julien Thevenard_ -- [在以太坊实现区块链预言机](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_ -- [为什么智能合约无法调用应用程序接口?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _StackExchange_ -- [那么,你想要使用价格预言机](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_ +- [什么是区块链预言机?](https://medium.com/better-programming/what-is-a-blockchain-oracle-f5ccab8dbd72) — _Patrick Collins_ +- [去中心化预言机:全面概述](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _Julien Thevenard_ +- [在以太坊上实现区块链预言机](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_ +- [为什么智能合约不能进行 API 调用?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _StackExchange_ +- [所以你想使用价格预言机](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_ **视频** -- [预言机和区块链实用程序拓展](https://youtu.be/BVUZpWa8vpw) — _Real Vision Finance_ -- [第一方与第三方预言机的区别](https://blockchainoraclesummit.io/first-party-vs-third-party-oracles/) - _Blockchain Oracle Summit_ +- [预言机与区块链效用的扩展](https://youtu.be/BVUZpWa8vpw) — _Real Vision Finance_ **教程** -- [如何通过 Solidity 语言在以太坊上提取当前价格](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _Chainlink_ -- [使用预言机数据](https://docs.chroniclelabs.org/Developers/tutorials/Remix) - _Chronicle_ +- [如何在 Solidity 中获取以太坊的当前价格](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _Chainlink_ +- [使用预言机数据](https://docs.chroniclelabs.org/Developers/tutorials/Remix) — _Chronicle_ **示例项目** -- [使用 Solidity 语言为以太坊编写的完整 Chainlink 启动项目y](https://github.com/hackbg/chainlink-fullstack) — _HackBG_ +- [完整的以太坊 Chainlink Solidity 入门项目](https://github.com/hackbg/chainlink-fullstack) — _HackBG_ From 0468f558cf0e604e2215f51bc5d9f6bbf820080e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:26 -0800 Subject: [PATCH 004/581] update(i18n): src/intl/zh/page-gas.json --- src/intl/zh/page-gas.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/intl/zh/page-gas.json b/src/intl/zh/page-gas.json index f216e7367cc..0c7ef1938ea 100644 --- a/src/intl/zh/page-gas.json +++ b/src/intl/zh/page-gas.json @@ -6,7 +6,7 @@ "page-gas-hero-button-1-content": "什么是燃料?", "page-gas-hero-subtitle-1": "以太坊上的网络费用称为燃料。", "page-gas-hero-subtitle-2": "燃料为以太坊提供动力。", - "page-gas-summary-title": "概览", + "page-gas-summary-title": "摘要", "page-gas-summary-item-1": "以太坊上的每一笔交易都需要支付少量处理费用", "page-gas-summary-item-2": "这类费用称为“燃料”费", "page-gas-summary-item-3": "燃料费并非固定,它们随网络拥塞状况变化", @@ -33,7 +33,7 @@ "page-gas-why-do-we-need-gas-header": "为何需要燃料?", "page-gas-why-do-we-need-gas-text": "燃料是保障以太坊安全和处理交易的关键要素。燃料在许多方面发挥作用:", "page-gas-benefits-1-description": "燃料可帮助以太坊防范女巫攻击,阻止恶意行为者通过欺诈活动压垮网络。", - "page-gas-benefits-2-description": "因为计算耗费燃料,通过进行昂贵的交易,无意间或恶意对以太坊进行垃圾邮件攻击在经济上都是不值得的。", + "page-gas-benefits-2-description": "因为计算需要消耗燃料,所以无论是无意还是恶意地用昂贵的交易拥堵以太坊网络,在经济上都是不划算的。", "page-gas-benefits-3-description": "对任何时间可执行的计算量设定硬性限制可避免以太坊被压垮,有助于确保网络始终可访问。", "page-gas-how-is-gas-calculated-header": "如何计算燃料?", "page-gas-advanced": "高级", From dc81ad969ddb0145cf60178f915af83e2b283d7e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:28 -0800 Subject: [PATCH 005/581] update(i18n): src/intl/zh/page-developers-tutorials.json --- src/intl/zh/page-developers-tutorials.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/intl/zh/page-developers-tutorials.json b/src/intl/zh/page-developers-tutorials.json index a3542235a70..2feaadee8b3 100644 --- a/src/intl/zh/page-developers-tutorials.json +++ b/src/intl/zh/page-developers-tutorials.json @@ -1,13 +1,14 @@ { "comp-tutorial-metadata-minute-read": "分钟阅读", - "page-tutorial-listing-policy-intro": "在你提交教程之前,请阅读我们的上架政策。", + "page-tutorial-listing-policy-intro": "在你提交教程之前,请阅读我们的上架政策。", "comp-tutorial-metadata-tip-author": "提示作者", + "page-tutorial-create-an-issue": "创建一个议题", + "page-tutorial-create-an-issue-desc": "填写 issue 模板,概述你的教程。", "page-tutorial-raise-issue-btn": "提出问题", "page-tutorial-read-time": "分钟", "page-tutorial-submit-btn": "提交一个教程", - "page-tutorial-submit-tutorial": "要提交一个教程,你需要使用 GitHub 。我们欢迎你创建一个问题或拉取请求。", "page-tutorial-subtitle": "欢迎来到我们管理的社区教程的列表。", - "page-tutorial-tags-error": "没有教程包含所有这些标签", + "page-tutorial-tags-error": "还没有教程符合你选择的所有标签", "page-tutorial-title": "以太坊开发教程", "page-tutorials-meta-description": "按主题浏览并过滤已审查的以太坊社区教程。", "page-tutorial-external-link": "外部", @@ -16,6 +17,6 @@ "page-tutorial-intermediate": "中级", "page-tutorial-advanced": "高级", "page-find-wallet-try-removing": "尝试删除一两个特性", - "page-find-wallet-clear": "重置过滤器", + "page-find-wallet-clear": "清除过滤器", "page-tutorials-env-banner": "不要提交 .env!请确保从未与任何人分享或泄露你的 .env,因为那样就相当于你在泄露自己的秘密。如果你正在使用版本控制,请将你的 .env 添加到 gitignore 文件。" } From b20780bfaa999ace67b5373e76681dcd8194abb0 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:31 -0800 Subject: [PATCH 006/581] update(i18n): src/intl/zh/page-learn.json --- src/intl/zh/page-learn.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/intl/zh/page-learn.json b/src/intl/zh/page-learn.json index 915cb1552fa..3a1265311b2 100644 --- a/src/intl/zh/page-learn.json +++ b/src/intl/zh/page-learn.json @@ -1,4 +1,5 @@ { + "about-ethereum-video-series": "以太坊相关视频系列", "toc-learn-hub": "学习中心", "toc-what-is-crypto-ethereum": "什么是以太坊?", "toc-how-do-i-use-ethereum": "怎样利用以太坊?", @@ -58,9 +59,9 @@ "dao-card-title": "去中心化自治组织 (DAO)", "dao-card-description": "无需老板的情况下,实现新的协同工作方式。", "dao-card-button": "什么是去中心化自治组织?", - "dapp-card-title": "去中心化应用程序 (dapp)", + "dapp-card-title": "以太坊应用程序", "dapp-card-description": "创建由对等服务构成的数字经济。", - "dapp-card-button": "探索去中心化应用程序", + "dapp-card-button": "什么是应用程序?", "emerging-use-cases-title": "新出现的用例", "emerging-use-cases-description": "以太坊创建或改进的其他重要行业:", "play-to-earn": "通过玩赚钱的游戏 (P2E)", @@ -79,7 +80,7 @@ "energy-consumption-card-description": "以太坊使用多少能量?", "energy-consumption-card-button": "以太坊环保吗?", "ethereum-upgrades-card-title": "以太坊路线图", - "ethereum-upgrades-card-description": "以太坊路线图让它更具扩展性、更安全和更加可持续。", + "ethereum-upgrades-card-description": "以太坊路线图让它更具可扩展性、更安全、更可持续。", "ethereum-upgrades-card-button": "探索路线图", "ethereum-whitepaper-card-title": "以太坊白皮书", "ethereum-whitepaper-card-description": "最初的以太坊协议由 Vitalik Buterin 在 2014 年撰写。", @@ -117,8 +118,10 @@ "zeroknowledge-description": "深入探讨驱动新兴去中心化网络的技术,以及正在建设这个技术的社区", "green-pill-title": "Green Pill", "green-pill-description": "探索为世界创造正面外部效应的加密经济体系", + "ethereum-basics-title": "以太坊基础知识", + "ethereum-basics-description": "通过此易于理解的视频系列,学习以太坊网络架构的基础知识。", "unchained-title": "无链", "unchained-description": "深入了解正在建设去中心化网络的人,支撑我们未来技术的细节,还有一些加密货币最棘手的话题,比如监管、安全和隐私", "the-daily-gwei-title": "The Daily Gwei", "the-daily-gwei-description": "以太坊新闻回顾、更新和分析" -} \ No newline at end of file +} From 4579d10cf2dad9fc94b08feaab326f4b9131407e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:34 -0800 Subject: [PATCH 007/581] update(i18n): src/intl/zh/page-start.json --- src/intl/zh/page-start.json | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/intl/zh/page-start.json diff --git a/src/intl/zh/page-start.json b/src/intl/zh/page-start.json new file mode 100644 index 00000000000..6b9ce06e02b --- /dev/null +++ b/src/intl/zh/page-start.json @@ -0,0 +1,38 @@ +{ + "page-start-meta-title": "从加密货币开始", + "page-start-meta-description": "通往以太坊世界的大门", + "page-start-hero-alt": "从加密货币开始", + "page-start-title": "开始使用以太坊", + "page-start-subtitle": "以太坊绝不止于在交易所炒币。亲自踏入这个新世界,且只要通过几个步骤就能掌握所有的基础知识。", + "page-start-share-section-title": "你知道有谁需要帮助去融入新环境的吗?", + "page-start-share-section-description": "无数人无法开立银行账户或无法自由使用自己的钱。而以太坊的金融系统始终保持公开公正。", + "page-start-man-doge-alt": "柴犬之父", + "page-start-share-modal-trigger": "分享这个页面", + "page-start-share-modal-title": "分享这个页面", + "page-start-share-modal-description": "和你的朋友与家人分享这个页面。", + "page-start-share-modal-copied": "已复制!", + "page-start-share-modal-share": "分享", + "page-start-share-modal-twitter": "Twitter", + "page-start-share-modal-tweet-text": "我已在 ethereum.org 上连接到以太坊网络!您也可以在{url}亲自尝试", + "page-start-download-wallet-title": "下载一个钱包", + "page-start-download-wallet-description": "钱包是一款应用程序,可让您接收、发送数字货币并管理您的以太坊帐户。", + "page-start-download-wallet-checkbox": "我有一个钱包。", + "page-start-download-wallet-continue": "继续", + "page-start-download-wallet-get-wallet": "获取钱包", + "page-start-connect-wallet-title": "连接你的钱包", + "page-start-connect-wallet-description": "您的新钱包可作为以太坊上所有应用和项目的单一账户,无需创建多个独立账户。​", + "page-start-connect-wallet-account-message": "这是你的账户", + "page-start-connect-wallet-continue": "我们继续", + "page-start-connect-wallet-finance-alt": "金融", + "page-start-apps-title": "让我们使用一些应用", + "page-start-apps-description": "是时候上链,并从提供给您的广泛项目生态系统中获益了。", + "page-start-apps-explore-more": "探索更多", + "page-start-apps-go": "Go", + "page-start-apps-socials-tag": "社交", + "page-start-apps-finance-tag": "金融", + "page-start-apps-collectibles-tag": "收藏品", + "page-start-apps-farcaster-description": "加密货币的社交和社区平台。", + "page-start-apps-aave-description": "借出你的代币赚取利息,且可以随时提取。", + "page-start-apps-uniswap-description": "在全球范围内交换差异的代币。", + "page-start-apps-opensea-description": "购买、出售、发现和交易限量版商品。" +} From ca26950239c44a600d5013c656f1b433a5f7c33b Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:37 -0800 Subject: [PATCH 008/581] update(i18n): src/intl/zh/page-index.json From e30fc7a701b0b32719b7ee397029ae968bfc0a9f Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:39 -0800 Subject: [PATCH 009/581] update(i18n): src/intl/zh/page-roadmap.json --- src/intl/zh/page-roadmap.json | 101 ++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/intl/zh/page-roadmap.json diff --git a/src/intl/zh/page-roadmap.json b/src/intl/zh/page-roadmap.json new file mode 100644 index 00000000000..52509b6bd98 --- /dev/null +++ b/src/intl/zh/page-roadmap.json @@ -0,0 +1,101 @@ +{ + "page-roadmap-title": "以太坊路线图", + "page-roadmap-meta-title": "以太坊路线图 | ethereum.org", + "page-roadmap-meta-description": "提高以太坊可扩展性、安全性和可持续性的途径。", + "page-roadmap-banner-notification": "以太坊的发展由社区驱动,且随时可能发生变化。", + "page-roadmap-changes-coming-title": "以太坊将发生什么变化?", + "page-roadmap-changes-coming-description": "以太坊已是一个功能强大的平台,但仍在持续改进。一系列宏大的升级计划将使以太坊从当前形态蜕变为完全可扩展、具备最大韧性的平台。", + "page-roadmap-cheaper-transactions-title": "交易费用更低", + "page-roadmap-cheaper-transactions-description": "卷叠的成本过高且依赖中心化组件,导致用户需要对其运营商充分信任。路线图中包含了针对这两个问题的解决方案。", + "page-roadmap-cheaper-transactions-button": "更多关于降低费用的内容", + "page-roadmap-extra-security-title": "更安全", + "page-roadmap-extra-security-description": "以太坊本身已具备极高的安全性,但其防护能力仍可进一步强化,以确保在未来漫长岁月里抵御各类攻击。", + "page-roadmap-extra-security-button": "有关安全性的更多信息", + "page-roadmap-better-user-experience-title": "改善用户体验", + "page-roadmap-better-user-experience-description": "对智能合约钱包和轻量级节点的更多支持将使以太坊使用起来更简单、更安全。", + "page-roadmap-better-user-experience-button": "更多关于用户体验的内容", + "page-roadmap-future-proofing-title": "面向未来", + "page-roadmap-future-proofing-description": "以太坊的研究人员和开发者正在解决明日的难题,为未来做好准备。", + "page-roadmap-future-proofing-button": "更多关于面向未来的设计", + "page-roadmap-why-need-title": "为什么以太坊需要一份路线图?", + "page-roadmap-why-need-description": "以太坊会定期进行升级,以增强其可扩展性、安全性和可持续性。以太坊的核心优势之一在于能够适应研究中出现的新理念。这种适应性赋予以太坊应对新兴挑战的灵活性,使其能够紧跟最先进的技术突破。", + "page-roadmap-how-defined-title": "路线图是如何制定的?", + "page-roadmap-how-defined-p1": "因为协议的技术性很强,所以路线图主要是研究人员和开发者多年来工作的结果,但任何有意向的人都可以参与进来。", + "page-roadmap-how-defined-p2": "创意通常始于论坛讨论,例如ethresear.chEthereum Magicians或以太坊 Discord 服务器。这些创意可能源于对新发现漏洞的回应,也可能来自应用层机构(如去中心化应用和交易所)的建议,或是针对终端用户已知痛点(如成本或交易速度)的解决方案。", + "page-roadmap-how-defined-p3": "当这些想法成熟后,便可作为以太坊改进提案提交。整个过程完全公开,社区中的任何人都可随时参与讨论。", + "page-roadmap-governance-button": "有关以太坊治理的更多信息", + "page-roadmap-hero-alt": "以太坊路线图", + "page-roadmap-technical-upgrades-title": "以太坊即将迎来哪些技术升级?", + "page-roadmap-danksharding-title": "Danksharding", + "page-roadmap-danksharding-description": "通过在以太坊区块中引入二进制大对象,Danksharding 升级大幅降低了 L2 扩容方案的用户成本。", + "page-roadmap-single-slot-finality-title": "单时隙确定性", + "page-roadmap-single-slot-finality-description": "不用再等待十五分钟,区块就能在同一个时隙里被提议并完成最终确认。这对应用来说更方便,也更难遭受攻击。", + "page-roadmap-account-abstraction-title": "账户抽象", + "page-roadmap-account-abstraction-description": "账户抽象是一类升级方案,它能在以太坊上原生支持智能合约钱包,而无需借助复杂的中间人。", + "page-roadmap-statelessness-title": "无状态性", + "page-roadmap-statelessness-description": "无状态客户端将能够在不需要存储大量数据的情况下验证新区块。这将带来与运行完整节点相同的好处,却只需当前成本的一小部分。", + "page-roadmap-learn-more": "了解更多", + "page-roadmap-timeline-title": "这些升级的时间点是什么?", + "page-roadmap-blocks-alt": "以太坊区块", + "page-roadmap-faq-1-title": "以太坊路线图是否会随着时间的推移而改变?", + "page-roadmap-faq-1-p1": "是的,几乎肯定会。", + "page-roadmap-faq-1-p1-continued": "这个路线图是当前升级以太坊的计划,涵盖近期和未来的发展规划。随着新信息和新技术的出现,我们预计该路线图将随之调整。", + "page-roadmap-faq-1-p2": "将以太坊路线图视为改进以太坊的一整套计划;这是研究人员和开发人员针对以太坊最优发展道路做出的最佳假设。", + "page-roadmap-faq-2-title": "路线图将何时完成?", + "page-roadmap-faq-2-p1": "一些升级的优先级较低,因此在接下来的 5-10 年内可能不会实施(例如量子抗性)。", + "page-roadmap-faq-2-p1-strong": "精确给出每次升级的时间是复杂的", + "page-roadmap-faq-2-p1-continued": "由于路线图中的多项任务往往同时推进且开发进度各异,因此难以精确预测具体实施时间。升级的紧迫性也会随时间推移而变化,这取决于外部因素(例如量子计算机性能与可用性的突飞猛进,可能使抗量子密码技术的部署变得更为迫切)。", + "page-roadmap-faq-2-p2": "理解以太坊的发展可以类比为生物进化。一个能够适应新挑战并保持活力的网络,比起抗拒变化的网络更有可能取得成功。不过,随着网络在性能、扩展性和安全性方面不断提升,对协议进行修改的需求将会越来越少。", + "page-roadmap-faq-3-title": "我需要为这些升级做准备吗?", + "page-roadmap-faq-3-p1": "升级通常不会影响最终用户,除非提供更佳的用户体验、更安全的协议,以及更多与以太坊交互的选项普通用户无需主动参与升级,也无需采取任何措施来保障资产安全。节点运营商需要更新客户端以应对升级。某些升级可能对应用程序开发者产生影响,例如历史数据过期升级可能导致开发者需要从新数据源获取历史数据。", + "page-roadmap-faq-4-title": "什么是分片?", + "page-roadmap-faq-4-p1": "分片技术是将以太坊区块链分割成多条子链,使得验证者仅负责处理部分数据。该方案最初被视为以太坊实现可扩展性的途径。然而,二层网络卷叠技术的发展远超预期,已实现显著的扩容效果,且在 Proto-Danksharding 升级实施后将带来更大提升。这意味着“分片链”已不再必要,现已被移出发展路线图。", + "page-roadmap-release-status-prod": "在建设中", + "page-roadmap-release-status-soon": "即将推出", + "page-roadmap-release-status-dev": "开发中的客户端", + "page-roadmap-release-main-features": "主要特性", + "page-roadmap-release-learn-more": "了解更多", + "page-roadmap-paris-pos-title": "向权益证明机制过渡", + "page-roadmap-paris-pos-item-1": "用基于质押的共识机制取代了高能耗挖矿机制", + "page-roadmap-paris-pos-item-2": "将以太坊的能耗降低了约99.95%", + "page-roadmap-paris-beacon-title": "与信标链整合", + "page-roadmap-paris-beacon-item-1": "将信标链与以太坊主网合并", + "page-roadmap-paris-beacon-item-2": "实现向权益证明共识机制的全面过渡", + "page-roadmap-paris-difficulty-title": "难度炸弹移除", + "page-roadmap-paris-difficulty-item-1": "移除了原本会不断提高挖矿难度的“难度炸弹”", + "page-roadmap-paris-difficulty-item-2": "确保了向新共识机制的平稳过渡", + "page-roadmap-shapella-withdrawals-title": "质押提款", + "page-roadmap-shapella-withdrawals-item-1": "允许验证者提取其质押的以太币和奖励", + "page-roadmap-shapella-withdrawals-item-2": "引入了部分和全部取消质押功能", + "page-roadmap-shapella-eip4895-title": "EIP-4895:信标链主动推送提现", + "page-roadmap-shapella-eip4895-item-1": "新增了系统级的提现操作", + "page-roadmap-shapella-eip4895-item-2": "确保提现请求的处理安全且高效", + "page-roadmap-shapella-eip3651-title": "EIP-3651:预热 COINBASE", + "page-roadmap-shapella-eip3651-item-1": "降低了访问 COINBASE 地址的 gas 成本", + "page-roadmap-shapella-eip3651-item-2": "提升了部分智能合约操作的效率", + "page-roadmap-dencun-danksharding-title": "Proto-danksharding (EIP-4844)", + "page-roadmap-dencun-danksharding-item-1": "引入了二进制大对象,显著降低了卷叠交易的成本", + "page-roadmap-dencun-danksharding-item-2": "新增一种可临时且低成本地存储数据的交易类型", + "page-roadmap-dencun-eip1153-title": "EIP-1153:瞬态存储操作码", + "page-roadmap-dencun-eip1153-item-1": "新增了 TSTORE 和 TLOAD 操作码,用于交易执行过程中的临时存储", + "page-roadmap-dencun-eip1153-item-2": "支持更高效的智能合约模式,并降低 Gas 成本", + "page-roadmap-dencun-eip4788-title": "EIP-4788:EVM 中的信标区块根", + "page-roadmap-dencun-eip4788-item-1": "向智能合约公开共识层的信息", + "page-roadmap-dencun-eip4788-item-2": "支持新的最小信任化应用和跨链桥接", + "page-roadmap-pectra-eoa-title": "使外部账户钱包拥有智能合约功能", + "page-roadmap-pectra-eoa-item-1": "用户可以将自己的地址委托给现有智能合约的代码,从而获得交易批处理、交易手续费赞助或更完善的账户恢复机制等好处", + "page-roadmap-pectra-balance-title": "提高有效质押最高账户余额", + "page-roadmap-pectra-balance-item-1": "质押者现可选择任意数量的ETH进行质押,并在超过最低质押额的每1 ETH基础上获得奖励", + "page-roadmap-pectra-blob-title": "提升 Blob 吞吐量", + "page-roadmap-pectra-blob-item-1": "二进制大对象的数量将从 3 个增加到 6 个目标,最高可达 9 个,从而降低以太坊卷叠的费用", + "page-roadmap-fusaka-peerdas-title": "点对点数据可用性采样(PeerDAS)", + "page-roadmap-fusaka-peerdas-item-1": "提升卷叠的数据可用性效率", + "page-roadmap-fusaka-peerdas-item-2": "使运行节点更容易,同时保持去中心化特性", + "page-roadmap-fusaka-additional-title": "可能的附加功能", + "page-roadmap-fusaka-additional-item-1": "在移动设备上支持安全隔离区,以提升用户体验", + "page-roadmap-fusaka-additional-item-2": "Blob 费用市场改进", + "page-roadmap-fusaka-additional-item-3": "进一步提升验证器效率和网络性能", + "page-roadmap-glamsterdam-discussed-title": "为 Glamsterdam 安排的议题", + "page-roadmap-glamsterdam-discussed-item-1": "原生提议者-构建者分离 (ePBS)", + "page-roadmap-glamsterdam-discussed-item-2": "区块级访问列表 (BAL)" +} From c991176d03fe2b334f5a93c1fa156a799a92167c Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:43 -0800 Subject: [PATCH 010/581] update(i18n): src/intl/zh/page-get-eth.json --- src/intl/zh/page-get-eth.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/intl/zh/page-get-eth.json b/src/intl/zh/page-get-eth.json index 6cd58187a0b..338e8368c31 100644 --- a/src/intl/zh/page-get-eth.json +++ b/src/intl/zh/page-get-eth.json @@ -1,7 +1,7 @@ { "page-get-eth-article-keeping-crypto-safe": "保证你加密货币安全的关键", "page-get-eth-article-protecting-yourself": "保护您自身与资金安全", - "page-get-eth-article-store-digital-assets": "如何在以太坊上存储数字资产", + "page-get-eth-article-store-digital-assets": "怎样在以太坊上存储数字资产", "page-get-eth-article-protecting-yourself-desc": "MyCrypto", "page-get-eth-article-keeping-crypto-safe-desc": "Coinbase", "page-get-eth-article-store-digital-assets-desc": "Consensys", @@ -74,6 +74,6 @@ "page-get-eth-your-address-desc": "在你下载钱包的时候它会为你创建一个公开的地址,如下图所示:", "page-get-eth-your-address-desc-3": "把它想像成你的电子邮箱地址,只是它用来接收的是ETH。如果你想从一个交易所发送ETH到你的钱包,这个地址就是目的地。在发送前一定要多次检查,确保地址正确!", "page-get-eth-your-address-wallet-link": "查看钱包", - "listing-policy-raise-issue-link": "提出问题", + "listing-policy-raise-issue-link": "提 issue", "page-find-wallet-last-updated": "最近更新" } From 627639d93270cef46fd530c3dbd51081b9b4548a Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:46 -0800 Subject: [PATCH 011/581] update(i18n): src/intl/zh/page-wallets.json From 504f4068454fa17c6e61e63495a63619aa72e2e9 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:49 -0800 Subject: [PATCH 012/581] update(i18n): src/intl/zh/page-layer-2.json --- src/intl/zh/page-layer-2.json | 115 +++++++++++++++++----------------- 1 file changed, 59 insertions(+), 56 deletions(-) diff --git a/src/intl/zh/page-layer-2.json b/src/intl/zh/page-layer-2.json index c0a281a037f..27b7bf94358 100644 --- a/src/intl/zh/page-layer-2.json +++ b/src/intl/zh/page-layer-2.json @@ -1,58 +1,61 @@ { - "page-layer-2-hero-title": "二层网络", - "page-layer-2-hero-header": "以太坊网络", - "page-layer-2-hero-description": "以极低成本使用以太坊。", - "page-layer-2-hero-button-2-content": "了解更多", - "page-layer-2-period": ".", - "page-layer-2-calloutCard-1-title": "0.01 美元手续费", - "page-layer-2-calloutCard-1-description": "您可以进行交易、全球转账,或使用应用程序,无需担心高额费用。", - "page-layer-2-calloutCard-2-title": "几乎即时交易", - "page-layer-2-calloutCard-2-description": "无论是快速支付还是参与去中心化金融 (DeFi),所有交易仅需几秒钟即可完成。", - "page-layer-2-calloutCard-3-title": "以太坊提供支持", - "page-layer-2-calloutCard-3-description": "以太坊这个经过时间验证且去中心化的区块链可以作为其他较新网络的结算层。", - "page-layer-2-meta-title": "以太坊二层网络 (Layer 2) 简介:优势和用途", - "page-layer-2-meta-description": "了解以太坊二层网络", - "page-layer-2-powered-by-ethereum-title": "以太坊提供支持", - "page-layer-2-powered-by-ethereum-description-1": "以太坊已不再是单一网络。", - "page-layer-2-powered-by-ethereum-description-2": "如今有数百个区块链构建于以太坊之上,使以太坊变得更具成本效益、更快速,并适合日常使用。", - "page-layer-2-powered-by-ethereum-description-3": "加入由以太坊支持的众多网络之一,拥抱未来!", - "page-layer-2-man-and-dog-alt": "男人和狗在玩耍", - "page-layer-2-blockchain-transaction-cost": "以太坊区块链上的平均交易费用", - "page-layer-2-networks-transaction-cost": "由以太坊支持的网络上的平均交易费用", - "page-layer-2-network-of-networks-title": "众网之网", - "page-layer-2-network-of-networks-description": "以太坊的强大和安全性为其他网络提供了构建平台。只需一个账户,所有功能即可兼容并无缝连接。", - "page-layer-2-ethereum-logo-alt": "以太坊", - "page-layer-2-ready-to-start-title": "准备好开始了吗?", - "page-layer-2-ready-to-start-description": "查看你可以使用的各种网络。", - "page-layer-2-ready-to-start-button": "探索网络", - "page-layer-2-go": "出发", - "page-layer-2-walking-alt": "走路", - "page-layer-2-why-do-we-need-multiple-networks-1": "为什么我们需要多个以太坊网络?", - "page-layer-2-why-do-we-need-multiple-networks-2": "为什么不是只有一个以太坊网络,而是这么多不同的网络?", - "page-layer-2-faq-title": "常见问题", - "page-layer-2-faq-ExpandableCard-1-title": "如何判断一个网络是否属于以太坊?", - "page-layer-2-faq-ExpandableCard-1-description-1": "有许多不同的方式可以对与以太坊相关的网络进行分类。许多网络声称在扩展以太坊,以提升知名度。然而,一个清晰的判断标准是:该网络是否将其数据存储在以太坊主网中。这种方式极大地提升了用户的安全性,并契合以太坊无需许可的愿景。这类项目通常被称为“卷叠 (Rollup)”。如果数据存储在其他地方,那么该项目就不是以太坊的直接扩展,而是独立网络。了解一些最受欢迎的以太坊网络", - "page-layer-2-faq-ExpandableCard-1-description-2": "一些特定行业(如游戏或非金融应用)可能不需要如此直接的密切关系,在这种情况下,其他技术会更合适。", - "page-layer-2-faq-ExpandableCard-2-title": "所有这些网络都安全吗?", - "page-layer-2-faq-ExpandableCard-2-description-1": "虽然这些网络通常设计有强大的安全功能,但其安全性取决于底层技术、智能合约的安全性以及", - "page-layer-2-faq-ExpandableCard-2-link": "网络成熟度", - "page-layer-2-faq-ExpandableCard-2-description-2": "用户应做好尽职调查,从小额交易开始,并随时了解最新发展,以确保安全使用。", - "page-layer-2-faq-ExpandableCard-3-title": "为什么以太坊不能扩展其自身,而是需要依赖这些网络?", - "page-layer-2-faq-ExpandableCard-3-description": "以太坊无法简单地扩展其主链,因为它需要保持安全和去中心化。如果让主链运行更快,可能会降低其安全性并趋向中心化。以太坊上的网络通过在主链之外处理交易,再提交到主链以确保安全性,从而让以太坊在不损失安全性或去中心化特性的同时处理更多交易。", - "page-layer-2-faq-ExpandableCard-4-title": "为什么没有“官方”以太坊网络?", - "page-layer-2-faq-ExpandableCard-4-description": "正如没有“官方”以太坊客户端一样,也不存在“官方”以太坊二层网络。以太坊是无需许可的 —— 技术上任何人都可以创建二层网络!很多团队都将实现自己的二层网络版本,整个生态系统都将受益于针对不同用例进行优化的多样性设计方法。就像我们有由多个团队开发的多个以太坊客户端以增强网络的多样性,这也将是二层网络未来的开发方式。", - "page-layer-2-callout-1-title": "探索不同的网络", - "page-layer-2-callout-1-description": "了解不同网络之间的差异及其发展进展。", - "page-layer-2-callout-2-title": "想了解更多细节?", - "page-layer-2-callout-2-description": "对这种扩容方法的技术和原因感兴趣?了解有关思维方式和不同技术方法的更多信息。", - "page-layer-2-arbitrum-description": "Arbitrum One 是由 Offchain Labs 开发并由 Arbitrum DAO 治理的通用型乐观卷叠 (Optimistic Rollup)。", - "page-layer-2-base-description": "Base 是基于 OP Stack 构建的乐观卷叠。它为任何地方的任何开发者提供低成本且构建者友好的链上构建方式。", - "page-layer-2-optimism-description": "OP Mainnet 是 EVM 等效的乐观卷叠。它的目标是快速、简单和安全。", - "page-layer-2-blast-description": "Blast 是 EVM 兼容的乐观卷叠,支持原生收益。", - "page-layer-2-zksync2-description": "ZKsync Era 是完全 EVM 兼容的通用零知识卷叠 (ZK Rollup)。", - "page-layer-2-linea-description": "Linea 是由 Consensys zkEVM 支持的零知识卷叠,旨在扩展以太坊网络。", - "page-layer-2-scroll-description": "Scroll 是通过零知识技术和 EVM 兼容性来扩展以太坊能力的零知识卷叠。", - "page-layer-2-starknet-description": "Starknet 是基于 STARK 和 Cairo VM 的通用零知识卷叠。", - "page-layer-2-mode-description": "Mode 是基于 OP 技术栈的乐观卷叠,致力于打造 AIFi 经济。", - "page-layer-2-taiko-description": "Taiko 是去中心化、以太坊等效的 ZK-EVM 卷叠,支持无缝跨链通信。" + "page-layer-2-hero-title": "二层", + "page-layer-2-hero-header": "以太坊网络", + "page-layer-2-hero-description": "以极低成本使用以太坊。", + "page-layer-2-hero-button-2-content": "了解更多", + "page-layer-2-period": "。", + "page-layer-2-calloutCard-1-title": "0.01 美元手续费", + "page-layer-2-calloutCard-1-description": "您可以进行交易、全球转账,或使用应用程序,无需担心高额费用。", + "page-layer-2-calloutCard-2-title": "几乎即时交易", + "page-layer-2-calloutCard-2-description": "无论是快速支付还是参与去中心化金融 (DeFi),所有交易仅需几秒钟即可完成。", + "page-layer-2-calloutCard-3-title": "以太坊提供支持", + "page-layer-2-calloutCard-3-description": "以太坊这个经过时间验证且去中心化的区块链可以作为其他较新网络的结算层。", + "page-layer-2-meta-title": "以太坊二层网络 (Layer 2) 简介:优势和用途", + "page-layer-2-meta-description": "了解以太坊二层网络", + "page-layer-2-powered-by-ethereum-title": "以太坊提供支持", + "page-layer-2-powered-by-ethereum-description-1": "以太坊已不再是单一网络。", + "page-layer-2-powered-by-ethereum-description-2": "如今有数百个区块链构建于以太坊之上,使以太坊变得更具成本效益、更快速,并适合日常使用。", + "page-layer-2-powered-by-ethereum-description-3": "加入由以太坊支持的众多网络之一,拥抱未来!", + "page-layer-2-man-and-dog-alt": "男人和狗在玩耍", + "page-layer-2-blockchain-transaction-cost": "以太坊区块链上的平均交易费用", + "page-layer-2-networks-transaction-cost": "由以太坊支持的网络上的平均交易费用", + "page-layer-2-network-of-networks-title": "众网之网", + "page-layer-2-network-of-networks-description": "以太坊的强大和安全性为其他网络提供了构建平台。只需一个账户,所有功能即可兼容并无缝连接。", + "page-layer-2-ethereum-logo-alt": "以太坊(Ethereum)", + "page-layer-2-ready-to-start-title": "准备好开始了吗?", + "page-layer-2-ready-to-start-description": "查看你可以使用的各种网络。", + "page-layer-2-ready-to-start-button": "探索网络", + "page-layer-2-go": "前往", + "page-layer-2-walking-alt": "走路", + "page-layer-2-why-do-we-need-multiple-networks-1": "为什么我们需要多个以太坊网络?", + "page-layer-2-why-do-we-need-multiple-networks-2": "为什么不是只有一个以太坊网络,而是这么多不同的网络?", + "page-layer-2-faq-title": "常见问题", + "page-layer-2-faq-ExpandableCard-1-title": "如何判断一个网络是否属于以太坊?", + "page-layer-2-faq-ExpandableCard-1-description-1": "有许多不同的方式可以对与以太坊相关的网络进行分类。许多网络声称在扩展以太坊,以提升知名度。然而,一个清晰的判断标准是:该网络是否将其数据存储在以太坊主网中。这种方式极大地提升了用户的安全性,并契合以太坊无需许可的愿景。这类项目通常被称为“卷叠 (Rollup)”。如果数据存储在其他地方,那么该项目就不是以太坊的直接扩展,而是独立网络。了解一些最受欢迎的以太坊网络", + "page-layer-2-faq-ExpandableCard-1-description-2": "一些特定行业(如游戏或非金融应用)可能不需要如此直接的密切关系,在这种情况下,其他技术会更合适。", + "page-layer-2-faq-ExpandableCard-2-title": "所有这些网络都安全吗?", + "page-layer-2-faq-ExpandableCard-2-description-1": "虽然这些网络通常设计有强大的安全功能,但其安全性取决于底层技术、智能合约的安全性以及", + "page-layer-2-faq-ExpandableCard-2-link": "网络成熟度", + "page-layer-2-faq-ExpandableCard-2-description-2": "用户应做好尽职调查,从小额交易开始,并随时了解最新发展,以确保安全使用。", + "page-layer-2-faq-ExpandableCard-3-title": "为什么以太坊不能扩展其自身,而是需要依赖这些网络?", + "page-layer-2-faq-ExpandableCard-3-description": "以太坊无法简单地扩展其主链,因为它需要保持安全和去中心化。如果让主链运行更快,可能会降低其安全性并趋向中心化。以太坊上的网络通过在主链之外处理交易,再提交到主链以确保安全性,从而让以太坊在不损失安全性或去中心化特性的同时处理更多交易。", + "page-layer-2-faq-ExpandableCard-4-title": "为什么没有“官方”以太坊网络?", + "page-layer-2-faq-ExpandableCard-4-description": "正如没有“官方”以太坊客户端一样,也不存在“官方”以太坊二层网络。以太坊是无需许可的 —— 技术上任何人都可以创建二层网络!很多团队都将实现自己的二层网络版本,整个生态系统都将受益于针对不同用例进行优化的多样性设计方法。就像我们有由多个团队开发的多个以太坊客户端以增强网络的多样性,这也将是二层网络未来的开发方式。", + "page-layer-2-callout-1-title": "探索不同的网络", + "page-layer-2-callout-1-description": "了解不同网络之间的差异及其发展进展。", + "page-layer-2-callout-2-title": "想了解更多细节?", + "page-layer-2-callout-2-description": "对这种扩容方法的技术和原因感兴趣?了解有关思维方式和不同技术方法的更多信息。", + "page-layer-2-arbitrum-description": "Arbitrum One 是由 Offchain Labs 开发并由 Arbitrum DAO 治理的通用型乐观卷叠 (Optimistic Rollup)。", + "page-layer-2-base-description": "Base 是基于 OP Stack 构建的乐观卷叠。它为任何地方的任何开发者提供低成本且构建者友好的链上构建方式。", + "page-layer-2-optimism-description": "OP Mainnet 是 EVM 等效的乐观卷叠。它的目标是快速、简单和安全。", + "page-layer-2-blast-description": "Blast 是 EVM 兼容的乐观卷叠,支持原生收益。", + "page-layer-2-zksync2-description": "ZKsync Era 是完全 EVM 兼容的通用零知识卷叠 (ZK Rollup)。", + "page-layer-2-linea-description": "Linea 是由 Consensys zkEVM 支持的零知识卷叠,旨在扩展以太坊网络。", + "page-layer-2-scroll-description": "Scroll 是通过零知识技术和 EVM 兼容性来扩展以太坊能力的零知识卷叠。", + "page-layer-2-starknet-description": "Starknet 是基于 STARK 和 Cairo VM 的通用零知识卷叠。", + "page-layer-2-mode-description": "Mode 是基于 OP 技术栈的乐观卷叠,致力于打造 AIFi 经济。", + "page-layer-2-taiko-description": "Taiko 是去中心化、以太坊等效的 ZK-EVM 卷叠,支持无缝跨链通信。", + "page-layer-2-unichain-description": "Unichain 是一个 DeFi 原生的以太坊 L2,旨在成为跨链流动性的大本营。", + "page-layer-2-ink-description": "Ink 是一个以太坊 OP Stack 二层区块链,旨在成为 Superchain 的 DeFi 之家;它是一个强大的基础层,用于部署创新的 DeFi 协议。", + "page-layer-2-zircuit-description": "Zircuit 是一个兼容 EVM 的 ZK Rollup,其特点是具有 AI 驱动的排序者级别安全性,可检测并防范恶意交易。" } From dee4bd345335750d6013a274f5b81a96a29b78c1 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:52 -0800 Subject: [PATCH 013/581] update(i18n): src/intl/zh/page-founders.json --- src/intl/zh/page-founders.json | 65 ++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/intl/zh/page-founders.json diff --git a/src/intl/zh/page-founders.json b/src/intl/zh/page-founders.json new file mode 100644 index 00000000000..e600f76b27a --- /dev/null +++ b/src/intl/zh/page-founders.json @@ -0,0 +1,65 @@ +{ + "page-founders-accelerators-alliance-description": "Alliance 是领先的加密货币加速器和创始人社区。现在也接受 AI 初创公司。", + "page-founders-accelerators-alliance-highlight-1": "50 万美元资金", + "page-founders-accelerators-base-description": "Base Batches 是一个面向构建者的全球性计划,旨在打造下一波链上应用程序", + "page-founders-accelerators-base-highlight-1": "高达 100 万美元的资金", + "page-founders-accelerators-growth-label": "加速器与成长", + "page-founders-accelerators-kernel-description": "Kernel 旨在通过与同行的反复互动来慢慢构建。", + "page-founders-accelerators-kernel-highlight-1": "2,200 多名成员", + "page-founders-accelerators-kernel-highlight-2": "150 多个活跃项目", + "page-founders-apply-h2": "申请支持", + "page-founders-apply-p1": "选择您的路径,我们将为您引导至最相关的下一步。", + "page-founders-cta-explore-name": "探索 {name}", + "page-founders-cta-visit-name": "浏览{name}", + "page-founders-description": "一个为企业家们打造的专属中心,让他们可以获得以太坊生态系统中的各种计划、指导和知名度,为创始人在各个阶段提供所需支持。", + "page-founders-funding-arbitrum-description": "其使命是赋能开发者和企业家,利用 Arbitrum 网络的功能来构建有影响力的去中心化应用程序。", + "page-founders-funding-arbitrum-highlight-1": "已支持 300 多个项目", + "page-founders-funding-base-description": "构建者资助是一项持续进行的实验,旨在表彰 Base 构建者。", + "page-founders-funding-base-highlight-1": "1-5 ETH 资助", + "page-founders-funding-esp-description": "为关键项目分配资源,成为以太坊生态系统中受重视的声音,并向外界宣传以太坊。", + "page-founders-funding-esp-highlight-1": "已支持 2,000 多个项目", + "page-founders-funding-label": "资金赞助", + "page-founders-funding-optimism-description": "为开发链上应用程序、工具和基础设施以推动超级链发展的个人构建者和团队提供支持。", + "page-founders-funding-optimism-highlight-1": "19 条链符合资格", + "page-founders-funding-optimism-highlight-2": "已支持 700 多个项目", + "page-founders-funding-polygon-description": "一项社区资助计划,旨在支持致力于 Polygon 发展的构建者、团队和创建人。", + "page-founders-funding-polygon-highlight-1": "在 Polygon 上构建或迁移至 Polygon", + "page-founders-funding-unichain-description": "一系列旨在支持 Unichain 新兴开发者社区的计划和资源。", + "page-founders-funding-unichain-highlight-1": "新颖的 DeFi 机制", + "page-founders-get-in-touch-cta": "请求支持", + "page-founders-get-in-touch-h2": "以太坊基金会创始人成功团队", + "page-founders-get-in-touch-p1": "创始人成功计划专为有大胆想法的构建者、将以太坊视为未来产品和业务基础的企业家而设。", + "page-founders-metadata-description": "通过各种计划、指导和资源,赋能以太坊上的创始人。了解以太坊生态系统如何支持企业家从想法走向成长。", + "page-founders-metadata-title": "创始人支持", + "page-founders-partnerships-devconnect-description": "Devconnect ARG 是以太坊世界博览会:一个展示应用程序的活动,旨在连接、构建并加速以太坊的采用。", + "page-founders-partnerships-ef-founder-support-cta": "安排介绍", + "page-founders-partnerships-ef-founder-support-description": "协调收入分成、流动性和合作伙伴关系。以太坊基金会创始人成功团队帮助连接合适的团队,促成合作。", + "page-founders-partnerships-ef-founder-support-subtitle": "介绍 DeFi 协议/团队", + "page-founders-partnerships-ens-description": "该计划旨在赋能那些已为开发者和用户展现出卓越实用性和影响力的项目。", + "page-founders-partnerships-ens-highlight-1": "最高 2 ETH 的小额资助", + "page-founders-partnerships-ens-highlight-2": "最高 5 万 USDC 的大额资助", + "page-founders-partnerships-ethglobal-description": "旨在培养世界一流的以太坊开发者和企业家生态系统的全球活动。", + "page-founders-partnerships-label": "合作伙伴关系与集成", + "page-founders-partnerships-protocol-guild-description": "为以太坊核心开发者设立的独立资助组织。我们主动资助那些从事生态系统赖以生存工作的维护者。", + "page-founders-partnerships-protocol-guild-highlight-1": "为核心开发者募集 2800 万美元", + "page-founders-partnerships-unichain-description": "一系列旨在支持 Unichain 新兴开发者社区的计划和资源。", + "page-founders-partnerships-unichain-highlight-1": "新颖的 DeFi 机制", + "page-founders-story-dith-p1": "以太坊基金会的创始人支持非常出色,在我们完成第一轮融资时,他们是我们公正的思想伙伴和顾问。我毫不犹豫地向其他 EVM 创始人推荐他们。", + "page-founders-story-fahim-p1": "创始人成功团队是以太坊生态系统的一笔巨大财富。他们真正关心帮助团队取得成功,他们为 Optimism 等团队提供的亲身实践的支持和真正的承诺显而易见。我很高兴能继续与他们合作,共同加强我们的生态系统。", + "page-founders-story-kedian-p1": "我们在以太坊基金会的联系人对我们的指导起到了关键作用,他不仅就我们即将推出的功能分享了宝贵的见解,还向我们介绍了以太坊生态系统中的关键 L2。", + "page-founders-story-kedian-p2": "感谢他们对我们 GTM 策略的反馈,我们加快了决策过程,减少了研究时间,并直接专注于执行。", + "page-founders-succeed-h2": "他人的成功之道", + "page-founders-succeed-p1": "您不必独自构建,这个生态系统会是您的坚实后盾。", + "page-founders-support-tag-accelerator": "加速器", + "page-founders-support-tag-active": "活跃资源", + "page-founders-support-tag-audit-grants": "审计资助", + "page-founders-support-tag-ecosystem-events": "生态系统活动", + "page-founders-support-tag-events": "活动", + "page-founders-support-tag-fundraising": "筹款", + "page-founders-support-tag-grant-program": "资助计划", + "page-founders-support-tag-mentorship": "导师指导", + "page-founders-support-tag-networking": "社交网络", + "page-founders-support-tag-public-goods": "公共物品", + "page-founders-support-tag-tooling-infra": "工具和基础设施", + "page-founders-title": "赋能以太坊上的创始人" +} From e12a2876c5511e75f815179e5660f76a78695739 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:54 -0800 Subject: [PATCH 014/581] update(i18n): src/intl/zh/page-community.json --- src/intl/zh/page-community.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/intl/zh/page-community.json b/src/intl/zh/page-community.json index 3b7ddff0e4c..b37af28b818 100644 --- a/src/intl/zh/page-community.json +++ b/src/intl/zh/page-community.json @@ -7,6 +7,9 @@ "page-community-card-3-description": "查阅如何根据自己的专业背景和技能制定一份为项目出力的方法列表。", "page-community-card-4-title": "寻找资助", "page-community-card-4-description": "为了帮助你的项目启动,你可以申请资助。", + "page-community-community-hub-list-h3": "社区中心", + "page-community-community-hub-list-cta-label-1": "联合办公报名", + "page-community-community-hub-list-cta-label-2": "见面会", "page-community-contribute": "为 ethereum.org 贡献力量", "page-community-contribute-button": "关于贡献力量的更多信息", "page-community-contribute-description": "对于许多人来说,ethereum.org 是他们进入生态系统的第一步。由数千名开源贡献者保持网站信息最新和准确。想要帮忙吗?请阅读我们的贡献指南,或在我们的 GitHub 上帮忙处理问题。", @@ -32,7 +35,7 @@ "page-community-hero-title": "加入社区", "page-community-meetuplist-no-meetups": "没有符合搜索条件的聚会结果。知道聚会名称?", "page-community-meta-title": "社区中心", - "page-community-meta-description": "社区主页描述", + "page-community-meta-description": "以太坊生态系统社区中心", "page-community-open-source": "创建人?构建者?为你的工作寻求资助。", "page-community-open-source-description": "你正在或想要构建以太坊?多家公司目前正在招聘数千名技术和非技术性岗位人员。心中已有想法?试着找到一笔资助,让你的项目启动。", "page-community-open-source-image-alt": "为你的工作寻求资助", From 724dd26b7064c559bfe3f71856744d4e3a9902c6 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:07:57 -0800 Subject: [PATCH 015/581] update(i18n): src/intl/zh/page-bug-bounty.json --- src/intl/zh/page-bug-bounty.json | 73 +++++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/src/intl/zh/page-bug-bounty.json b/src/intl/zh/page-bug-bounty.json index 2420c05fcbb..745c1b4de25 100644 --- a/src/intl/zh/page-bug-bounty.json +++ b/src/intl/zh/page-bug-bounty.json @@ -4,7 +4,7 @@ "page-upgrades-bug-bounty-client-bugs": "客户端漏洞", "page-upgrades-bug-bounty-client-bugs-desc": "客户端运行以太坊网络,它们需要遵循规范中规定的逻辑并确保安全防范潜在的攻击。我们想要找出与实施协议相关的漏洞。", "page-upgrades-bug-bounty-client-bugs-desc-2": "目前执行层客户端(Besu、Erigon、Geth、Nethermind、Reth)和共识层客户端(Lighthouse、Lodestar、Nimbus、Teku 和 Prysm)都被列入漏洞奖金计划。当它们完成审计并且可用于生产环境后,更多的客户端会加入进来。", - "page-upgrades-bug-bounty-clients": "参与悬赏计划的客户端", + "page-upgrades-bug-bounty-clients": "参与奖励计划的客户端", "page-upgrades-bug-bounty-clients-type-1": "规范不兼容问题", "page-upgrades-bug-bounty-clients-type-2": "意外崩溃、远程代码执行或拒绝服务 (DOS) 漏洞", "page-upgrades-bug-bounty-clients-type-3": "导致与网络其他部分出现无法恢复的共识分歧的任何问题", @@ -13,18 +13,20 @@ "page-upgrades-bug-bounty-misc-bugs-desc-2": "Solidity 和 Vyper 不对编译不信任输入提供安全保证 - 而且针对编译器在编译恶意生成的数据时出现崩溃,我们不会提供奖励。", "page-upgrades-bug-bounty-deposit-bugs": "存款合约漏洞", "page-upgrades-bug-bounty-deposit-bugs-desc": "信标链存款合约的规范和源代码涵盖在漏洞悬赏计划中。", + "page-upgrades-bug-bounty-deposit-contract-specs": "存款合约规范", + "page-upgrades-bug-bounty-deposit-contract-source": "存款合约源代码", "page-upgrades-bug-bounty-dependency-bugs": "依赖关系错误", "page-upgrades-bug-bounty-dependency-bugs-desc": "某些依赖关系对于以太坊网络的运行至关重要,其中一些已被添加到漏洞赏金计划中。目前,漏洞赏金计划中包含的依赖项列表是 C-KZG-4844 和 Go-KZG-484。", "page-upgrades-bug-bounty-docking": "合并", "page-upgrades-bug-bounty-email-us": "发电子邮件给我们:", "page-upgrades-bug-bounty-help-links": "有用链接", "page-upgrades-bug-bounty-hunting": "漏洞悬赏规则", - "page-upgrades-bug-bounty-hunting-desc": "漏洞悬赏计划是一项针对活跃以太坊社区的可自由裁量的实验性奖励计划,旨在鼓励和奖励那些一直帮助改善平台的人。这项计划不是比赛。你应该知道我们可以随时取消该计划,并且奖励由以太坊基金会漏洞悬赏小组全权决定。此外,我们无法向制裁名单上的个人或所在国家/地区(例如朝鲜、伊朗等)在制裁名单上的个人颁发奖励。当地法律要求我们向你索取身份证明。你需支付所有和奖励相关的税赋。所有奖励均受适用法律的约束。最后,你的测试不得违反任何法律或损坏任何非你所有的数据并且必须在本地运行的测试网上进行。", + "page-upgrades-bug-bounty-hunting-desc": "漏洞赏金计划是一项针对活跃以太坊社区的可自由裁量的实验性奖励计划,旨在鼓励和奖励那些一直帮助改善平台的人。这项计划不是比赛。你应该知道我们可以随时取消该计划,并且奖励由以太坊基金会漏洞赏金小组全权决定。此外,我们无法向制裁名单上的个人或所在国家/地区(例如朝鲜、伊朗等)在制裁名单上的个人颁发奖励。当地法律要求我们向你索取身份证明。你需支付所有和奖励相关的税赋。所有奖励均受适用法律的约束。最后,你的测试不得违反任何法律或损害任何非你所有的数据,并且必须在本地运行的测试网上进行。", "page-upgrades-bug-bounty-hunting-leaderboard": "共识层漏洞奖金排行榜", "page-upgrades-bug-bounty-hunting-execution-leaderboard": "执行层漏洞奖金排行榜", "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "找出共识层漏洞,跻身本排行榜", "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "找到执行层漏洞,跻身本排行榜", - "page-upgrades-bug-bounty-hunting-li-1": "未提供概念证明的问题、已经被其他用户提交过的问题或者规范及客户端维护人员已了解的问题,不符合奖励条件。", + "page-upgrades-bug-bounty-hunting-li-1": "未涉及概念证明的问题、已经被其他用户提交过的问题或者规范及客户端维护人员已了解的问题,不符合奖励条件。", "page-upgrades-bug-bounty-hunting-li-2": "未经事先同意公开披露漏洞或将其向其他方报告,都会使漏洞不符合奖励条件。", "page-upgrades-bug-bounty-hunting-li-3": "以太坊基金会的员工和承包商或悬赏计划范围内的客户端团队可参与该计划,但只能累积积分且不会获得金钱奖励。", "page-upgrades-bug-bounty-hunting-li-4": "以太坊悬赏计划在决定奖励时会考虑许多可变因素。参与资格的判定、分数以及所有奖励相关事项由以太坊基金会漏洞悬赏小组全权决定。", @@ -36,7 +38,7 @@ "page-upgrades-bug-bounty-meta-description": "以太坊漏洞悬赏计划概览:如何参与以及了解奖励信息。", "page-upgrades-bug-bounty-meta-title": "以太坊漏洞悬赏计划", "page-upgrades-bug-bounty-not-included": "超出范围", - "page-upgrades-bug-bounty-not-included-desc": "漏洞悬赏计划仅包括适用范围中列出的目标漏洞。这意味着我们的基础设置,例如网页、域名系统、电子邮件等并不在悬赏范围内。ERC20 合约漏洞通常不属于悬赏范围。然而我们可以帮助联系受影响的各方,例如合约作者或交易所。以太坊域名服务由以太坊域名服务基金会维护,不在悬赏范围内。要求用户公开应用程序接口(如 JSON-RPC 或 Beacon API)的漏洞在漏洞悬赏计划的范围之外。", + "page-upgrades-bug-bounty-not-included-desc": "只有在范围内的目标才是漏洞赏金计划的一部分。不符合该计划条件的漏洞包括:", "page-upgrades-bug-bounty-owasp": "查看开放式 Web 应用程序安全项目方法", "page-upgrades-bug-bounty-points": "以太坊基金会还将基于以下因素提供奖励:", "page-upgrades-bug-bounty-points-error": "加载数据发生错误...请刷新页面。", @@ -58,11 +60,11 @@ "page-upgrades-bug-bounty-execution-specs": "执行层规范", "page-upgrades-bug-bounty-specs-docs": "规范文档", "page-upgrades-bug-bounty-submit": "提交漏洞", - "page-upgrades-bug-bounty-submit-desc": "每发现一个有效漏洞,你都会获得奖励。奖励多少将因漏洞严重程度而异。严重程度是按照漏洞对以太坊网络的影响及出现的可能性,依据开放式 Web 应用程序安全项目风险评级模型计算的。", + "page-upgrades-bug-bounty-submit-desc": "每发现一个有效漏洞,你都会获得奖励。奖励多少将因严重程度而异。严重程度是按照漏洞对以太坊网络的影响及出现的可能性,依据开放式 Web 应用程序安全项目风险评级模型计算的。", "page-upgrades-bug-bounty-subtitle": "通过找出影响以太坊网络的协议、客户端和语言编译器漏洞,最高可以赢取 25 万美元并跻身排行榜。", "page-upgrades-bug-bounty-title": "已开放供提交", "page-upgrades-bug-bounty-title-1": "信标链", - "page-upgrades-bug-bounty-title-2": "分叉选择", + "page-upgrades-bug-bounty-title-2": "分支选择", "page-upgrades-bug-bounty-title-3": "Solidity 存款合约", "page-upgrades-bug-bounty-title-4": "点对点网络", "page-upgrades-bug-bounty-type-1": "破坏安全性/最终确定性的漏洞", @@ -71,10 +73,10 @@ "page-upgrades-bug-bounty-type-4": "计算或参数不一致", "page-upgrades-bug-bounty-types": "漏洞类型", "page-upgrades-bug-bounty-validity": "适用范围", - "page-upgrades-bug-bounty-validity-desc": "我们的漏洞赏金计划涵盖端到端:从协议的健全性(例如区块链共识模型、有线和对等网络协议、权益证明等)和协议/实现合规性到网络安全和共识完整性。经典的客户端安全性以及加密原语的安全性也是该计划的一部分。如有疑问,请发送电子邮件至 bounty@ethereum.org 并询问我们。你还可以直接向 bounty@ethereum.org 提交披露/漏洞,在这种情况下,我们要求你使用我们的 PGP 密钥为信息加密", + "page-upgrades-bug-bounty-validity-desc": "我们的漏洞赏金计划涵盖端到端:从协议的健全性(例如区块链共识模型、有线和点对点协议、权益证明等)和协议/实现合规性到网络安全和共识完整性。经典的客户端安全性以及加密原语的安全性也是该计划的一部分。如有疑问,请发送电子邮件至 bounty@ethereum.org 并询问我们。你还可以直接向 bounty@ethereum.org 提交披露/漏洞,在这种情况下,我们要求你使用我们的 PGP 密钥为信息加密。", "page-upgrades-bug-bounty-card-critical": "高危", "page-upgrades-bug-bounty-card-critical-risk": "提交高危风险漏洞", - "page-upgrades-bug-bounty-card-h2": "Medium", + "page-upgrades-bug-bounty-card-h2": "中", "page-upgrades-bug-bounty-card-high": "高", "page-upgrades-bug-bounty-card-high-risk": "提交高风险漏洞", "page-upgrades-bug-bounty-card-label-1": "最多 1,000 积分", @@ -105,28 +107,28 @@ "page-upgrades-question-title": "常见问题", "bug-bounty-faq-q1-title": "良好的漏洞提交应该是什么样子?", "bug-bounty-faq-q1-contentPreview": "请查看优质漏洞提交的实例。", - "bug-bounty-faq-q1-content-1": "描述:使用未经验证的区块进行远程拒绝服务攻击", - "bug-bounty-faq-q1-content-2": "攻击场景:攻击者可以发送可能需要大量计算(gasLimit 上限)但没有工作量证明的区块。如果攻击者连续发送这类区块,可能会使受攻击节点达到 100% CPU 使用率。", - "bug-bounty-faq-q1-content-3": "影响:攻击者可以在远程节点上滥用 CPU 使用率,可能导致完全的拒绝服务攻击。", - "bug-bounty-faq-q1-content-4": "组件: Go 客户端版本 v0.6.8", - "bug-bounty-faq-q1-content-5": "再现:向 Go 节点发送一个包含许多交易但无有效工作量证明的区块。", - "bug-bounty-faq-q1-content-6": "详细信息:区块在方法 Process(Block, dontReact) 中进行验证。此方法执行费用高昂、占用大量 CPU 的任务,例如执行交易 (sm.ApplyDiff),然后验证工作量证明 (sm.ValidateBlock())。这样,攻击者就可以发送可能需要大量计算(gasLimit 上限)但没有工作量证明的区块。如果攻击者连续发送这类区块,可能会使受攻击节点达到 100% CPU 使用率。", - "bug-bounty-faq-q1-content-7": "修复:反转检查的顺序。", + "bug-bounty-faq-q1-content-1": "描述:使用未经验证的区块进行远程拒绝服务攻击", + "bug-bounty-faq-q1-content-2": "攻击场景:攻击者可以发送可能需要大量计算(gasLimit 上限)但没有工作量证明的区块。如果攻击者连续发送这类区块,可能会使受攻击节点达到 100% CPU 使用率。", + "bug-bounty-faq-q1-content-3": "影响:攻击者可以在远程节点上滥用 CPU 使用率,可能导致完全的拒绝服务攻击。", + "bug-bounty-faq-q1-content-4": "组件: Go 客户端版本 v0.6.8", + "bug-bounty-faq-q1-content-5": "再现:向 Go 节点发送一个包含许多交易但无有效工作量证明的区块。", + "bug-bounty-faq-q1-content-6": "详细信息:区块在方法 Process(Block, dontReact) 中进行验证。此方法执行费用高昂、占用大量 CPU 的任务,例如执行交易 (sm.ApplyDiff),然后验证工作量证明 (sm.ValidateBlock())。这样,攻击者就可以发送可能需要大量计算(gasLimit 上限)但没有工作量证明的区块。如果攻击者连续发送这类区块,可能会使受攻击节点达到 100% CPU 使用率。", + "bug-bounty-faq-q1-content-7": "修复:反转检查的顺序。", "bug-bounty-faq-q2-title": "漏洞悬赏计划是否有时间限制?", "bug-bounty-faq-q2-contentPreview": "否。", - "bug-bounty-faq-q2-content-1": "目前没有设定结束日期。请参阅以太坊基金会博客,了解最新消息。", + "bug-bounty-faq-q2-content-1": "目前没有设定结束日期。请参阅以太坊基金会博客,了解最新消息。", "bug-bounty-faq-q3-title": "奖金是如何支付的?", "bug-bounty-faq-q3-contentPreview": "奖励用以太币或 DAI 币支付。", - "bug-bounty-faq-q3-content-1": "奖励在漏洞提交得到验证后用以太币 或 DAI 币支付,通常是在几天后。当地法律要求我们向你索取身份证明。此外,我们需要你的以太币地址。", + "bug-bounty-faq-q3-content-1": "奖励在漏洞提交得到验证后以 ETH 或 DAI 支付,通常是在几天后。当地法律要求我们向你索取身份证明。此外,我们需要你的 ETH 地址。", "bug-bounty-faq-q4-title": "我能把奖励捐给慈善机构吗?", - "bug-bounty-faq-q4-contentPreview": "是的。", + "bug-bounty-faq-q4-contentPreview": "可以!", "bug-bounty-faq-q4-content-1": "我们可以将你的奖励捐赠给你选择的一个可靠慈善组织。", "bug-bounty-faq-q5-title": "我报告了一个问题/漏洞,但没有收到回复!", "bug-bounty-faq-q5-contentPreview": "可能需要等待数日,漏洞提交才能得到回复。", - "bug-bounty-faq-q5-content-1": "我们力争做到尽快回复漏洞提交。如果一两天内没有收到回复,请发送电子邮件至 bounty@ethereum.org。", + "bug-bounty-faq-q5-content-1": "我们力争做到尽快回复漏洞提交。如果一两天内没有收到回复,请发送电子邮件至 bounty@ethereum.org。", "bug-bounty-faq-q6-title": "我想匿名/我不希望我的名字出现在排行榜上。", "bug-bounty-faq-q6-contentPreview": "你可以这样做,但可能会让你失去获得奖励的资格。", - "bug-bounty-faq-q6-content-1": "可以匿名或使用化名提交漏洞,但会让你失去获得以太币/DAI 币奖励的资格。为了有资格获得以太币/DAI 币奖励,我们需要你提供真实姓名和身份证明。向慈善机构捐赠奖金时不需要提供身份证明。", + "bug-bounty-faq-q6-content-1": "匿名或使用化名提交是可以接受的,但这会使您无法获得 ETH/DAI 奖励。若要获得 ETH/DAI 奖励,您需要提供真实姓名,并通过我们的安全提交网站使用PGP加密发送身份证明文件至以太坊基金会法律团队(唯一具备审核权限的机构)。若您选择将赏金捐赠给慈善机构,则无需提供身份信息。", "bug-bounty-faq-q6-content-2": "如果不希望你的姓名/昵称出现在排行榜上,请告知我们。", "bug-bounty-faq-q7-title": "排行榜上的积分是什么?", "bug-bounty-faq-q7-contentPreview": "会给每个发现的漏洞/问题分配一个分数", @@ -134,5 +136,34 @@ "bug-bounty-faq-q8-title": "你是否有 PGP 密钥?", "bug-bounty-faq-q8-contentPreview": "是的。请展开以了解详细信息。", "bug-bounty-faq-q8-content-1": "请使用 AE96 ED96 9E47 9B00 84F3 E17F E88D 3334 FA5F 6A0A", - "bug-bounty-faq-q8-PGP-key": "PGP 密钥" + "bug-bounty-faq-q8-PGP-key": "PGP 密钥", + "page-upgrades-bug-bounty-severity-qualifications-title": "漏洞严重性评定标准", + "page-upgrades-bug-bounty-severity-qualifications-desc": "严重性根据已发现漏洞的以下能力进行评估:", + "page-upgrades-bug-bounty-severity-low-title": "低严重性", + "page-upgrades-bug-bounty-severity-low-li-1": "惩罚 0.01% 的验证者", + "page-upgrades-bug-bounty-severity-low-li-2": "轻易地导致网络分裂,影响 0.01% 的网络", + "page-upgrades-bug-bounty-severity-low-li-3": "能够通过发送单个网络数据包或一笔链上交易,使 0.01% 的网络瘫痪", + "page-upgrades-bug-bounty-severity-medium-title": "中等严重性", + "page-upgrades-bug-bounty-severity-medium-li-1": "惩罚 1% 的验证者", + "page-upgrades-bug-bounty-severity-medium-li-2": "轻易地导致网络分裂,影响 5% 的网络", + "page-upgrades-bug-bounty-severity-medium-li-3": "能够通过发送单个网络数据包或一笔链上交易,使 5% 的网络瘫痪", + "page-upgrades-bug-bounty-severity-high-title": "高严重性", + "page-upgrades-bug-bounty-severity-high-li-1": "惩罚 33% 的验证者", + "page-upgrades-bug-bounty-severity-high-li-2": "轻易地导致网络分裂,影响 33% 的网络", + "page-upgrades-bug-bounty-severity-high-li-3": "能够通过发送单个网络数据包或一笔链上交易,使 33% 的网络瘫痪", + "page-upgrades-bug-bounty-severity-critical-title": "危急严重性", + "page-upgrades-bug-bounty-severity-critical-li-1": "惩罚 50% 的验证者", + "page-upgrades-bug-bounty-severity-critical-li-2": "利用 EIP/规范或客户端漏洞,轻易创造无限量的 ETH,并被网络最终确定", + "page-upgrades-bug-bounty-severity-critical-li-3": "从所有 EOA 窃取 ETH", + "page-upgrades-bug-bounty-severity-critical-li-4": "从所有 EOA 销毁 ETH", + "page-upgrades-bug-bounty-severity-critical-li-5": "通过发送单个最终导致所有客户端崩溃的恶意链上交易,使整个网络瘫痪", + "page-upgrades-bug-bounty-out-of-scope-footnote": "这些通常不包括在内,但我们可以在这种情况下帮助联系受影响方,例如作者或交易所", + "page-upgrades-bug-bounty-not-included-li-1": "基础设施漏洞——例如网页、DNS、电子邮件等。", + "page-upgrades-bug-bounty-not-included-li-2": "ERC-20 合约漏洞", + "page-upgrades-bug-bounty-not-included-li-3": "以太坊域名服务 (ENS) 漏洞(由 ENS 基金会维护)", + "page-upgrades-bug-bounty-not-included-li-4": "需要用户公开暴露 API(例如 JSON-RPC 或 Beacon API)的漏洞", + "page-upgrades-bug-bounty-not-included-li-5": "拼写错误", + "page-upgrades-bug-bounty-not-included-li-6": "测试", + "page-upgrades-bug-bounty-not-included-li-7": "高工作量(持续、CPU 或带宽密集型,和/或需要超过 1 个数据包或一笔链上交易)的单点 DoS 攻击", + "page-upgrades-bug-bounty-not-included-li-8": "任何公开已知的问题(包括论坛帖子、PR、GitHub 问题、提交、博客文章、公开的 Discord 消息等)" } From da5254d66f418aec18ce95819264217df902f9f4 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:00 -0800 Subject: [PATCH 016/581] update(i18n): src/intl/zh/page-run-a-node.json From f235e21bb5826f13ac0a3eac0fb4efd38c0ac1a0 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:03 -0800 Subject: [PATCH 017/581] update(i18n): src/intl/zh/template-usecase.json --- src/intl/zh/template-usecase.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/intl/zh/template-usecase.json b/src/intl/zh/template-usecase.json index 6e10cd42462..db2f7109f55 100644 --- a/src/intl/zh/template-usecase.json +++ b/src/intl/zh/template-usecase.json @@ -3,9 +3,11 @@ "template-usecase-dropdown-defi": "去中心化金融 (DeFi)", "template-usecase-dropdown-nft": "非同质化代币 (NFT)", "template-usecase-dropdown-dao": "去中心化自治组织 (DAO)", + "template-usecase-dropdown-apps": "以太坊应用程序", "template-usecase-dropdown-payments": "以太坊支付", "template-usecase-dropdown-prediction-markets": "预测市场", "template-usecase-dropdown-social-networks": "去中心化社交网络", + "template-usecase-dropdown-restaking": "再质押", "template-usecase-dropdown-identity": "去中心化身份", "template-usecase-dropdown-desci": "去中心化科学 (DeSci)", "template-usecase-dropdown-refi": "再生金融(ReFi)", @@ -13,5 +15,6 @@ "template-usecase-banner": "以太坊的用法不断开发和演进。添加任何你认为会使事情变得更清晰或更及时的信息。", "template-usecase-edit-link": "编辑页面", "template-usecase-dropdown-aria": "使用案例下拉菜单", + "template-usecase-dropdown-onchain-gaming": "链上游戏", "template-usecase-dropdown-rwa": "现实世界资产(RWA)" } From 9ce23eb508755df2169b1fdeadf7a4fbd06c7da2 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:07 -0800 Subject: [PATCH 018/581] update(i18n): public/content/translations/zh/developers/docs/design-and-ux/heuristics-for-web3/index.md --- .../developers/docs/design-and-ux/heuristics-for-web3/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/translations/zh/developers/docs/design-and-ux/heuristics-for-web3/index.md b/public/content/translations/zh/developers/docs/design-and-ux/heuristics-for-web3/index.md index 71f9c3cd9fc..307d1e82f32 100644 --- a/public/content/translations/zh/developers/docs/design-and-ux/heuristics-for-web3/index.md +++ b/public/content/translations/zh/developers/docs/design-and-ux/heuristics-for-web3/index.md @@ -54,7 +54,7 @@ lang: zh **示例:** 在页脚以显眼的尺寸包含你的审计内容。 -![在网站页脚引用的审计内容](./Image2.png) +![网站页脚中引用的审计](./Image2.png) ### 3. 突显最重要的信息 {#the-most-important-info-is-obvious} From ddd39b01b93519feefb8b7719f4d06921030b6a0 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:10 -0800 Subject: [PATCH 019/581] update(i18n): src/intl/zh/page-collectibles.json --- src/intl/zh/page-collectibles.json | 67 ++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/intl/zh/page-collectibles.json diff --git a/src/intl/zh/page-collectibles.json b/src/intl/zh/page-collectibles.json new file mode 100644 index 00000000000..8dcf520283c --- /dev/null +++ b/src/intl/zh/page-collectibles.json @@ -0,0 +1,67 @@ +{ + "page-collectibles-already-desc": "检查你的进程", + "page-collectibles-already-title": "准备好成为一个贡献者了吗?", + "page-collectibles-code-content-desc": "修复问题、撰写或改进文章,或者提出网站设计改进方案。", + "page-collectibles-code-content-design-1issue": "设计问题已解决的徽章", + "page-collectibles-code-content-design-desc": "开展设计评审、改进我们的设计系统或参与用户测试。", + "page-collectibles-code-content-design-title": "设计", + "page-collectibles-code-content-design-user-testing": "参与用户测试的徽章", + "page-collectibles-code-content-developer-10pr": "10个PR合并徽章​", + "page-collectibles-code-content-developer-1pr": "1个PR合并徽章​", + "page-collectibles-code-content-developer-5pr": "5个PR合并徽章​", + "page-collectibles-code-content-developer-desc": "任何的改进都合并到了网站上。", + "page-collectibles-code-content-developer-title": "开发者", + "page-collectibles-code-content-gitpoap-1pr": "PR合并徽章​", + "page-collectibles-code-content-gitpoap-desc": "在你的 PR 合并后自动可领取。", + "page-collectibles-code-content-gitpoap-title": "GitPOAP", + "page-collectibles-code-content-instructions-1": "到我们的网站上GitHub存储库", + "page-collectibles-code-content-instructions-2": "选择一个问题进行处理", + "page-collectibles-code-content-instructions-3": "提交一个修复或改进", + "page-collectibles-code-content-title": "代码和内容", + "page-collectibles-code-content-writing-badge-1": "内容贡献的徽章", + "page-collectibles-code-content-writing-desc": "对于任何合并到主分支的内容改进​。", + "page-collectibles-code-content-writing-title": "写作", + "page-collectibles-connect-wallet": "连接钱包", + "page-collectibles-contributing-since": "自......以来做贡献", + "page-collectibles-contributor-img-alt": "两位贡献者的聊天", + "page-collectibles-contributor-progress-label": "领取", + "page-collectibles-current-year-title": "近些年", + "page-collectibles-get-started": "开始吧", + "page-collectibles-hero-description": "证明你在以太坊官网(ethereum.org),链上工作。", + "page-collectibles-hero-header": "以太坊官网(ethereum.org) 收藏品", + "page-collectibles-hero-title": "徽章", + "page-collectibles-how-step1-desc": "到网站上", + "page-collectibles-how-step1-title": "贡献", + "page-collectibles-how-step2-desc": "在Discord上", + "page-collectibles-how-step2-title": "获得验证", + "page-collectibles-how-step3-desc": "在Galxe上", + "page-collectibles-how-step3-title": "领取代币(NFT)", + "page-collectibles-how-title": "工作原理", + "page-collectibles-improve-desc-1": "通过帮助维护和扩展 ethereum.org 网站,可以获得独特的 NFT。这些徽章将在链上认可你的参与。", + "page-collectibles-improve-desc-2": "顶级持有者将获得贡献者礼物或各种活动的折扣门票(如 Devcon)。你的链上徽章将使他人更容易支持你。", + "page-collectibles-improve-title": "改进以太坊官网(ethereum.org)", + "page-collectibles-index-frequency": "结果在每天协调世界时的15:15更新", + "page-collectibles-instructions-label": "说明", + "page-collectibles-previous-years-badge-count": "{count, plural, =0 {没有徽章} =1 {1 个徽章} other {# 个徽章}}", + "page-collectibles-previous-years-collectors-count": "{count, plural, =0 {没有收藏者} =1 {1 个收藏者} other {# 个收藏者}}", + "page-collectibles-previous-years-no-badges": "没有徽章被铸造", + "page-collectibles-previous-years": "过去这些年", + "page-collectibles-social-desc": "加入我们的 Discord 通话,在网站发布前对其进行漏洞测试,或在每月的社区通话中了解 ethereum.org 的最新动态。", + "page-collectibles-social-instructions-1": "加入我们的Discord服务器", + "page-collectibles-social-instructions-2": "查看日程表", + "page-collectibles-social-instructions-3": "加入!", + "page-collectibles-social-title": "社交", + "page-collectibles-stats-collectors": "收藏者", + "page-collectibles-stats-minted": "铸币", + "page-collectibles-stats-unique-badges": "独特的徽章", + "page-collectibles-translations-1000": "1000个单词的徽章", + "page-collectibles-translations-10000": "10000个单词的徽章", + "page-collectibles-translations-250": "250个单词的徽章", + "page-collectibles-translations-50000": "50000个单词的徽章", + "page-collectibles-translations-badge-desc": "任何语言。", + "page-collectibles-translations-desc": "大多数用户不说英语,所以帮助把我们的文章翻译成其它语言很重要,不需要有翻译经验。", + "page-collectibles-translations-instructions-1": "注册在Crowdin", + "page-collectibles-translations-instructions-2": "选择语言", + "page-collectibles-translations-instructions-3": "开始翻译", + "page-collectibles-translations-title": "翻译" +} From 72c8aa7b6fc4149618bd78e8a8bb999aa4a24eca Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:13 -0800 Subject: [PATCH 020/581] update(i18n): src/intl/zh/common.json --- src/intl/zh/common.json | 77 +++++++++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/src/intl/zh/common.json b/src/intl/zh/common.json index 4d2d1ee278d..74b07bd54ca 100644 --- a/src/intl/zh/common.json +++ b/src/intl/zh/common.json @@ -12,13 +12,14 @@ "adding-staking-products": "添加质押产品", "adding-wallets": "添加钱包", "ai-agents": "AI 智能体", - "aria-toggle-menu-button": "切换菜单键", - "aria-toggle-search-button": "切换搜索键", + "aria-toggle-menu-button": "切换菜单按钮", + "aria-toggle-search-button": "切换搜索按钮", "beacon-chain": "信标链", "bridges": "区块链桥", "bug-bounty": "漏洞奖励", "build": "构建", "build-menu": "“构建”菜单", + "business": "商业", "clear": "明确", "close": "关闭", "community": "社区", @@ -41,8 +42,9 @@ "danksharding": "Danksharding", "dao-page": "DAO(去中心化自治组织)", "dark-mode": "深色模式", + "dark-mode-aria-label": "切换到深色模式", "data-provided-by": "数据来源:", - "decentralized-applications-dapps": "Dapp(去中心化应用程序)", + "application-explorer": "应用程序浏览器", "decentralized-identity": "去中心化身份", "decentralized-science": "DeSci(去中心化科学)", "decentralized-social-networks": "去中心化社交网络", @@ -53,7 +55,7 @@ "devcon": "Devcon", "developers": "开发者", "developers-home": "开发者主页", - "docs": "文档", + "docs": "相关文档", "docsearch-error-help": "你可能需要检查网络连接。", "docsearch-error-title": "无法获取结果", "docsearch-no-results-missing": "认为这个查询应该有结果?", @@ -74,12 +76,15 @@ "down": "向下", "ecosystem": "生态系统", "edit-page": "编辑页面", - "ef-blog": "以太坊基金会的博客", - "eips": "以太坊改进提案 (Eip)", + "ef-blog": "以太坊基金会博客", + "eips": "以太坊改进提案", "energy-consumption": "以太坊能源消耗", "enterprise": "企业级应用", + "use-cases": "用例", "enterprise-mainnet": "企业级 - 以太坊主网", "enterprise-menu": "企业菜单", + "enterprise-team-description": "我们将会回复你的问题,帮助你找到有潜力的前进道路,为你提供技术支持,并提供机会让你与相关行业领导者进行交流。", + "enterprise-team": "以太坊企业团队", "error-page-title": "哎呀!发生错误", "error-page-description": "你可以在我们的 GitHub 存储库中报告该问题来帮助我们改进。", "error-page-home-link": "返回主页", @@ -91,16 +96,19 @@ "ethereum-bug-bounty": "以太坊漏洞悬赏计划", "ethereum-events": "以太坊活动", "ethereum-foundation": "以太坊基金会", - "ethereum-foundation-logo": "以太坊基金会徽标", - "ethereum-glossary": "以太坊词汇表", + "ethereum-foundation-logo": "以太坊基金会博客", + "ethereum-glossary": "以太坊术语表", "ethereum-governance": "以太坊治理", - "ethereum-logo": "以太坊徽标", + "ethereum-history-founder-and-ownership": "以太坊的历史、创始人和所有权", + "ethereum-logo": "以太坊标识", "ethereum-online": "在线社区", "ethereum-protocol": "以太坊协议", "ethereum-roadmap": "以太坊路线图", "ethereum-security": "以太坊安全和预防欺诈措施", + "ethereum-privacy": "以太坊上的隐私", "ethereum-support": "以太坊支持", "ethereum-upgrades": "以太坊升级", + "ethereum-vs-bitcoin": "以太坊 vs 比特币", "ethereum-wallets": "以太坊钱包", "ethereum-whitepaper": "以太坊白皮书", "events": "事件", @@ -115,6 +123,7 @@ "feedback-widget-thank-you-timing": "2-3 分钟", "feedback-widget-thank-you-title": "感谢你提供反馈!", "find-wallet": "查找钱包", + "founders": "创始人", "from": "From", "future-proofing": "面向未来", "get-eth": "获取以太币", @@ -134,6 +143,7 @@ "how-to-use-a-bridge": "如何通过链桥将代币转移到二层网络", "how-to-use-a-wallet": "如何使用钱包", "image": "图片", + "item-logo": "{item} 徽标", "in-this-section": "在这个部分", "individuals": "个人", "jobs": "工作机会", @@ -196,6 +206,7 @@ "language-te": "Telugu", "language-th": "泰语", "language-tk": "土库曼语", + "language-tl": "他加禄语", "language-tr": "土耳其语", "language-uk": "乌克兰语", "language-ur": "乌尔都语", @@ -215,13 +226,15 @@ "learn-more": "了解更多", "less": "更少", "light-mode": "明亮模式", - "listing-policy-disclaimer": "本页所列产品并非官方认可,仅供参考。如果您想添加产品或对策略提供反馈,请在GitHub中提出问题。", + "light-mode-aria-label": "切换到浅色模式", + "listing-policy-disclaimer": "本页所列产品并非官方认可,仅供参考。如果你想添加产品或对策略提供反馈,请在GitHub中提出问题。", "loading": "加载中...", "loading-error": "加载错误。", "loading-error-refresh": "错误,请刷新。", "loading-error-try-again-later": "无法加载数据,请稍后重试。", "logo": "徽标", "mainnet-ethereum": "主网以太坊", + "menu": "菜单", "merge": "合并", "more": "更多", "nav-about-description": "以太坊社区的公开、开源项目", @@ -233,11 +246,14 @@ "nav-bridges-description": "Web3 已发展成主要由一层网络区块链和二层网络扩容解决方案组成的生态系统", "nav-builders-home-description": "以太坊构建者手册 — 由构建者编写,为构建者所用", "nav-builders-home-label": "构建者首页", + "nav-business-description": "与专家建立联系,获得指导和资金支持,发展您的业务。", "nav-code-of-conduct": "行为守则", + "nav-collectibles-description": "Ethereum.org 贡献者收藏品的贡献者仪表板", + "nav-collectibles-label": "ethereum.org 收藏品", "nav-contribute-description": "如需帮助,这里为您提供指南", "nav-contribute-label": "为 ethereum.org 做贡献", "nav-dao-description": "成员共同拥有的社区,不存在集中管理机构", - "nav-apps-description": "借助以太坊,探索丰富多姿的应用程序生态系统", + "nav-apps-description": "探索丰富多姿的使用以太坊的应用程序生态系统", "nav-defi-description": "传统金融市场的全球化、开放性替代方案", "nav-desci-description": "对当前科学体系的一种全球化与开放式替代方案", "nav-desoc-description": "基于区块链的社交互动与内容创作平台", @@ -248,7 +264,7 @@ "nav-docs-design-description": "别具一格的 Web3 设计挑战相关说明、最佳做法及用户研究洞察", "nav-docs-design-label": "用户体验/用户界面设计基础", "nav-docs-foundation-description": "以太坊开发核心基础知识", - "nav-docs-foundation-label": "基础主题", + "nav-docs-foundation-label": "基本主题", "nav-docs-overview-description": "开发者文档首页", "nav-docs-stack-description": "了解以太坊堆栈全部细节", "nav-docs-stack-label": "以太坊堆栈", @@ -256,9 +272,12 @@ "nav-eip-label": "EIP - 以太坊改进提案", "nav-emerging-description": "学习其他以太坊新用例", "nav-emerging-label": "新出现的用例", + "nav-enterprise-description": "企业级区块链应用程序可以在公共以太坊主网上构建", "nav-ethereum-org-description": "本网站由社区驱动 — 加入我们,做出贡献", "nav-ethereum-networks": "以太坊网络", "nav-ethereum-networks-description": "以太坊上的交易更经济、更快捷", + "nav-ethereum-vs-bitcoin-description": "了解以太坊和比特币之间的区别", + "nav-ethereum-history-founder-and-ownership-description": "了解以太坊的历史、创始人和所有权", "nav-ethereum-wallets-description": "与以太坊帐户进行互动的应用程序", "nav-events-description": "去中心化并且人人都可以自由参与", "nav-events-irl-description": "每个月,以太坊都举办重大现场活动和线上活动", @@ -266,6 +285,8 @@ "nav-events-online-description": "成千上万的以太坊爱好者聚集在这些在线社区中", "nav-find-wallet-description": "钱包让你得以使用加密货币", "nav-find-wallet-label": "选择钱包", + "nav-gaming-description": "游戏构建于区块链之上,其中的资产和游戏过程完全去中心化且透明。", + "nav-founders-description": "通过项目、指导和资源为创始人赋能", "nav-gas-fees-description": "以太币交易费如何计算", "nav-gas-fees-label": "燃料费", "nav-get-eth-description": "要使用以太坊应用程序,需要使用以太币 (ETH)", @@ -286,7 +307,6 @@ "nav-history-label": "以太坊技术史", "nav-learn-by-coding-description": "可帮助用户尝试以太坊的工具", "nav-local-env-description": "选择并设置以太坊开发栈", - "nav-enterprise-description": "企业级区块链应用程序可以在公共以太坊主网上构建", "nav-networks-home-description": "以太坊上的交易更经济、更快捷", "nav-networks-introduction-label": "简介", "nav-networks-introduction-description": "以太坊扩展为众网之网", @@ -302,7 +322,7 @@ "nav-participate-overview-description": "参与方法概述", "nav-payments-description": "以太坊支付正在改变我们收付资金的方式", "nav-prediction-markets-description": "预测市场是一种押注未来的方式", - "nav-primary": "主导航", + "nav-primary": "初级", "nav-quizzes-description": "了解你对以太坊和加密货币的了解程度", "nav-quizzes-label": "检验掌握的知识", "nav-refi-description": "一种构建于再生原则之上的替代经济体系", @@ -326,10 +346,11 @@ "nav-roadmap-user-experience": "改善用户体验", "nav-roadmap-ux-description": "以太坊的用法需要简化", "nav-roadmap-ux-label": "改善用户体验", - "nav-rwa-description": "将有价值的商品转化为数字代币的方法。", + "nav-rwa-description": "一种将有价值的商品转化为数字代币的方法", "nav-run-a-node-description": "实现完全自主权,同时帮助保护网络安全", "nav-security-description": "了解加密货币使用方面的最佳做法", - "nav-smart-contracts-description": "以太坊生态系统之基石", + "nav-privacy-description": "在以太坊上保护隐私的工具和技术", + "nav-smart-contracts-description": "以太坊生态系统的基本构建模块", "nav-stablecoins-description": "稳定币是价值固定不变的以太坊代币", "nav-stake-description": "保护以太坊安全同时赚取奖励", "nav-stake-label": "质押", @@ -348,16 +369,18 @@ "nav-tutorials-description": "社区教程精选清单", "nav-use-cases-description": "发现和以太坊使用方法相关的各种理念", "nav-use-cases-label": "用例", - "nav-what-is-ether-description": "以太坊应用程序中的货币", + "nav-what-is-ether-description": "了解以太坊的原生货币以太币 (ETH)", "nav-what-is-ethereum-description": "理解以太坊的独特之处", + "nav-what-is-ethereum-network-description": "了解以太坊网络", "nav-what-is-web3-description": "一种制定规则的集中垄断机构的替代机制", "nav-what-is-web3-label": "什么是 Web3?", "nav-whitepaper-description": "最初的以太坊白皮书由 Vitalik Buterin 在 2014 年撰写", - "nav-zkp-description": "在不披露声明本身的情况下,证明声明有效性的一种方法", + "nav-zkp-description": "一种在不披露声明本身的情况下证明其有效性的方法", "nft-page": "NFTs - 非同质化代币", "nfts": "非同质化代币", "no": "否", "on-this-page": "在本页面", + "onchain-gaming": "链上游戏", "open": "打开", "open-research": "开放研究", "page-developers-aria-label": "开发者菜单", @@ -371,6 +394,7 @@ "page-languages-translated": "已翻译", "page-languages-want-more-header": "想用不同的语言查看ethereum.org吗?", "page-languages-want-more-link": "翻译计划", + "page-languages-translate-cta-title": "翻译至", "page-languages-want-more-paragraph": "ethereum.org的翻译者总是以尽可能多的语言进行翻译。 要看看他们正在做什么或注册加入他们,请阅读我们的", "page-languages-words": "字数", "page-last-updated": "页面最后更新", @@ -383,7 +407,7 @@ "pools": "联合质押", "prediction-markets": "预测市场", "privacy-policy": "隐私政策", - "private-ethereum": "私密以太坊", + "private-ethereum": "私人以太坊", "product-disclaimer": "列举产品和服务是为了方便以太坊社区。但列举任何产品或服务并不表示 ethereum.org 网站团队或以太坊基金会认可它们。", "quizzes": "测试", "quizzes-title": "测试中心", @@ -420,12 +444,13 @@ "smart-contracts": "智能合约", "solo": "单独质押", "stablecoins": "稳定币", - "stake-eth": "质押ETH", + "stake-eth": "质押以太币", "staking": "权益质押", "start-here": "从这里开始", "statelessness": "无状态性", "style-guide": "风格指南", "support": "支持", + "terms-and-conditions": "条款及条件", "terms-of-use": "使用条款", "translation-banner-body-new": "由于尚未翻译,本页面内容仍为英文。请帮助我们翻译此内容。", "translation-banner-body-update": "本页面有新版本,但现在只有英文版。请帮助我们翻译最新版本。", @@ -438,6 +463,7 @@ "translation-banner-title-update": "帮助更新此页面", "translation-program": "翻译计划", "translator": "翻译人员", + "trillion-dollar-security": "万亿美元安全项目", "try-using-search": "请尝试使用搜索来查找相关内容,或者", "tutorials": "教程", "up": "向上", @@ -452,13 +478,18 @@ "web3": "什么是 Web3?", "web3-title": "Web3", "website-last-updated": "网站最后更新", + "what-are-apps": "什么是应用程序?", "what-is-ether": "什么是以太币 (ETH)?", "what-is-ethereum": "什么是以太坊?", + "what-is-the-ethereum-network": "什么是以太坊网络?", "withdrawals": "质押提款", "wrapped-ether": "包装以太币", "yes": "是", "zero-knowledge-proofs": "零知识证明", - "ethereum-vs-bitcoin": "以太坊 vs. 比特币", - "nav-ethereum-vs-bitcoin-description": "了解以太坊和比特币之间的区别" - + "region-crimea": "克里米亚", + "region-navassa-island-usa": "纳瓦萨岛(美国)", + "region-wake-island-usa": "威克岛(美国)", + "region-bonaire-netherlands": "博内尔岛(荷兰)", + "region-saba-netherlands": "萨巴岛(荷兰)", + "region-sint-eustatius-netherlands": "圣尤斯特歇斯岛(荷兰)" } From f4db5d25638c8f639877c024f220a5ac77a194cc Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:17 -0800 Subject: [PATCH 021/581] update(i18n): src/intl/zh/page-stablecoins.json --- src/intl/zh/page-stablecoins.json | 76 +++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/src/intl/zh/page-stablecoins.json b/src/intl/zh/page-stablecoins.json index 97670422697..f74da47d59d 100644 --- a/src/intl/zh/page-stablecoins.json +++ b/src/intl/zh/page-stablecoins.json @@ -1,5 +1,8 @@ { "page-stablecoins-accordion-borrow-crypto-collateral": "加密抵押品", + "page-stablecoins-usdc-banner-body": "USDC 是由 Circle 公司发行的最大的受美国监管且由币法抵押的稳定币,其价值与美元直接挂钩并被广泛使用。", + "page-stablecoins-usdc-banner-learn-button": "了解 USDC", + "page-stablecoins-usdc-banner-swap-button": "获取 USDC", "page-stablecoins-accordion-borrow-crypto-collateral-copy": "使用以太坊,你可以直接从其他用户借贷,而无需交易你的以太币。这可以为你实现杠杆作用 - 一些人这样做来尝试积累更多以太币。", "page-stablecoins-accordion-borrow-crypto-collateral-copy-p2": "但由于以太币的价格波动,你将需要超额抵押。这意味着如果你想借 100 个稳定币,你可能需要至少价值 $150 的以太币。这将保护系统和贷方。", "page-stablecoins-accordion-borrow-crypto-collateral-link": "有关加密支持的稳定币的更多内容", @@ -23,10 +26,9 @@ "page-stablecoins-accordion-buy-text-preview": "大量交易所或者钱包能够让你直接买入稳定币,这种能力可能受到当地政策限制。", "page-stablecoins-accordion-buy-title": "购买", "page-stablecoins-accordion-buy-warning": "中心化交易所有可能只是列出了类似USDC、Tether这些由法币支持的稳定币。你无法直接购买它们,但是你应能够在这些平台上用你的ETH或者其它加密货币购买它们。", - "page-stablecoins-accordion-earn-project-1-description": "开放源代码软件运动的大部分技术性工作。", + "page-stablecoins-accordion-earn-project-1-description": "正在举行和即将到来的黑客松。每个构建者通往数字前沿的门户。", "page-stablecoins-accordion-earn-project-2-description": "MakerDao社区(为你带来Dai的团队)的技术、内容和其他工作。", "page-stablecoins-accordion-earn-project-3-description": "当你精通此道时,可以通过寻找漏洞赢得Dai。", - "page-stablecoins-accordion-earn-project-bounties": "Gitcoin悬赏", "page-stablecoins-accordion-earn-project-bug-bounties": "共识层漏洞悬赏", "page-stablecoins-accordion-earn-project-community": "MakerDao社区", "page-stablecoins-accordion-earn-projects-copy": "这些平台将为你的工作支付稳定币作为酬劳。", @@ -36,8 +38,6 @@ "page-stablecoins-accordion-earn-requirements-description": "因为价值稳定,稳定币是为工作和服务支付酬劳的好方法。但是你首先需要一个钱包。", "page-stablecoins-accordion-earn-text-preview": "你可以通过为以太坊生态下的项目工作来赚取稳定币。", "page-stablecoins-accordion-earn-title": "收益", - "page-stablecoins-accordion-less": "更少", - "page-stablecoins-accordion-more": "更多", "page-stablecoins-accordion-requirements": "你所需要的", "page-stablecoins-accordion-swap-dapp-intro": "如果你已经拥有以太币和一个钱包,你就可以用这些去中心化应用程序兑换稳定币。", "page-stablecoins-accordion-swap-dapp-link": "关于去中心化交易所的更多信息", @@ -56,7 +56,6 @@ "page-stablecoins-algorithmic-con-1": "你需要相信(或者能够读懂)算法。", "page-stablecoins-algorithmic-con-2": "你的代币数量将随着供给总量而变化。", "page-stablecoins-algorithmic-description": "这些稳定币没有其它资产作为支撑。相反,一种算法将确保当价格低于预期时出售代币,在价格高于预期时获得更多代币。由于流通中的代币数量经常变化,你所持有的代币数量也会随之改变,但是总能反应出你所占的份额。", - "page-stablecoins-algorithmic-disclaimer": "算法稳定币是实验性技术。使用前需了解风险。", "page-stablecoins-algorithmic-pro-1": "无需抵押物。", "page-stablecoins-algorithmic-pro-2": "由公开算法控制。", "page-stablecoins-bank-apy": "0.05%", @@ -69,21 +68,16 @@ "page-stablecoins-crypto-backed": "由加密货币支撑", "page-stablecoins-crypto-backed-con-1": "不如法币支撑的稳定币稳定。", "page-stablecoins-crypto-backed-con-2": "你需要对抵押的加密货币的价值波动保持关注。", - "page-stablecoins-crypto-backed-description": "这些稳定币由其它加密资产(例如ETH)作为支撑。它们的价格随着底层资产(即抵押物)的价值波动而波动。由于ETH的价格可能波动,这些稳定币需要超额抵押来确保价值稳定。这种方法意味着价值$1美元的稳定币需要有至少价值$2美元的加密资产进行抵押。如果ETH的价格下跌,更多的ETH将会用于支撑稳定币,否则稳定币将会失去价值。", + "page-stablecoins-crypto-backed-description": "这些稳定币由其它加密资产作为抵押,例如 ETH。他们的价格取决于标的资产(或抵押物)的价值而波动。因为 ETH 的价值存在实时波动,这类稳定币通常采取超额抵押的方式,以尽可能维持价格稳定。可以说,1美元的稳定币至少需要价值2美元的加密货币抵押。若 ETH 价格下滑,则需要更多 ETH 作为抵押,否则稳定币将失去其价值。值得注意的是,一些由加密货币作为抵押的稳定币,比如 DAI,也使用中心化稳定币作为他们抵押的一部分。", "page-stablecoins-crypto-backed-pro-1": "透明且完全去中心化。", "page-stablecoins-crypto-backed-pro-2": "快速转化为其它加密资产。", "page-stablecoins-crypto-backed-pro-3": "没有外部监管 - 所有资产由以太坊帐户完全控制。", - "page-stablecoins-dai-banner-body": "Dai 可能是最著名的分布式稳定币。它和 1 美元等价并被去中心化应用程序广泛接受。", - "page-stablecoins-dai-banner-learn-button": "了解 Dai", - "page-stablecoins-dai-banner-swap-button": "将以太币转换成 Dai 币", - "page-stablecoins-dai-banner-title": "Dai", - "page-stablecoins-dai-logo": "Dai 徽标", "page-stablecoins-editors-choice": "主编推荐", "page-stablecoins-editors-choice-intro": "这些是当前最知名的稳定币,并被去中心化应用程序广泛使用。", "page-stablecoins-explore-dapps": "探索去中心化应用程序", "page-stablecoins-fiat-backed": "法币抵押", "page-stablecoins-fiat-backed-con-1": "中心化 - 必须有人签发代币。", - "page-stablecoins-fiat-backed-con-2": "需要审计确保这些公司拥有足够的资产储备。", + "page-stablecoins-fiat-backed-con-2": "需要审计以确保公司拥有足够的准备金。", "page-stablecoins-fiat-backed-description": "简单来说由传统意义上的法币(通常是美元)来抵押。你使用你的法币购入稳定币,并可以随时兑换回来。", "page-stablecoins-fiat-backed-pro-1": "具有对抗加密货币价值波动的安全性。", "page-stablecoins-fiat-backed-pro-2": "价格波动很小。", @@ -101,7 +95,7 @@ "page-stablecoins-precious-metals": "贵金属", "page-stablecoins-precious-metals-con-1": "中心化 - 必须有人签发代币。", "page-stablecoins-precious-metals-con-2": "你需要相信代币发行者拥有相应的贵金属储备。", - "page-stablecoins-precious-metals-description": "就像法币一样,这些加密货币使用黄金等资源维持它们的价值。", + "page-stablecoins-precious-metals-description": "类似于以法币作抵押的稳定币,但这类稳定币通过黄金等实物资产来维持价值。它们被称为“稳定币”,是因为价格持续锚定于另一种资产的价值,并类似于在链上记录对现实世界资产的所有权", "page-stablecoins-precious-metals-pro-1": "具有对抗加密货币价值波动的安全性。", "page-stablecoins-prices": "稳定币价格", "page-stablecoins-prices-definition": "稳定币是不具有波动性的加密货币。它们具有很多和ETH相同的能力,同时它们的价值稳定,更像传统货币。因此你可以在以太坊上像使用传统货币一样使用它们。", @@ -118,6 +112,7 @@ "page-stablecoins-stablecoins-dapp-description-2": "出借稳定币以赚取利息和$COMP,一种Compound自己的代币。", "page-stablecoins-stablecoins-dapp-description-3": "一个能够从你的 Dai 和 USDC 上赚取利息的交易平台。", "page-stablecoins-stablecoins-dapp-description-4": "一个为了存 Dai 而做的应用。", + "page-stablecoins-stablecoins-dapp-description-5": "一种支持多种稳定币选项的以太坊借贷协议。", "page-stablecoins-stablecoins-feature-1": "稳定币是全球化的,可以在互联网上发送。只要你有以太坊帐户,就可以轻易地发送或接收它们。", "page-stablecoins-stablecoins-feature-2": "对稳定币的需求很大,因此你可以通过出借赚取利息。但是请确保你明确其中的风险。", "page-stablecoins-stablecoins-feature-3": "稳定币可以和以太币以及其他以太坊代币兑换。大量去中心化应用程序依赖稳定币。", @@ -126,43 +121,76 @@ "page-stablecoins-stablecoins-table-header-column-1": "货币", "page-stablecoins-stablecoins-table-header-column-2": "市值", "page-stablecoins-stablecoins-table-header-column-3": "抵押类型", + "page-stablecoins-stablecoins-table-header-column-4": "Peg", "page-stablecoins-stablecoins-table-type-crypto-backed": "加密货币", "page-stablecoins-stablecoins-table-type-fiat-backed": "法币", "page-stablecoins-stablecoins-table-type-precious-metals-backed": "贵金属", "page-stablecoins-table-error": "无法加载稳定币数据。请刷新页面。", "page-stablecoins-title": "稳定币", "page-stablecoins-meta-title": "稳定币说明:它们有什么作用?", - "page-stablecoins-top-coins": "处于领先地位的稳定币(按市值排序)", + "page-stablecoins-top-coins": "按市值排名的主要稳定币", "page-stablecoins-top-coins-intro": "市值等于", "page-stablecoins-top-coins-intro-code": "代币总量乘以每个代币的价值。这个列表是动态变化的,并且其中的项目并非都已获得ethereum.org团队背书。", "page-stablecoins-types-of-stablecoin": "它们如何运作:稳定币的类型", - "page-stablecoins-usdc-banner-body": "USDC 可能是最著名的以法币支持的稳定币,大约等值于一美元,由 Circle 和 Coinbase 发行。", - "page-stablecoins-usdc-banner-learn-button": "了解 USDC", - "page-stablecoins-usdc-banner-swap-button": "将以太币交换成 USDC 币", - "page-stablecoins-usdc-banner-title": "USDC", "page-stablecoins-usdc-logo": "USDC 徽标", + "page-stablecoins-usdt-banner-body": "Tether USD(USDT)是按市值计算的最大法币挂钩稳定币。其价值与1美元挂钩,其储备金由 Tether 有限公司管理。", + "page-stablecoins-usdt-banner-swap-button": "将以太币兑换为泰达币", + "page-stablecoins-usdt-banner-learn-button": "了解 USDT", + "page-stablecoins-usdt-logo": "USDT 标志", + "page-stablecoins-usds-banner-body": "USDS 是 Dai 的继任者,由加密资产全额抵押,并专为链上储蓄和奖励而设计。它在 DeFi 生态中被广泛使用,同时确保用户对资金拥有完全的控制权。", + "page-stablecoins-usds-banner-swap-button": "将以太币交换成 USDS 币", + "page-stablecoins-usds-banner-learn-button": "了解 USDS", + "page-stablecoins-usds-logo": "USDS 标志", + "page-stablecoins-gho-banner-body": "GHO 是由 Aave 创建的去中心化多抵押品稳定币,采用混合模型,将加密资产抵押机制与社区治理模式相结合。", + "page-stablecoins-gho-banner-swap-button": "将以太币兑换为 GHO 币", + "page-stablecoins-gho-banner-learn-button": "了解 GHO", + "page-stablecoins-gho-logo": "GHO 标志", + "page-stablecoins-glo-banner-body": "Glo Dollar(USDGLO)是一种稳定币,其所有利润均捐赠给公共事业和慈善机构。通过持有或使用Glo Dollar,您可为抗击贫困、支持开源等公益事业提供资金支持——且无需您额外承担任何费用。", + "page-stablecoins-glo-banner-swap-button": "购买 GLO", + "page-stablecoins-glo-banner-learn-button": "了解 GLO", + "page-stablecoins-glo-logo": "USDGLO 标志", + "page-stablecoins-hai-banner-title": "HAI", + "page-stablecoins-hai-banner-body": "HAI 是由 Let's Get HAI 推出的去中心化、ETH 抵押型稳定币,专注于抗审查性和公共商品。它采用最小化治理设计,以稳定性为首要目标,同时不牺牲去中心化原则。", + "page-stablecoins-hai-banner-swap-button": "用以太币铸造 HAI 币", + "page-stablecoins-hai-banner-learn-button": "了解 HAI", + "page-stablecoins-hai-logo": "HAI 标志", + "page-stablecoins-lusd-banner-title": "LUSD", + "page-stablecoins-lusd-banner-body": "LUSD 是 Liquity 推出的一款去中心化稳定币,仅以 ETH 作为抵押,最低抵押率为 110%。该稳定币支持无息借贷、算法清算及极简治理机制,因此具备极高的抗审查性。", + "page-stablecoins-lusd-banner-swap-button": "将以太币兑换为 LUSD 币", + "page-stablecoins-lusd-banner-learn-button": "了解 LUSD", + "page-stablecoins-lusd-logo": "LUSD 标志", "page-stablecoins-why-stablecoins": "为什么使用稳定币?", "page-stablecoins-how-they-work-button": "它们如何运作", "page-stablecoins-why-stablecoins-body": "以太币和比特币一样是一种新技术,所以价值存在波动。因此你可能不会想在日常生活中使用它。稳定币作为传统货币价值的替代品,成为你能够在以太坊上使用的稳定资金。", "page-stablecoins-more-defi-button": "关于去中心化金融 (DeFi) 的更多信息", "page-stablecoins-tools-title": "进一步了解稳定币", "page-stablecoins-tools-stablecoinswtf-description": "Stablecoins.wtf 提供了一个仪表板,其中包含了一些最知名稳定币的历史市场数据、统计信息和教育内容。", - "page-apps-ready-button": "出发", + "page-stablecoins-tools-stablepulse-description": "提供清晰、准确且尽量无偏的稳定币生态全景视图,并涵盖跨代币、跨链的数据分析。", + "page-stablecoins-tools-stablesinfo-description": "实时稳定币排行榜和数据面板,跟踪主要稳定币及多条区块链的供应量和链上数据。", + "page-stablecoins-tools-dune-description": "提供稳定币供应量、流动性、交易量及跨链采用情况的实时分析数据面板。", + "page-stablecoins-tools-visa-description": "仪表盘可视化展示法币挂钩稳定币在公共区块链上的流动、供应及使用情况。", + "page-stablecoins-tools-stablewars-description": "分析排行榜和仪表盘,跟踪稳定币在多个区块链上的余额、转账和排名。", + "page-apps-ready-button": "Go", "pros": "优点", "cons": "缺点", - "1inch-logo": "1inch徽标", - "aave-logo": "Aave徽标", + "1inch-logo": "1inch图标", + "aave-logo": "Aave图标", "binance-logo": "Binance 币安徽标", "bittrex-logo": "Bittrex 徽标", + "buidlbox-logo": "Buidlbox 徽标", "coinbase-logo": "Coinbase 比特币基地徽标", "coinmama-logo": "Coinmama 徽标", - "compound-logo": "Compound徽标", + "compound-logo": "Compound logo", "example-projects": "示例项目", + "page-stablecoins-filter-by-type": "按类型筛选", + "page-stablecoins-reset-list": "重置列表", + "page-stablecoins-show-more": "显示更多", + "page-stablecoins-no-results": "没有稳定币符合当前的筛选条件", "gemini-logo": "Gemini 双子交易所徽标", - "gitcoin-logo": "Gitcoin徽标", "makerdao-logo": "MakerDao 徽标", "matcha-logo": "Matcha徽标", + "sparkfi-logo": "Spark 协议标志", "summerfi-logo": "Summer.fi 徽标", - "uniswap-logo": "Uniswap徽标", + "uniswap-logo": "独角兽交易所", "page-stablecoins-go-to": "前往" } From d3d7818b476981071c44e05b08578fd9d40c3132 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:21 -0800 Subject: [PATCH 022/581] update(i18n): src/intl/zh/page-what-is-ether.json --- src/intl/zh/page-what-is-ether.json | 100 ++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/intl/zh/page-what-is-ether.json diff --git a/src/intl/zh/page-what-is-ether.json b/src/intl/zh/page-what-is-ether.json new file mode 100644 index 00000000000..16b4419ae65 --- /dev/null +++ b/src/intl/zh/page-what-is-ether.json @@ -0,0 +1,100 @@ +{ + "page-what-is-ether-meta-title": "什么是以太币 (ETH)?(完整指南)| ethereum.org", + "page-what-is-ether-meta-description": "以太币 (ETH) 是以太坊的原生加密货币。了解其用途、购买方式和地点、供应量以及影响其价格的因素。", + "page-what-is-ether-twitter-meta-description": "以太币 (ETH) 是以太坊的原生加密货币。了解其用途、购买方式和地点、供应量以及更多信息。", + "page-what-is-ether-title": "什么是以太币 (ETH)?", + "page-what-is-ether-hero-description-1": "以太币 (ETH) 是为以太坊网络提供动力的原生加密货币。它用于支付使用网络及其上构建的应用程序的交易费(称为“燃料”),通过质押保障网络安全,并作为数字货币用于支付和投资——不受任何中央实体、组织或政府的控制。按市值计算,ETH 是最大的加密货币之一。", + "page-what-is-ether-what-is-ether-description-1": "以太币,通常称为 ETH,是驱动以太坊区块链的燃料。与主要用作数字货币的比特币不同,以太币在以太坊生态系统中有多种用途。", + "page-what-is-ether-what-is-ether-description-2": "作为以太坊的原生加密货币,ETH 用于:", + "page-what-is-ether-what-is-ether-description-3": "支付使用网络及其应用程序的交易费(燃料)", + "page-what-is-ether-what-is-ether-description-4": "通过质押保障以太坊网络的安全", + "page-what-is-ether-what-is-ether-description-5": "ETH 于 2015 年随以太坊一同推出,此后已成长为世界上最有价值的资产之一。", + "page-what-is-ether-what-is-ether-description-6": "面向消费者", + "page-what-is-ether-what-is-ether-description-7": "ETH 可实现无需银行的全球支付、购买非同质化代币 (NFT) 以及访问去中心化金融 (DeFi) 应用程序。它具有抗审查性,并提供全天候的跨境功能。", + "page-what-is-ether-what-is-ether-description-8": "适用于开发人员", + "page-what-is-ether-what-is-ether-description-9": "将智能合约部署到以太坊主网时,需要用 ETH 支付交易费。它也是以太坊生态系统中许多应用程序使用的主要货币。", + "page-what-is-ether-what-is-ether-description-10": "面向投资者", + "page-what-is-ether-what-is-ether-description-11": "通过质押,ETH 可作为一种价值储存和产生收益的资产。它为人们提供了参与 web3 增长和不断扩大的数字经济的机会。", + "page-what-is-ether-what-is-ether-description-12": "了解有关 ETH 质押的更多信息", + "page-what-is-ether-how-to-buy-eth": "如何购买 ETH", + "page-what-is-ether-how-to-buy-eth-description-1": "购买 ETH 的过程非常简单,您可以根据自己的需求和所在地点选择多种方式。始终从提供强大安全保障的可信平台开始。", + "page-what-is-ether-how-to-buy-eth-description-2": "对于消费者,可以通过加密货币交易所或钱包应用程序购买 ETH。", + "page-what-is-ether-how-to-buy-eth-description-3": "旁注", + "page-what-is-ether-how-to-buy-eth-description-4": "购买 ETH 时,您会听到“帐户/地址”和“钱包”这两个术语。", + "page-what-is-ether-how-to-buy-eth-description-5": "您可以将帐户视为您的电子邮件地址,其他人可以通过它向您汇款。", + "page-what-is-ether-how-to-buy-eth-description-6": "您可以将钱包视为您的电子邮件应用程序,您可以在其中查看余额和进行支付。", + "page-what-is-ether-how-to-buy-eth-description-7": "您可以使用以下方式购买 ETH:", + "page-what-is-ether-how-to-buy-eth-description-8": "信用卡/借记卡:即时到账,但手续费较高", + "page-what-is-ether-how-to-buy-eth-description-9": "银行转账:速度较慢,但手续费较低", + "page-what-is-ether-how-to-buy-eth-description-10": "PayPal 或类似服务(如适用)", + "page-what-is-ether-how-to-buy-eth-description-11": "对于企业,交易所提供企业帐户,这些帐户具有更高的限额、更好的支持、合规功能、批量折扣和增强的安全性。", + "page-what-is-ether-how-to-buy-eth-description-12": "获取 ETH 的其他方式:", + "page-what-is-ether-how-to-buy-eth-description-13": "接收熟人的付款", + "page-what-is-ether-how-to-buy-eth-description-14": "在去中心化金融协议上提供流动性", + "page-what-is-ether-how-to-buy-eth-description-15": "质押 ETH 以赚取奖励,同时保障以太坊网络的安全", + "page-what-is-ether-how-to-buy-eth-description-16": "了解更多关于如何以及在哪里购买 ETH 的信息", + "page-what-is-ether-how-to-send-and-receive-eth": "如何发送和接收 ETH", + "page-what-is-ether-how-to-send-and-receive-eth-description-1": "发送 ETH 需要一个钱包和收款人地址。输入对方的地址,指定金额,查看交易费,然后确认。交易通常在 30 秒内到账,一旦确认便无法撤销。", + "page-what-is-ether-how-to-send-and-receive-eth-description-2": "接收 ETH 需要与发送人分享您的以太坊地址或二维码。资金在网络确认后会出现在您的钱包中,大多数钱包都会提供通知。", + "page-what-is-ether-how-to-send-and-receive-eth-description-3": "需要帮助?请阅读如何使用钱包指南。", + "page-what-is-ether-how-to-send-and-receive-eth-description-4": "购买 ETH 时,您会听到“帐户/地址”和“钱包”这两个术语。", + "page-what-is-ether-how-to-send-and-receive-eth-description-5": "您可以将帐户视为您的电子邮件地址,其他人可以通过它向您汇款。", + "page-what-is-ether-how-to-send-and-receive-eth-description-6": "您可以将钱包视为您的电子邮件应用程序,您可以在其中查看余额和进行支付。", + "page-what-is-ether-how-to-send-and-receive-eth-description-7": "对于较大金额,可以考虑使用硬件钱包以增加安全性。", + "page-what-is-ether-how-to-send-and-receive-eth-description-8": "了解以太坊及其工作原理。", + "page-what-is-ether-how-to-send-and-receive-eth-callout": "仅与您信任的联系人分享您的以太坊地址。由于以太坊是一个公共账本,他们可以查看您的余额和交易。他们无法动用您的资金,但建议您注意保护隐私。", + "page-what-is-ether-how-long-does-it-take-to-send-eth": "发送 ETH 需要多长时间?", + "page-what-is-ether-how-long-does-it-take-to-send-eth-description-1": "ETH 交易通常在 30 秒内完成。以太坊网络每 12 秒处理一个区块,但在拥堵期间交易可能会排队。", + "page-what-is-ether-how-long-does-it-take-to-send-eth-description-2": "交易在大约 15 分钟后达到“最终性”,而比特币的平均时间为 60 分钟。", + "page-what-is-ether-how-long-does-it-take-to-send-eth-description-3": "在网络流量高峰期,您可以通过支付更高的交易费来加快交易速度,从而排在前面。费用由验证者和销毁机制分摊。", + "page-what-is-ether-how-much-does-it-cost-to-send-eth": "发送 ETH 的成本是多少?", + "page-what-is-ether-how-much-does-it-cost-to-send-eth-description-1": "以太坊交易需要以 ETH 支付交易费。该费用根据所需的计算工作量(以“燃料”衡量)和当前的网络需求计算得出。燃料的价格随网络流量波动,这使得非高峰时段的交易成本较低。", + "page-what-is-ether-l2s": "进入二层网络:扩展以太坊", + "page-what-is-ether-l2s-description-1": "随着以太坊越来越受欢迎,保持低交易费变得具有挑战性。二层 (L2) 网络解决了这个问题。", + "page-what-is-ether-l2s-description-2": "像 OptimismArbitrum 这样的二层网络提供了便宜 10-100 倍的费用,同时继承了以太坊的安全性。它们在脱链处理交易,并将数据发布到以太坊。", + "page-what-is-ether-l2s-description-3": "可以把它们想象成以太坊主干道旁的快车道,提供更快、更便宜的交易。", + "page-what-is-ether-l2s-description-4": "二层网络的转账通常花费不到 0.01 美元,通过与 Robinhood、PayPal 和 Shopify 等公司的集成,将以太坊带给了数百万新用户。", + "page-what-is-ether-what-is-the-eth-supply": "ETH 的供应量是多少?", + "page-what-is-ether-what-is-the-eth-supply-description-1": "与比特币固定的 2100 万上限不同,ETH 具有动态的供应机制:", + "page-what-is-ether-what-is-the-eth-supply-description-2": "新 ETH 按协议计算的有限速率发行,以奖励网络验证者", + "page-what-is-ether-what-is-the-eth-supply-description-3": "每笔交易费的一部分会被永久“销毁”(从现有供应中删除)", + "page-what-is-ether-what-is-the-eth-supply-description-4": "这会根据网络使用情况造成通货膨胀和通货紧缩交替出现的时期", + "page-what-is-ether-what-is-the-eth-supply-description-5": "预期均衡:该系统在网络安全和长期价值保值之间取得平衡。高使用率导致通货紧缩;低使用率导致通货膨胀。", + "page-what-is-ether-what-is-the-eth-supply-description-6": "数据来源:EtherscanUltrasound Money", + "page-what-is-ether-what-is-the-distribution-of-eth": "ETH 的分布情况如何?", + "page-what-is-ether-what-is-the-distribution-of-eth-description-1": "所有权广泛分布于数千万个地址中,防止控制权集中,增强了去中心化。", + "page-what-is-ether-breakdown": "以太币分布明细", + "page-what-is-ether-breakdown-description-1": "质押的以太币:数千万 ETH 被锁定以保障网络安全", + "page-what-is-ether-breakdown-description-2": "交易所:中心化平台持有 13-16% 的供应量", + "page-what-is-ether-breakdown-description-3": "智能合约:大量资金存在于智能合约中,包括 DeFi 协议", + "page-what-is-ether-breakdown-description-4": "以太坊基金会:持有不到 0.3% 的供应量(低于 2014 年的 9%)", + "page-what-is-ether-who-holds-most": "谁持有最多?", + "page-what-is-ether-who-holds-most-description-1": "ETH 余额最高的以太坊地址通常不是个人。在“顶级”以太坊地址中可见的绝大多数以太币代表了许多不同个人和实体的集体汇集资金,而不是单个个人的持有量。", + "page-what-is-ether-who-holds-most-description-2": "ETH 余额最高的帐户通常包括:", + "page-what-is-ether-who-holds-most-description-3": "信标链存款合约:该存款合约的余额代表了所有已质押的 ETH,用于帮助保障以太坊网络的安全。虽然这是 ETH 余额最大的以太坊地址,但它并不代表一个可访问的以太坊钱包帐户。它是一个智能合约,接受 ETH 存款作为参与质押的第一步,然后在网络的活跃验证者之间管理这些以太币的余额。", + "page-what-is-ether-who-holds-most-description-4": "智能合约:许多其他高余额的以太坊地址代表了为基于以太坊的应用程序提供支持的智能合约,例如去中心化金融 (DeFi) 协议、链桥或去中心化自治组织 (DAO) 的智能合约地址。这些合约余额代表了许多钱包为参与其应用程序而存入的以太币。", + "page-what-is-ether-who-holds-most-description-5": "综合账户:这些是由交易所、平台和基金(如 Coinbase、Robinhood 或 Binance)运营的大型钱包。当用户在交易所购买 ETH 时,这些 ETH 通常会与该平台成千上万其他客户持有的 ETH 一起存放在这些大型账户中。", + "page-what-is-ether-who-holds-most-description-6": "您可以在 Etherscan 此处查看 ETH 余额最高的以太坊钱包地址的实时列表。", + "page-what-is-ether-distribution": "为什么分布对去中心化至关重要", + "page-what-is-ether-distribution-description-1": "广泛的分布可以防止中心化控制。真正的去中心化取决于维护网络的独立节点和验证者的数量。", + "page-what-is-ether-what-makes-eth-valuable": "是什么让 ETH 具有价值?", + "page-what-is-ether-what-makes-eth-valuable-description-1": "ETH 的价值源于多个方面:", + "page-what-is-ether-what-makes-eth-valuable-description-2": "网络效用:所有以太坊交易都需要 ETH 来支付燃料费,这创造了持续的需求,并随着网络采用率的增长而增长。", + "page-what-is-ether-what-makes-eth-valuable-description-3": "质押奖励:ETH 质押者在保障网络安全的同时获得收益,这对个人和机构投资者都具有吸引力。", + "page-what-is-ether-what-makes-eth-valuable-description-4": "价值储存:许多人将 ETH 视为“数字石油”——一种稀有资产,具有为数字经济提供动力的实际效用。", + "page-what-is-ether-what-makes-eth-valuable-description-5": "供应动态:费用销毁在高使用率期间产生通货紧缩压力。自 2021 年以来,已有数百万 ETH 被永久移出流通。", + "page-what-is-ether-what-is-wrapping-eth": "什么是包装 ETH?", + "page-what-is-ether-what-is-wrapping-eth-description-1": "包装 ETH (WETH) 是一种 ERC-20 代币,与 ETH 1:1 锚定。许多去中心化应用程序和二层网络都是为处理 ERC-20 代币而构建的,但原生 ETH 本身不是 ERC-20 代币。“包装”意味着将 ETH 锁定在智能合约中,并发行该锁定 ETH 的 ERC-20 表示形式 (WETH),从而允许它在任何只接受 ERC-20 代币的应用程序和二层网络中使用。", + "page-what-is-ether-what-is-wrapping-eth-description-2": "常见用途包括:", + "page-what-is-ether-what-is-wrapping-eth-description-3": "在像 Uniswap 这样的去中心化交易所上进行交易对交易", + "page-what-is-ether-what-is-wrapping-eth-description-4": "在像 Aave 这样的借贷平台上用作抵押品", + "page-what-is-ether-what-is-wrapping-eth-description-5": "在像 OpenSea 这样的 NFT 市场上竞价", + "page-what-is-ether-what-is-wrapping-eth-description-6": "WETH 可以随时以极低的手续费解包回 ETH。WETH 会被销毁,其代表的 ETH 会从智能合约中释放出来。大多数应用程序都能无缝处理包装和解包过程。", + "page-what-is-ether-what-is-wrapping-eth-description-7": "了解更多关于包装 ETH (WETH) 的信息", + "page-what-is-ether-gas-table-transaction-type": "交易类型", + "page-what-is-ether-gas-table-typical-cost-range": "实时成本范围", + "page-what-is-ether-gas-table-estimated-gas-units": "预估燃料单位", + "page-what-is-ether-gas-table-row-1-1": "ETH 转账", + "page-what-is-ether-gas-table-row-2-1": "代币交换", + "page-what-is-ether-gas-table-row-3-1": "复杂的 DeFi/NFT 交易" +} \ No newline at end of file From 9450ac16d37b5c215289edbc4ed1130f567f360f Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:24 -0800 Subject: [PATCH 023/581] update(i18n): src/intl/zh/page-what-is-the-ethereum-network.json --- .../zh/page-what-is-the-ethereum-network.json | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/intl/zh/page-what-is-the-ethereum-network.json diff --git a/src/intl/zh/page-what-is-the-ethereum-network.json b/src/intl/zh/page-what-is-the-ethereum-network.json new file mode 100644 index 00000000000..7c3c272b288 --- /dev/null +++ b/src/intl/zh/page-what-is-the-ethereum-network.json @@ -0,0 +1,89 @@ +{ + "page-what-is-ethereum-network-meta-title": "什么是以太坊网络?| ethereum.org", + "page-what-is-ethereum-network-meta-description": "了解什么是以太坊网络、质押和安全性、网络费用(又称燃料费)、二层扩容网络以及如何探索实时网络数据。", + "page-what-is-ethereum-network-twitter-meta-description": "了解什么是以太坊网络、质押和安全性、网络费用、二层扩容网络以及如何探索实时网络数据。", + "page-what-is-ethereum-network-title": "什么是以太坊网络?", + "page-what-is-ethereum-network-description-1": "以太坊网络是支撑以太坊的物理和数字基础设施。", + "page-what-is-ethereum-network-description-2": "这包括存储数据的节点、处理交易的验证者、执行智能合约的软件,以及将以太坊扩展到主链之外的二层网络。", + "page-what-is-ethereum-network-section-network-fees-title": "什么是以太坊网络费用(又称燃料费)?", + "page-what-is-ethereum-network-section-staking-title": "什么是质押,它如何保障网络安全?", + "page-what-is-ethereum-network-section-layer-2s-title": "什么是以太坊二层网络,它们如何扩展网络?", + "page-what-is-ethereum-network-section-live-network-data-title": "如何探索实时以太坊网络数据", + "page-what-is-ethereum-network-read-next-title": "阅读下一页", + "page-what-is-ethereum-network-read-next-item-1": "什么是钱包?", + "page-what-is-ethereum-network-read-next-item-2": "什么是以太币 (ETH)?", + "page-what-is-ethereum-network-read-next-item-3": "什么是 Web3?", + "page-what-is-ethereum-network-read-next-item-4": "了解更多关于以太坊网络的信息", + "page-what-is-ethereum-network-section-description-1": "当人们谈论以太坊时,通常指的是几件不同的事情。包括应用程序和数字资产的生态系统、开源软件平台以及原生货币以太币 (ETH)。", + "page-what-is-ethereum-network-section-description-2": "但这一切的底层是以太坊网络;它是将一切联系在一起的物理和数字基础。", + "page-what-is-ethereum-network-section-description-3": "从本质上讲,以太坊网络是由数千台称为“节点”的独立计算机组成的集合。这些节点由世界各地的人们运行。它们协同工作,存储数据,执行智能合约,并将每笔交易记录在一个开放的公共账本上。", + "page-what-is-ethereum-network-section-description-4": "以太坊网络处理几个关键任务,例如:", + "page-what-is-ethereum-network-section-description-5": "更新用户帐户和余额", + "page-what-is-ethereum-network-section-description-6": "执行智能合约(运行应用程序的程序)", + "page-what-is-ethereum-network-section-description-7": "跟踪数字资产(如稳定币和 NFT)的所有权", + "page-what-is-ethereum-network-section-description-8": "处理每天流经以太坊的所有交易", + "page-what-is-ethereum-network-section-description-9": "幸运的是,您无需了解网络的工作原理即可使用它。", + "page-what-is-ethereum-network-section-description-10": "大多数人只是通过数字钱包使用该网络。钱包通常是一个网页或移动应用程序,可让您发送接收 ETH、管理您的资产以及使用应用程序。", + "page-what-is-ethereum-network-section-description-11": "其他类型的用户,如在以太坊上构建的开发者和企业,可能会使用应用程序接口、节点软件或部署智能合约。", + "page-what-is-ethereum-network-section-description-12": "以太坊网络的设计方式使其与传统系统不同。以太坊的代码和数据存储在世界各地的去中心化节点上,因此没有人可以阻止您的访问或关闭您的应用程序。", + "page-what-is-ethereum-network-section-description-13": "而且由于任何人都可以加入,它为全球访问和创新打开了大门。", + "page-what-is-ethereum-network-section-description-14": "这些特性使以前不可能实现的事情成为可能,例如:", + "page-what-is-ethereum-network-section-description-15": "数据所有权", + "page-what-is-ethereum-network-section-description-16": "没有去平台化的社交媒体", + "page-what-is-ethereum-network-section-description-17": "开放和透明的金融系统", + "page-what-is-ethereum-network-section-description-18": "从本质上讲,以太坊网络是数字所有权和开放参与的基础。", + "page-what-is-ethereum-network-section-description-19": "您可能会听到人们提到以太坊主网。这就是数百万人每天使用的以太坊网络,真实资产在这里交换,真实应用在这里运行。但“主网”有助于将其与以太坊二层网络和开发者在上线前用来试用新功能的测试网络 (testnet) 区分开来。", + "page-what-is-ethereum-network-gas-section-description-1": "以太坊上的每笔交易都要花费一笔称为燃料费的小额费用。无论您是发送 ETH、交换代币还是使用应用程序,每次向区块链写入数据时,您都需要支付少量燃料费。", + "page-what-is-ethereum-network-gas-section-description-2": "燃料费可确保以太坊顺利运行。如果没有它,不良行为者可能会用空交易向网络发送垃圾信息,并通过严重拥塞使其无法使用,因为无法根据用户愿意支付的费用来确定交易的优先级。", + "page-what-is-ethereum-network-gas-section-description-3": "以太坊燃料费涵盖了一笔交易所能消耗的许多不同资源的成本,例如计算、带宽或存储。所有这些都为用户抽象成一个单一的值,但大量的研发工作用于确定每个操作相对于其他操作的成本。", + "page-what-is-ethereum-network-gas-section-description-4": "那么,当您支付燃料费时会发生什么?一部分支付给验证者,验证者将您的交易添加到一个交易“区块”中。另一部分则被“销毁”,从供应中移除。", + "page-what-is-ethereum-network-gas-section-description-5": "这有助于平衡供需关系,因为当网络繁忙时,费用就会上涨。当网络比较空闲时,费用就会下降。", + "page-what-is-ethereum-network-gas-section-description-6": "自从 2021 年 8 月网络引入费用销毁以来,已有数百万 ETH 被销毁。您可以使用以太坊社区构建的 网络仪表板和浏览器 探索最新数据。", + "page-what-is-ethereum-network-gas-section-description-7": "那么,一笔交易的成本是多少?", + "page-what-is-ethereum-network-gas-section-description-8": "嗯,费用因您所做的操作而异。仅发送 ETH 可能只需不到一美元。在去中心化交易所 (DEX) 上交换代币可能需要几美元或更多,尤其是在网络繁忙时。交易越复杂,燃料费就越高。", + "page-what-is-ethereum-network-gas-section-description-9": "燃料费是使用以太坊最显眼的部分之一,尤其是对于新用户而言,但这一切都是为了让网络更可靠、更安全。", + "page-what-is-ethereum-network-gas-section-description-10": "了解有关以太坊网络费用的更多信息", + "page-what-is-ethereum-network-staking-section-description-1": "以太坊网络由一个名为质押的系统来保障安全。这就是以太坊验证交易、添加新区块以及保护网络免受攻击的方式。", + "page-what-is-ethereum-network-staking-section-description-2": "以太坊最初使用一种名为工作量证明的共识机制(一种就谁拥有什么达成一致的方法)。这与比特币今天使用的机制相同。", + "page-what-is-ethereum-network-staking-section-description-3": "2022 年 9 月,以太坊升级为更安全、更节能的权益证明共识机制。", + "page-what-is-ethereum-network-staking-section-description-4": "那么,它是如何运作的呢?", + "page-what-is-ethereum-network-staking-section-description-5": "简而言之,人们锁定一些 ETH (将他们的 ETH 进行质押)作为押金,以便他们可以帮助保障网络安全。这些人被称为验证者。当您质押 ETH 时,您的验证者会被选中来检查和添加新交易。如果您诚实行事,您将获得奖励。如果您试图作弊,您将失去部分质押。", + "page-what-is-ethereum-network-staking-section-description-6": "质押是以太坊对其服务质量做出可信承诺的方式。所有这些质押的资金都以太坊保持安全的最佳利益为重——您会押注它会失败吗?", + "page-what-is-ethereum-network-staking-section-description-7": "在推出权益证明仅两年后,以太坊就吸引了 超过一百万的验证者,他们质押了 数百万的 ETH 来保障以太坊的安全。这使得攻击以太坊变得极其昂贵和困难。这是因为,要攻击网络,一个实体需要至少 1/3 的所有质押 ETH 才能开始攻击网络。如今,这相当于数百亿美元,即便如此,攻击也可能失败,因为超过 1/3 的人不同意网络其余部分的意见会阻止最终确定性,但链会继续以被认为是事实来源的另一个版本增长。超过 1/2 的人可以改变哪个版本被认为是事实,超过 2/3 的人则可以最终确定其他人不同意的事情。", + "page-what-is-ethereum-network-staking-section-description-8": "这就是以太坊具有“经济安全性”的原因。这不仅仅是拥有正确的技术,更是让攻击的成本高到甚至不值得尝试。", + "page-what-is-ethereum-network-staking-section-description-9": "为了帮助保障以太坊网络的安全,您可以通过两种主要方式做到这一点。", + "page-what-is-ethereum-network-staking-section-description-10": "第一种方法是运行一个节点。节点存储区块链的整个历史,包括所有交易和智能合约数据。通过与其他节点同步,它们可以就网络的状态达成一致,确保交易是合法的,并且智能合约数据是可用的。", + "page-what-is-ethereum-network-staking-section-description-11": "第二种方法是质押您的 ETH。最简单的方法是通过像 LidoRocketpool 这样的质押提供商。但是,如果您有专业知识,可以尝试在家运行验证者软件。", + "page-what-is-ethereum-network-staking-section-description-12": "了解更多关于质押以及如何操作的信息", + "page-what-is-ethereum-network-staking-section-description-13": "了解如何运行节点", + "page-what-is-ethereum-network-layer-2s-section-description-1": "随着以太坊越来越受欢迎,网络也变得越来越繁忙。当需求量大时,燃料费会上涨,交易时间会变长。为了解决这个问题,开发者们构建了一系列名为二层网络的配套网络。", + "page-what-is-ethereum-network-layer-2s-section-description-2": "二层网络,也称为 L2,是在以太坊之上运行的其他网络。它们分开处理交易,然后将摘要发送到以太坊上存储。", + "page-what-is-ethereum-network-layer-2s-section-description-3": "您可以将它们想象成高速公路上的快车道。许多交易不是通过以太坊主网,而是使用这些更快、更便宜的道路。", + "page-what-is-ethereum-network-layer-2s-section-description-4": "一些最受欢迎的 L2 包括 Base、Arbitrum、Optimism、zkSyncStarknet。它们各自的工作方式略有不同,但理念是相同的——在不影响安全性的前提下扩展以太坊。", + "page-what-is-ethereum-network-layer-2s-section-description-5": "在 Optimism 或 zkSync 上进行简单的 ETH 转账成本低至 0.04 美元,而以太坊主网上的成本为 0.3-1 美元。其他交易,如交换代币,成本可低至 0.20 美元。对用户来说,这意味着交易速度更快,价格更低。", + "page-what-is-ethereum-network-layer-2s-section-description-6": "因此,L2 正在快速增长。它们共同持有数十亿美元的数字资产。", + "page-what-is-ethereum-network-layer-2s-section-description-7": "由于 L2 受益于以太坊的安全性,寻求创建全球支付和应用程序的公司开始在以太坊之上进行构建。", + "page-what-is-ethereum-network-layer-2s-section-description-8": "例如,Robinhood 最近推出了自己的 L2,以探索更快的股票结算。PayPal 将其稳定币 PYUSD 移至以太坊 L2 Arbitrum。Shopify 现在允许商家在 Base 上接受稳定币 USDC。", + "page-what-is-ethereum-network-layer-2s-section-description-9": "对于用户来说,在以太坊和 L2 之间转移资产非常简单。您可以使用由 Optimism 的 Superbridge 或 ZKsync 的 Portal 等 L2 构建的链桥来转移 ETH 和其他资产。您甚至可以使用由独立团队构建的第三方工具,如 HopAcross。", + "page-what-is-ethereum-network-layer-2s-section-description-10": "了解有关以太坊二层网络的更多信息", + "page-what-is-ethereum-network-live-network-data-section-description-1": "以太坊的设计是透明的。网络上的每一个操作,从发送 ETH 到运行验证者,都记录在一个任何人都可以访问的开放公共账本上。", + "page-what-is-ethereum-network-live-network-data-section-description-2": "这与当今大多数系统的工作方式形成鲜明对比:", + "page-what-is-ethereum-network-live-network-data-section-description-3": "银行和机构发布其内部数据", + "page-what-is-ethereum-network-live-network-data-section-description-4": "应用程序使用数据被科技公司严密保护", + "page-what-is-ethereum-network-live-network-data-section-description-5": "经济数据通常会延迟到达,并会在稍后进行修订", + "page-what-is-ethereum-network-live-network-data-section-description-6": "有了以太坊,您不必信任,您可以验证。", + "page-what-is-ethereum-network-live-network-data-section-description-7": "您无需了解这些就可以使用以太坊。但是,如果您对 2024 年结算了多少笔交易,或者过去六个月创建了多少个新的以太坊地址感到好奇,有一些工具可以让任何人都能够实时探索网络。", + "page-what-is-ethereum-network-live-network-data-section-description-8": "以下是一些最有用的数据源,以及您可能使用它们的用途:", + "page-what-is-ethereum-network-live-network-data-section-description-9": "Etherscan:检查交易、钱包活动和智能合约", + "page-what-is-ethereum-network-live-network-data-section-description-10": "beaconcha.in:查看验证者统计数据、质押水平和网络健康状况", + "page-what-is-ethereum-network-live-network-data-section-description-11": "ultrasound.money:实时跟踪 ETH 供应、发行和销毁情况", + "page-what-is-ethereum-network-live-network-data-section-description-12": "l2fees.info:比较以太坊和 L2 上的当前交易成本", + "page-what-is-ethereum-network-live-network-data-section-description-13": "L2Beat:查看所有主要 L2 的安全价值和安全模型", + "page-what-is-ethereum-network-live-network-data-section-description-14": "growthepie:查看以太坊上的所有链上活动和增长情况", + "page-what-is-ethereum-network-live-network-data-section-description-15": "Dune:在以太坊上的所有数字资产上探索自定义仪表板", + "page-what-is-ethereum-network-live-network-data-section-description-16": "Token Terminal:比较去中心化应用程序收入、使用情况和协议性能", + "page-what-is-ethereum-network-live-network-data-section-description-17": "Nansen:关注钱包流向、稳定币动向和聪明钱趋势。", + "page-what-is-ethereum-network-live-network-data-section-description-18": "如果您需要,所有这些工具都可以使用。", + "page-what-is-ethereum-network-live-network-data-section-description-19": "无论您是开发者、研究员、投资者,还是只想检查一笔交易的人,以太坊的开放网络都为您提供数据——实时、无需许可且可验证。", + "page-what-is-ethereum-network-live-network-data-section-description-20": "浏览以太坊网络仪表板和区块浏览器" +} \ No newline at end of file From 961b2e156cf08e1af3943f70be93b8ce4a8a4d13 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:28 -0800 Subject: [PATCH 024/581] update(i18n): src/intl/zh/page-layer-2-learn.json --- src/intl/zh/page-layer-2-learn.json | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/intl/zh/page-layer-2-learn.json diff --git a/src/intl/zh/page-layer-2-learn.json b/src/intl/zh/page-layer-2-learn.json new file mode 100644 index 00000000000..7562a9ce238 --- /dev/null +++ b/src/intl/zh/page-layer-2-learn.json @@ -0,0 +1,55 @@ +{ + "page-layer-2-learn-meta-title": "什么是二层网络?| ethereum.org", + "page-layer-2-learn-title": "什么是 L2?", + "page-layer-2-learn-description": "为实现以太坊的大规模采用而扩容", + "page-layer-2-learn-button-1-label": "什么是 L2?", + "page-layer-2-learn-button-2-label": "使用二层网络", + "page-layer-2-learn-what-is-layer-2-title": "什么是 L2?", + "page-layer-2-learn-what-is-layer-2-1": "二层网络 (L2) 是一种统称,用来描述一系列特定的以太坊扩容解决方案。L2是一条隔离开的区块链它扩展了以太坊并继承了以太坊的安全保证。", + "page-layer-2-learn-what-is-layer-2-2": "现在让我们来深入地了解一下它。为此,我们需要解释一层网络 (L1)。", + "page-layer-2-learn-what-is-layer-1-title": "什么是一层网络?", + "page-layer-2-learn-what-is-layer-1-1": "L1区块链,例如以太坊和比特币,都是构建在L2基础设施之上的项目。L2示例项目包括以太坊上的零知识证明打包乐观卷叠 以及比特币最上百年的雷电网络。", + "page-layer-2-learn-what-is-layer-1-2": "以太坊还充当二层网络的数据可用性层,如果之前的交易存在任何争议,以太坊将为这些争议提供数据。", + "page-layer-2-learn-layer-1-list-title": "以太坊作为一层网络的情况包括:", + "page-layer-2-learn-layer-1-list-1": "节点运营商网络用于保障安全并验证网络", + "page-layer-2-learn-layer-1-list-2": "区块生产者网络", + "page-layer-2-learn-layer-1-list-3": "区块链本身以及交易数据历史记录", + "page-layer-2-learn-layer-1-list-4": "网络共识机制", + "page-layer-2-learn-why-do-we-need-layer-2-title": "为什么我们需要二层网络?", + "page-layer-2-learn-why-do-we-need-layer-2-1": "区块链的三个目标属性是去中心化、安全和可扩展。区块链三难困境中指出,简单的区块链架构只能实现三个属性中的两个。想要安全和去中心化的区块链吗?这意味着你需要牺牲可扩展性。这就是二层网络的用武之地。", + "page-layer-2-learn-why-do-we-need-layer-2-2": "以太坊已达到目前网络容量的上限,即每天 100 多万笔交易,并且每笔交易都具有高需求。以太坊的成功及其使用需求导致燃料价格大幅上涨。因此,对扩容解决方案的呼声也是日益高涨。这就是二层网络诞生的原因。", + "page-layer-2-learn-why-do-we-need-layer-2-scalability": "可扩展性", + "page-layer-2-learn-why-do-we-need-layer-2-scalability-1": "可扩展性的主要目标是提升交易速度(更快确认交易)和交易吞吐量(提高每秒交易量),而不牺牲去中心化或安全性。", + "page-layer-2-learn-why-do-we-need-layer-2-scalability-2": "以太坊社区已明确表态,绝不会以牺牲去中心化或安全性为代价换取扩容能力。在实现分片(sharding)之前,以太坊主网(Layer 1)的吞吐量仅能维持每秒约 15 笔交易。当网络需求激增时,这会导致网络拥堵、交易费用飙升,并使得无法负担手续费的用户被迫离线,直到费用回落。Layer 2 正是为应对这一问题而设计,以在当下实现以太坊的高频化运行。", + "page-layer-2-learn-layer2Cards-1-title": "降低费用", + "page-layer-2-learn-layer2Cards-1-description": "通过将多笔交易合并成一笔单独的L1网络交易,交易费将大幅降低,从而使所有人都能更容易地参与以太坊。", + "page-layer-2-learn-layer2Cards-2-title": "维护安全", + "page-layer-2-learn-layer2Cards-2-description": "L2区块链在以太坊主网上结算他们的交易,使他们的用户能够受益于以太坊网络的安全性。", + "page-layer-2-learn-layer2Cards-3-title": "拓展用例", + "page-layer-2-learn-layer2Cards-3-description": "随着每秒交易量的增加、交易费的降低和新技术的发展,项目将拓展到新的应用,并改进用户体验。", + "page-layer-2-learn-how-does-layer-2-work-title": "二层网络是如何工作的?", + "page-layer-2-learn-how-does-layer-2-work-1": "正如我们在上面所提到,二层网络是以太坊扩容解决方案的统称,这些解决方案在处理以太坊一层网络以外的交易的同时,还能利用以太坊一层网络强有力的去中心化安全性。二层网络是一个对以太坊进行扩展的单独区块链。那么它是如何运作的呢?", + "page-layer-2-learn-how-does-layer-2-work-2": "二层网络有几种不同类型,各有自己的权衡取舍和安全模型。二层网络减轻了一层网络的交易负担,使其拥塞情况得以改善,并增强了整体可扩展性。", + "page-layer-2-learn-how-does-layer-2-work-rollups-title": "卷叠", + "page-layer-2-learn-how-does-layer-2-work-rollups-1": "Rollup(卷叠)将数百笔交易打包整合为一笔 Layer 1 交易,从而将 Layer 1 的手续费分摊至所有参与用户,大幅降低每个人的成本。", + "page-layer-2-learn-how-does-layer-2-work-rollups-2": "卷叠中的交易数据会提交到一层网络,但执行由卷叠独立进行。通过将交易数据提交到一层网络,卷叠可以继承以太坊的安全性。这是因为在数据上传到一层网络后,回滚卷叠交易需要回滚以太坊。卷叠有两种形式:乐观卷叠和零知识卷叠 - 它们的主要区别在于交易数据提交到一层网络的方式。", + "page-layer-2-learn-rollupCards-optimistic-title": "乐观卷叠", + "page-layer-2-learn-rollupCards-optimistic-description": "乐观卷叠的“乐观”体现在其假定交易是有效的,但可以在必要时提出质疑。如果交易被怀疑无效,则会运行一项错误性证明,验证是否已经发生无效交易。", + "page-layer-2-learn-rollupCards-optimistic-childSentence": "关于乐观卷叠的更多信息", + "page-layer-2-learn-rollupCards-zk-title": "ZK Rollup", + "page-layer-2-learn-rollupCards-zk-description": "Zk-Rollups 使用有效性证明,其中交易计算是在链下进行的,然后将这些数据连同其有效性证明一起提供给以太坊主网。", + "page-layer-2-learn-rollupCards-zk-childSentence": "关于零知识卷叠的更多信息", + "page-layer-2-learn-dyor-title": "做好自己的研究:二层网络的风险", + "page-layer-2-learn-dyor-1": "由于二层网络链(layer 2 chains)继承了以太坊的安全性,理想情况下,它们的安全性与 Layer 1 以太坊一样高。然而,许多 项目仍然处于起步阶段,且处于实验阶段。经过多年的研发,许多将用于扩展以太坊的 Layer 2 技术已于 2021 年上线。这并不是说这些 Layer 2 不安全,只是说没有哪个 Layer 2 像以太坊主网那样经过了全面实战验证。您始终需自行研究(Dyor)并评估其潜在风险。", + "page-layer-2-learn-dyor-2": "关于二层网络(L2)技术、风险和信任假设的更多信息,我们建议查阅 L2BEAT,其中为每个项目提供了全面的风险评估框架。", + "page-layer-2-learn-dyor-link": "前往 L2BEAT", + "page-layer-2-learn-note-on-alt-l1-title": "关于其他一层网络、侧链和 Validium 的注释", + "page-layer-2-learn-note-on-alt-l1-1": "替代性 Layer 1 链(Alt Layer 1)的吞吐量显著高于以太坊,且交易费用极低。但代价是此类链不得不牺牲部分安全性或去中心化程度。以太坊生态已形成共识:Layer 2 扩容才是唯一能解决“可扩展性三难困境”(Scalability Trilemma)的可行方案,即在保持完全去中心化与安全性的前提下实现 TPS 增长。", + "page-layer-2-learn-note-on-alt-l1-2": "侧链Sidechains和 Validium 是与主链并行运行的区块链,它们通过桥接合约实现资产在链间的转移。然而,两者的安全性或数据可用性未直接受主链保障,而是通过独立机制提供。它们同样提供更低的交易费用和更高的吞吐量,但信任模型更偏向实验性。点击链接了解 侧链Validium。", + "page-layer-2-learn-callout-1-title": "有哪些好处?", + "page-layer-2-learn-callout-1-description": "探索二层网络解决方案对用户体验的实际影响。", + "page-layer-2-learn-learn-more": "了解更多", + "page-layer-2-learn-callout-2-title": "探索不同的网络", + "page-layer-2-learn-callout-2-description": "了解不同网络之间的差异及其发展进展。", + "page-layer-2-learn-explore-networks": "探索网络" +} From b4e02174965d57fdb0f9a7f7cad5bc6b881ac6f5 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:31 -0800 Subject: [PATCH 025/581] update(i18n): src/intl/zh/page-developers-index.json --- src/intl/zh/page-developers-index.json | 93 +++++++++++++++++--------- 1 file changed, 63 insertions(+), 30 deletions(-) diff --git a/src/intl/zh/page-developers-index.json b/src/intl/zh/page-developers-index.json index d51a3dd23c1..960a0b6d289 100644 --- a/src/intl/zh/page-developers-index.json +++ b/src/intl/zh/page-developers-index.json @@ -1,36 +1,25 @@ { "page-developer-meta-title": "以太坊开发者资源", - "page-developers-about": "关于这些开发者资源", - "page-developers-about-desc": "ethereum.org 提供有关基本概念和开发堆栈的文档,帮助你使用以太坊进行构建。另外还有一些教程来帮助你入门和运行。", - "page-developers-about-desc-2": "在 Mozilla 开发者网络的启发下,我们认为以太坊需要一个地方来容纳伟大的开发者内容和资源。像我们在 Mozilla 的朋友一样,这里的一切都是开源的,并准备好让你扩展和改进。", "page-developers-account-desc": "网络上的合约或人员", "page-developers-accounts-link": "帐户", - "page-developers-advanced": "高级", "page-developers-api-desc": "使用库与智能合约互动", "page-developers-api-link": "后端应用程序接口", "page-developers-block-desc": "添加到区块链的交易批次", "page-developers-block-explorers-desc": "你的以太坊数据门户网站", "page-developers-block-explorers-link": "区块浏览器", "page-developers-blocks-link": "区块", - "page-developers-browse-tutorials": "浏览教程", - "page-developers-choose-stack": "选择你的堆栈", - "page-developers-contribute": "贡献", "page-developers-dev-env-desc": "适合去中心化应用程序开发的集成开发环境", "page-developers-dev-env-link": "开发环境", - "page-developers-discord": "加入 Discord", "page-developers-docs-introductions": "介绍", "page-developers-evm-desc": "处理交易的计算机", "page-developers-evm-link": "以太访虚拟机 (EVM)", "page-developers-explore-documentation": "浏览相关文档", - "page-developers-feedback": "如果你有任何反馈,请通过 GitHub Issue 或我们的 Discord 服务器联系我们。", "page-developers-frameworks-desc": "帮助加速开发的工具", "page-developers-frameworks-link": "开发框架", "page-developers-fundamentals": "基础", "page-developers-gas-desc": "交易所需的以太币", "page-developers-gas-link": "燃料", - "page-developers-get-started": "你想如何开始?", - "page-developers-improve-ethereum": "帮助我们使 ethereum.org 变得更好", - "page-developers-improve-ethereum-desc": "就像 ethereum.org 一样,这些文档是社区努力的结果。如果你看到错误、有待改进的地方或新的机会能帮到以太坊开发者,请创建一个拉取请求。", + "page-developers-get-started": "你今天想要构建什么?", "page-developers-into-eth-desc": "关于区块链和以太坊的介绍", "page-developers-intro-ether-desc": "加密货币和 ETH 简介", "page-developers-intro-dapps-desc": "关于去中心化应用程序的介绍", @@ -41,6 +30,7 @@ "page-developers-intro-stack-desc": "关于以太坊堆栈的介绍", "page-developers-js-libraries-desc": "使用 JavaScript 与智能合约进行交互", "page-developers-js-libraries-link": "JavaScript 库", + "page-developers-jump-right-in-title": "即刻实现你的想法", "page-developers-language-desc": "以熟悉的语言使用以太坊", "page-developers-languages": "编程语言", "page-developers-learn": "学习以太坊开发", @@ -49,41 +39,32 @@ "page-developers-learn-tutorials-cta": "查看教程", "page-developers-learn-tutorials-desc": "已经做过以太坊开发的构建者一步一步地引导你学习以太坊开发。", "page-developers-meta-desc": "本页为以太坊开发者提供相关文档、教程以及工具。", - "page-developers-mev-desc": "最大可提取价值 (MEV) 简介", - "page-developers-mev-link": "最大可提取价值 (MEV)", - "page-developers-mining-desc": "如何使用工作量证明创建新区块并达成共识", - "page-developers-mining-link": "挖矿", - "page-developers-mining-algorithms-desc": "关于以太坊挖矿算法的信息", - "page-developers-mining-algorithms-link": "挖矿算法", "page-developers-networks-desc": "主网和测试网络的概览", "page-developers-networks-link": "网络", "page-developers-node-clients-desc": "如何在网络中验证块和交易", "page-developers-node-clients-link": "节点和客户端", - "page-developers-oracle-desc": "获取链下数据到你的智能合约", - "page-developers-oracles-link": "预言机", "page-developers-play-code": "使用代码播放", + "page-developers-quickstart-scaffold-subtext": "在几秒钟内快速搭建你的以太坊应用开发环境。", + "page-developers-quickstart-scaffold-docs": "阅读Scaffold-ETH 2 文档", "page-developers-read-docs": "阅读文档", - "page-developers-scaling-desc": "快速交易解决方案", - "page-developers-scaling-link": "扩容", + "page-developers-start-quest": "开始任务", + "page-developers-resources": "资源", "page-developers-smart-contract-security-desc": "开发智能合约过程中需要考虑的安全措施", "page-developers-smart-contract-security-link": "智能合约安全性", - "page-developers-set-up": "设置本地环境", - "page-developers-setup-desc": "通过配置开发环境使你的堆栈准备好构建。", "page-developers-smart-contracts-desc": "去中心化应用程序背后的逻辑 — 自动执行协议", "page-developers-smart-contracts-link": "智能合约", + "page-developers-solidity-docs": "阅读Solidity的文档", "page-developers-speedrunethereum-title": "基于以太坊的开发实践来学习所有最重要的概念", + "page-developers-speedrunethereum-description": "接受他人的指导,学习如何与其他开发者合作。", "page-developers-speedrunethereum-link": "SpeedRun 以太坊", "page-developers-stack": "堆栈", - "page-developers-start": "开始试用", - "page-developers-start-desc": "想先尝试,稍后提问?", + "page-developers-start": "挑战 & 指导", "page-developers-storage-desc": "如何处理去中心化应用程序存储", "page-developers-storage-link": "存储", - "page-developers-subtitle": "以太坊的构建者手册。由构建者编写,为构建者所用。", + "page-developers-subtitle": "以太坊构建者手册。构建和拓展你的链上应用程序所需的一切。", "page-developers-title-1": "以太坊", "page-developers-title-2": "开发者", "page-developers-title-3": "资源", - "page-developers-token-standards-desc": "已接受令牌标准的概览", - "page-developers-token-standards-link": "代币标准", "page-developers-transactions-desc": "以太坊状态的变化方式", "page-developers-transactions-link": "交易", "page-developers-web3-desc": "Web3 开发世界的不同之处", @@ -95,5 +76,57 @@ "page-developers-data-structures-and-encoding-link": "数据结构和编码", "page-developers-data-structures-and-encoding-desc": "以太坊堆栈中使用的数据结构和编码方案简介", "alt-eth-blocks": "积木被搭建成以太坊符号的图示", - "page-assets-doge": "使用去中心化应用程序的拟人狗" + "page-assets-doge": "使用去中心化应用程序程序的拟人狗", + "page-developers-build-section-desc": "学习和构建你在以太坊上首个应用程序所需的一切", + "page-developers-resources-section-title": "有用的开发者资源", + "page-developers-get-help-title": "获取帮助", + "page-developers-get-help-desc": "如果你遇到困难或需要帮助解决问题,请务必寻求指导。", + "page-developers-stack-exchange": "堆栈交流平台", + "page-developers-ask-ai": "询问 AI", + "page-developers-resources-title": "资源", + "page-developers-resources-desc": "想先尝试,再提问吗?请查看沙盒、训练营等资源。", + "page-developers-tutorials-title": "教程", + "page-developers-tutorials-desc": "已经做过以太坊开发的构建者一步一步地引导你学习以太坊开发。", + "page-developers-video-courses-title": "视频课程", + "page-developers-video-courses-desc": "想要开始你在区块链领域的职业生涯吗?这些课程将帮助你成为区块链开发者。", + "page-developers-docs-section-desc": "理解以太坊和区块链的核心概念", + "page-developers-hackathons-title": "参加黑客松", + "page-developers-hackathons-desc": "黑客松是与他人建立联系、学习经验、启动项目和赢取奖金的绝佳机会", + "page-developers-visit-ethglobal": "访问 EthGlobal", + "page-developers-founders-title": "您是项目创始人吗?", + "page-developers-founders-desc": "已经有项目想法或正在开发原型?了解如何将你的项目推进到下一阶段。我们可以帮助你与相关组织和领域内专家进行对接。", + "page-developers-get-in-touch": "联系我们", + "page-developers-see-grant-options": "查看资助项目", + "page-developers-speedrun-nft-alt": "以太坊代币化速通横幅", + "page-developers-speedrun-nft-title": "代币化", + "page-developers-speedrun-nft-desc": "创建一个独特的代币,学习 scaffold-eth 的基础知识。", + "page-developers-skill-beginner": "初学者", + "page-developers-skill-intermediate": "中级", + "page-developers-skill-advanced": "高级", + "page-developers-speedrun-dex-alt": "以太坊 DEX 速通横幅", + "page-developers-speedrun-dex-title": "去中心化交易所", + "page-developers-speedrun-dex-desc": "构建一个简单的自动化做市商,提供流动性并实现代币交换。", + "page-developers-speedrun-stablecoins-alt": "以太坊稳定币速通横幅", + "page-developers-speedrun-stablecoins-title": "稳定币", + "page-developers-speedrun-stablecoins-desc": "构建一个稳定币,学习稳定性机制和价格预言机。", + "page-developers-course-duration": "-小时课程", + "page-developers-course-blockchain-basics-title": "区块链基础知识", + "page-developers-course-blockchain-basics-desc": "了解区块链和智能合约如何运作,创建一个钱包并签署你的第一笔交易。", + "page-developers-course-blockchain-basics-alt": "Cyfrin Updraft 区块链原理课程横幅", + "page-developers-course-solidity-title": "Solidity 智能合约开发", + "page-developers-course-solidity-desc": "Solidity 编程是你进入以太坊兼容生态系统中的 Web3 开发的门户。", + "page-developers-course-solidity-alt": "Cyfrin Updraft Solidity 智能合约开发课程横幅", + "page-developers-course-foundry-fundamentals-title": "Foundry 基础", + "page-developers-course-foundry-fundamentals-desc": "通过 Foundry 以及高级 Web3 开发概念和工具提升你的 Solidity 开发技能。", + "page-developers-course-foundry-fundamentals-alt": "Cyfrin Updraft Foundry 基础课程横幅", + "page-developers-course-advanced-foundry-title": "进阶 Foundry", + "page-developers-course-advanced-foundry-desc": "借助用于 Solidity 智能合约开发的 Advanced Foundry 掌握 Web3 开发技巧。", + "page-developers-course-advanced-foundry-alt": "Cyfrin Updraft 进阶Foundry课程横幅", + "page-developers-course-security-title": "智能合约安全性", + "page-developers-course-security-desc": "开始你作为智能合约安全研究员的职业生涯!学习智能合约审计和最佳实践。", + "page-developers-course-security-alt": "Cyfrin Updraft 区块链原理课程横幅", + "page-developers-why-title": "薪资优厚,远程办公,共筑未来。", + "page-developers-why-subtitle": "超过一半的区块链工作岗位支持远程优先,有些估计甚至高达 70%。", + "page-developers-why-avg-salary-dev": "开发者平均薪资", + "page-developers-why-avg-salary-blockchain": "区块链行业平均薪资" } From e85363fae43a06dedfe55d2d2baf50b6c02316e1 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:34 -0800 Subject: [PATCH 026/581] update(i18n): src/intl/zh/glossary-tooltip.json --- src/intl/zh/glossary-tooltip.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/intl/zh/glossary-tooltip.json b/src/intl/zh/glossary-tooltip.json index ceb505e6490..24b8f76094a 100644 --- a/src/intl/zh/glossary-tooltip.json +++ b/src/intl/zh/glossary-tooltip.json @@ -35,7 +35,7 @@ "dapp-definition": "dApp 是在区块链网络上运行的去中心化应用程序,无需通过中央控制机构即可提供服务。了解有关去中心化应用程序的更多信息。", "data-availability-term": "数据可用性", "data-availability-definition": "为了维护系统的透明与信任,任何节点都可以单独地验证区块链上的交易。", - "defi-term": "去中心化金融", + "defi-term": "去中心化金融 (DeFi)", "defi-definition": "一种广义的以太坊应用程序,旨在提供由区块链支持的金融服务,无需任何中介。了解有关去中心化金融 (DeFi) 的更多信息", "dex-term": "去中心化交易所 (DEX)", "dex-definition": "一种允许你与网络上的其他对等节点交换代币的以太坊应用程序。去中心化交易所不像中心化交易所那样受到地理限制 — 任何人都能够参与。", @@ -59,7 +59,7 @@ "erc-721-definition": "用于创建 NFT(非同质化代币)的标准规则集。", "ether-term": "以太币", "ether-definition": "以太坊的原生加密货币,通常称为“以太币”。用于在使用以太坊生态系统和应用程序时支付交易费。了解有关以太币的更多信息。", - "events-term": "事件", + "events-term": "活动", "events-definition": "允许使用以太坊虚拟机日志工具。去中心化应用程序可以侦听事件,并使用它们在用户界面触发 JavaScript 回调。了解有关事件和日志的更多信息", "execution-client-term": "执行客户端", "execution-client-definition": "执行客户端(曾被称为“Eth1 客户端”),例如 Besu、Erigon、Go-Ethereum (Geth)、Nethermind,负责处理和广播交易以及管理以太坊的状态。它们为每一笔使用以太坊虚拟机的交易进行运算,确保这些交易遵守共识规则。", @@ -85,7 +85,7 @@ "index-definition": "一种网络结构,旨在通过提供信息存储源的有效路径来优化整条区块链信息的查询。", "key-term": "密钥", "key-definition": "在以太坊背景中,密钥是数字代码:公钥用于接收交易,私钥用于存取与发送资金。", - "layer-2-term": "二层网络", + "layer-2-term": "二层", "layer-2-definition": "二层网络是建立在以太坊主网络之上的另一类网络,旨在使交易更快、更便宜。了解有关二层网络的更多信息。", "liquidity-tokens-term": "流动性代币", "liquidity-tokens-definition": "流动性代币 (LT) 是向将资产存入流动性池的参与者发行的数字代币,流动性池是锁定在智能合约中的资金集合,用于促进去中心化交易所 (DEX) 上的交易。", @@ -107,7 +107,7 @@ "optimistic-rollup-definition": "乐观卷叠是一种二层网络解决方案,可以加速以太坊上的交易,假设交易默认有效,除非受到质疑。了解有关乐观卷叠的更多信息。", "peer-to-peer-network-term": "对等网络", "peer-to-peer-network-definition": "一个由计算机(对等节点)组成,无需基于服务器的中心服务即可共同执行功能的网络。", - "permissionless-term": "无需准入性", + "permissionless-term": "无需许可", "permissionless-definition": "使用像以太坊这样的系统无需许可或批准,没有任何人能阻止你使用它。它全天候开放给所有人参与。", "private-key-term": "私钥", "private-key-definition": "私钥是一个秘密代码,可以证明您拥有数字货币并允许您使用它,就像您帐户的 PIN 码一样。切勿告知他人。", @@ -135,7 +135,7 @@ "smart-contract-definition": "智能合约是一种程序,可以在区块链上自动执行协议,就像自动执行的数字合约。智能合约简介。", "stablecoin-term": "稳定币", "stablecoin-definition": "稳定币是一种加密货币,设计具有稳定的价值,常与一种货币或商品挂钩(如美元),将价格波动降至最小。了解有关稳定币的更多信息。", - "staking-term": "权益质押", + "staking-term": "质押", "staking-definition": "存入一定数量的以太币(你的质押)来成为一名验证者并保护网络。验证者在权益证明的共识模型下检查交易并提议区块。质押能够为符合网络最佳利益的行为提供经济上的激励。你会在履行验证者责任时获得奖励,反之则会损失不同数量的以太币。了解有关以太坊质押的更多信息。", "staking-pool-term": "质押池", "staking-pool-definition": "联合多个以太坊质押者的以太币,用于达到激活一组验证者密钥所需的 32 个以太币。节点运营商使用这些密钥参与共识,区块奖励会被分配给参与贡献的质押者。质押池或委托质押不是以太坊协议原生的,但社区已经构建了很多解决方案。了解有关联合质押的更多信息。", From ee9f3c618a78e11d405bf7a5529c7895e45925bf Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:36 -0800 Subject: [PATCH 027/581] update(i18n): src/intl/zh/page-wallets-find-wallet.json --- src/intl/zh/page-wallets-find-wallet.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/intl/zh/page-wallets-find-wallet.json b/src/intl/zh/page-wallets-find-wallet.json index 69ee8fa4de3..20482b5e7fe 100644 --- a/src/intl/zh/page-wallets-find-wallet.json +++ b/src/intl/zh/page-wallets-find-wallet.json @@ -84,5 +84,8 @@ "page-find-wallet-social-links": "链接", "page-find-wallet-empty-results-title": "没有结果", "page-find-wallet-empty-results-desc": "没有符合你的搜索条件的钱包,请尝试移除一些筛选器。", - "page-find-wallet-see-wallets": "查看钱包" + "page-find-wallet-privacy": "隐私", + "page-find-wallet-privacy-desc": "支持内置隐私交易的钱包", + "page-find-wallet-see-wallets": "查看钱包", + "page-find-wallet-search-languages": "搜索语言..." } From 7d6811de7aa0438825a8f0fe5568288c1c164c60 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:38 -0800 Subject: [PATCH 028/581] update(i18n): src/intl/zh/page-10-year-anniversary.json --- src/intl/zh/page-10-year-anniversary.json | 131 ++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 src/intl/zh/page-10-year-anniversary.json diff --git a/src/intl/zh/page-10-year-anniversary.json b/src/intl/zh/page-10-year-anniversary.json new file mode 100644 index 00000000000..85e9781556b --- /dev/null +++ b/src/intl/zh/page-10-year-anniversary.json @@ -0,0 +1,131 @@ +{ + "page-10-year-anniversary-meta-title": "10周年庆典", + "page-10-year-anniversary-meta-description": "庆祝10 年以来的抗审查、100% 正常运行时间、去中心化、社区建设、开发者增长、全球协作、加密朋克价值观、黑客马拉松、抗审查、无需许可金融、可信中立性、无限花园、客户多样性...以及不仅于此的历程。", + "page-10-year-censorship-resistance": "抗审查", + "page-10-year-uptime": "始终100%正常运行", + "page-10-year-decentralization": "去中心化", + "page-10-year-community-building": "社区建设", + "page-10-year-developer-growth": "开发者成长", + "page-10-year-global-collaboration": "全球合作", + "page-10-year-cypherpunk-values": "赛博朋克价值观", + "page-10-year-hackathons": "黑客马拉松", + "page-10-year-permissionless-finance": "无需许可的金融", + "page-10-year-credible-neutrality": "可信中立性", + "page-10-year-infinite-garden": "无限花园", + "page-10-year-client-diversity": "客户端多样性", + "page-10-year-celebrating": "庆祝10周年", + "page-10-year-hero-title": "这十年里,我们一区块又一区块地改变着世界", + "page-10-year-hero-description": "2015 年 7 月 30 日,以太坊区块链诞生了。创世区块被挖出的那一刻,为互联网开启了全新可能,也为金融、所有权和可编程性带来了变革性的改变。", + "page-10-year-hero-tagline": "十年已经过去,未来前途无限。", + "page-10-year-join-party-title": "加入我们", + "page-10-year-join-party-description": "与全球社区一同庆祝以太坊10周年。你可以寻找本地活动,也可以自行发起庆祝。", + "page-10-year-events-description-1": "与来自世界各地的人们一起参与演讲、交流与庆祝活动,共同迎接以太坊的十岁生日", + "page-10-year-events-description-2": "不能亲临现场?那就观看我们的直播,并关注全球各地活动的最新动态,让每个人都能一起庆祝这一重要里程碑。", + "page-10-year-host-event-title": "分享你的活动", + "page-10-year-host-event-description": "如果您正在举办活动?请进入活动主页,填写活动详情,活动地点将显示在地图上。", + "page-10-year-host-event-cta": "分享活动", + "page-10-year-innovation-title": "10年的", + "page-10-year-innovation-subtitle": "创新", + "page-10-year-innovation-description-1": "以太坊通过引入智能合约,改变了区块链的形态", + "page-10-year-innovation-description-2": "借助以太坊,区块链从一个数字账本,转变为一个可编程平台 —— 在这里,代码会在满足预设条件时自动执行。", + "page-10-year-innovation-description-3": "以太坊的创新催生了诸如DeFi、NFTs和去中心化自治组织等全新行业。它将区块链的应用范围从数字货币拓展到了一个能重新构想价值创造与交换方式的平台。", + "page-10-year-adoption-title": "10年的", + "page-10-year-adoption-subtitle": "应用程度", + "page-10-year-adoption-description-1": "从一份白皮书到以太坊生态中每天超过2400万笔交易", + "page-10-year-adoption-description-2": "以太坊已成长为一个全球计算平台,为数千个应用提供支持,每天有数百万用户在使用这些应用。它跨越行业与国界,且其应用场景仍在持续拓展。", + "page-10-year-stories-title": "10年的", + "page-10-year-stories-subtitle": "故事", + "page-10-year-stories-description-1": "以下概述以太坊在日常生活中的应用方式", + "page-10-year-stories-description-2": "无论是数百万钱包的使用者还是遍布全球的以太坊爱好者, 人们以各种颇具启发性的方式使用以太坊, 这些真实的案例展现了以太坊赋能的创造力、自由和将世界各个角落相连接的能力", + "page-10-year-stories-cta": "分享你的故事", + "page-10-year-ideas-title": "有社群该如何庆祝的灵感?", + "page-10-year-ideas-description": "链上藏品、一场全球范围的以太坊知识问答游戏 —— 创意无限!在下方提出你的想法吧。", + "page-10-year-ideas-cta": "提交你的灵感", + "page-10-year-event-link": "前往活动", + "page-10-year-countdown-expired": "以太坊10岁了!🚀", + "page-10-year-countdown-day": "天", + "page-10-year-countdown-days": "天", + "page-10-year-countdown-hour": "小时", + "page-10-year-countdown-hours": "小时", + "page-10-year-countdown-minute": "分钟", + "page-10-year-countdown-minutes": "分钟", + "page-10-year-countdown-second": "秒", + "page-10-year-countdown-seconds": "秒", + "page-10-year-banner-header": "以太坊 10 周年", + "page-10-year-banner-launch-text": "2015 年 7 月 30 日,协调世界时间下午 3 点 44 分,以太坊区块链的第一个区块诞生了。", + "page-10-year-banner-tagline": "十年已过,未来无限!", + "page-10-year-banner-cta": "加入我们", + "page-10-year-stories-read-more": "了解更多", + "page-10-year-stories-show-original": "显示原文", + "page-10-year-stories-show-english": "显示为英语", + "page-10-year-stories-original-language": "源语言", + "page-10-year-stories-english-translation": "翻译", + "page-10-year-stories-show-more": "显示更多", + "page-10-year-globe-go-to-event": "前往活动", + "page-10-year-innovation-card-1-title": "以太坊启动", + "page-10-year-innovation-card-1-date": "2015年7月13日", + "page-10-year-innovation-card-1-description-1": "“以太坊创世区块正式上线,启动了边境网络。这个基础版本首次为开发者提供了构建去中心化应用和试验智能合约的机会。", + "page-10-year-innovation-card-1-description-2": "以太坊的使命是:打造一个开放的互联网 —— 在这里,用户掌控自己的数据,应用程序运行无需守门人,价值在人与人之间自由流动。", + "page-10-year-innovation-card-2-title": "DAI:先驱稳定币", + "page-10-year-innovation-card-2-date": "2015年12月", + "page-10-year-innovation-card-2-description-1": "首个去中心化稳定币推出。DAI 通过锁定在智能合约中的加密货币抵押物来维持与美元的软挂钩。", + "page-10-year-innovation-card-2-description-2": "与由公司控制的中心化稳定币不同,DAI 由去中心化自治组织治理,这使其具备无需信任中介、由社区驱动的特性。", + "page-10-year-innovation-card-3-title": "CryptoKitties与 NFT 边境领域", + "page-10-year-innovation-card-3-date": "2017年11月", + "page-10-year-innovation-card-3-description-1": "CryptoKitties让数字所有权成为现实。这款早期的 NFT 游戏展示了区块链如何赋能新型的线上表达、收藏与文化形态。", + "page-10-year-innovation-card-3-description-2": "它证明了以太坊的应用范围不仅限于金融领域,还能拓展至游戏、艺术和数字身份等领域,由此开启了全新的创意可能。", + "page-10-year-innovation-card-4-title": "DeFi的夏天", + "page-10-year-innovation-card-4-date": "2020年6月", + "page-10-year-innovation-card-4-description-1": "DeFi的爆发式增长重新定义了全球对金融的认知。借贷、交易和收益生成等协议获得了巨大发展动能,彰显了开放且可组合的金融基础设施的力量。", + "page-10-year-innovation-card-4-description-2": "这一时期推动了数十亿美元的价值进入链上,并确立了以太坊作为去中心化金融核心阵地的地位。", + "page-10-year-innovation-card-5-title": "合并更新", + "page-10-year-innovation-card-5-date": "2022年9月15日", + "page-10-year-innovation-card-5-description-1": "这是以太坊迄今为止最重大的变革。该网络无缝从能源密集型的工作量证明机制过渡到了权益证明机制。由于以太坊上承载着数十亿美元的价值,这场变革被形容为‘在飞行中更换飞机引擎’。", + "page-10-year-innovation-card-5-description-2": "‘合并’将以太坊的能耗降低了 99.95%,增强了网络安全性,并为未来的扩容升级奠定了基础。", + "page-10-year-innovation-card-6-title": "以太坊现货 ETF", + "page-10-year-innovation-card-6-date": "2024年5月23日", + "page-10-year-innovation-card-6-description-1": "华尔街拥抱以太坊。以太坊现货 ETF 的推出,为全球领先的智能合约平台带来了机构资金和监管层面的合法性。", + "page-10-year-innovation-card-6-description-2": "这一批准标志着 代币化的现实资产得到了更广泛的认可,目前主要金融机构正基于以太坊将从房地产到国债的各类资产上链。", + "page-10-year-adoption-card-1-title": "去中心化的十年", + "page-10-year-adoption-card-1-description": "这个最初只是专业化的生态系统,如今已覆盖80 多个国家,拥有87 万名验证者、13,600 个物理节点以及遍布各大洲的数百万用户。", + "page-10-year-adoption-card-1-link-text": "查看以太坊数据", + "page-10-year-adoption-card-2-title": "十年间,16 次升级,零停机时间。", + "page-10-year-adoption-card-2-description": "以太坊在持续演进的同时,保持了完美的运行时间,区块链从未下线。", + "page-10-year-adoption-card-2-link-text": "查看路线图", + "page-10-year-adoption-card-3-title": "稳定币市值达 1230 亿美元", + "page-10-year-adoption-card-3-description": "截至 2025 年第二季度,以太坊 在主网上托管的稳定币规模超过 1230 亿美元,占据全球稳定币市场 50% 以上的份额 ", + "page-10-year-adoption-card-3-link-text": "关于稳定币的更多信息", + "page-10-year-adoption-card-4-title": "DeFi领域托管资金达 750 亿美元", + "page-10-year-adoption-card-4-description": "截至 2025 年第二季度,以太坊生态系统的去中心化金融领域托管资金超过 750 亿美元", + "page-10-year-adoption-card-4-link-text": "关于去中心化金融的更多信息", + "page-10-year-adoption-card-5-title": "每年 0.01 太瓦时", + "page-10-year-adoption-card-5-description": "合并’之后,以太坊的能耗大幅下降至每年仅 0.01 太瓦时,相比峰值时的 93.95 太瓦时显著降低。\n ", + "page-10-year-adoption-card-5-link-text": "更多关于以太坊能源消耗的信息", + "page-10-year-adoption-card-6-title": "每秒超 250 笔交易", + "page-10-year-adoption-card-6-description": "自启动以来,以太坊的吞吐量已大幅提升,目前以太坊生态系统每秒可处理超过 250 笔交易。", + "page-10-year-adoption-card-6-link-text": "更多内容参见二层网络", + "page-10-year-torch-title": "以太坊火炬", + "page-10-year-torch-description": "庆祝以太坊十周年的独特 NFT。火炬在社区成员之间传递,象征着定义以太坊的协作与去中心化精神。", + "page-10-year-torch-current-holder": "当前火炬持有者", + "page-10-year-torch-no-holder": "当前无持有者", + "page-10-year-torch-history-title": "火炬持有者历史", + "page-10-year-torch-no-history": "无可用的转账历史记录", + "page-10-year-torch-from": "From", + "page-10-year-torch-to": "To", + "page-10-year-torch-view-tx": "查看交易", + "page-10-year-livestream-title": "加入直播流", + "page-10-year-livestream-video-title": "以太坊 10 周年直播流", + "page-10-year-torch-nft-intro": "为了纪念这一历史性里程碑,我们推出了以太坊火炬 NFT——一款体现去中心化和社区精神的 NFT,这一精神定义了以太坊的前十年。", + "page-10-year-torch-nft-description": "就像在社区之间传递的仪式火焰,以太坊火炬将在整个全球以太坊生态系统中传递。这个特殊的 NFT 将在精心挑选的社区成员、开发者和建设者的钱包之间传递,这些人在过去十年中共同塑造了以太坊的故事。", + "page-10-year-torch-one-of-kind-title": "独家:", + "page-10-year-torch-one-of-kind-description": "仅存在一个以太坊火炬 NFT ,这使得每一个持有者都成为以太坊传统的临时守护者", + "page-10-year-torch-time-limited-title": "限时托管:", + "page-10-year-torch-time-limited-description": "每一个持有者在传递给下一个守护者前可以持有火炬 24 小时。在 7 月 30 日火炬 NFT 将被销毁,以庆祝周年庆。", + "page-10-year-mint-card-title": "铸造此刻", + "page-10-year-mint-card-description": "用免费且限时领取的 10 周年庆典 NFT 来庆祝去中心化的十年。在时间流尽之前铸造你自己的吧。", + "page-10-year-mint-card-ended-title": "领取时段已过", + "page-10-year-mint-card-ended-description": "感谢大家参与庆典", + "page-10-year-video-aria-label": "10 周年庆典视频", + "page-10-year-nft-link-label": "在 OpenSea 上查看以太坊十周年 NFT", + "page-10-year-terms-and-conditions": "条款及条件" +} From 11c66dfc430a3a5b7ee20cfe474aa487b53c1db8 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:40 -0800 Subject: [PATCH 029/581] update(i18n): src/intl/zh/page-upgrades-index.json --- src/intl/zh/page-upgrades-index.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/intl/zh/page-upgrades-index.json b/src/intl/zh/page-upgrades-index.json index 57503926d2c..ceb14987a5d 100644 --- a/src/intl/zh/page-upgrades-index.json +++ b/src/intl/zh/page-upgrades-index.json @@ -126,7 +126,7 @@ "page-upgrades-question-9-answer-3": "如果你有技术专长,可以帮忙查找新客户端的漏洞。", "page-upgrades-question-9-answer-4": "你可以在 ethresear.ch 上和以太坊研究人员进行各种技术方面的讨论。", "page-upgrades-question-9-desc": "你不需要成为技术专家来为以太坊作出贡献。社区需要各种技能的同路人贡献自己的力量。", - "page-upgrades-question-9-stake-eth": "质押ETH", + "page-upgrades-question-9-stake-eth": "质押以太币", "page-upgrades-question-9-title": "我如何为以太坊升级做贡献?", "page-upgrades-question-9-more": "寻找更多常规方式来参与以太坊的工作", "page-upgrades-question-10-title": "什么是“以太坊 2 阶段”?", @@ -182,7 +182,7 @@ "page-upgrades-what-happened-to-eth2-3-1": "“以太坊 1”现在是处理交易和执行的“执行层”。", "page-upgrades-what-happened-to-eth2-3-2": "“以太坊 2”现在是处理权益证明共识的“共识层”。", "page-upgrades-what-happened-to-eth2-4": "这些术语的更新仅会改变命名约定;不会改变以太坊的目标及路线图。", - "page-upgrades-what-happened-to-eth2-5": "了解有关“以太坊 2”重命名的更多信息", + "page-upgrades-what-happened-to-eth2-5": "了解关于“以太坊 2”重命名的更多信息", "page-upgrades-why-cant-we-just-use-eth2-title": "使用以太坊 2 就可以了,但为什么不呢?", "page-upgrades-why-cant-we-just-use-eth2-mental-models-title": "心理模型", "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "以太坊 2 名称的一个主要问题是为以太坊新用户建立了一种破碎的心理模型。他们会凭直觉认为以太坊 1 在前,以太坊 2 在后。或者以太坊 2 问世后,以太坊 1 就不复存在了。但这两种想法都不对。弃用术语“以太坊 2”,将来的用户就不会有这种心理模型的困扰。", @@ -201,8 +201,8 @@ "page-upgrades-whats-new": "以太坊下一步要做什么?", "page-upgrades-security-link": "更多关于安全和预防诈骗的信息", "page-staking-deposit-contract-staking-more-link": "关于质押的更多信息", - "docs-nav-proof-of-stake": "权益证明", - "docs-nav-proof-of-work": "工作量证明", + "docs-nav-proof-of-stake": "权益证明。", + "docs-nav-proof-of-work": "工作量证明。", "page-upgrades-get-involved-ethresearch-1": "分片", "page-upgrades-get-involved-ethresearch-2": "合并" } From da0933a29b42f03b80f5e6892238a7e2875ec1f6 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:42 -0800 Subject: [PATCH 030/581] update(i18n): src/intl/zh/page-ethereum-vs-bitcoin.json --- src/intl/zh/page-ethereum-vs-bitcoin.json | 101 ++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/intl/zh/page-ethereum-vs-bitcoin.json diff --git a/src/intl/zh/page-ethereum-vs-bitcoin.json b/src/intl/zh/page-ethereum-vs-bitcoin.json new file mode 100644 index 00000000000..1bccb1e189e --- /dev/null +++ b/src/intl/zh/page-ethereum-vs-bitcoin.json @@ -0,0 +1,101 @@ +{ + "page-ethereum-vs-bitcoin-meta-title": "以太坊与比特币:有什么区别? | ethereum.org", + "page-ethereum-vs-bitcoin-meta-description": "了解比特币和以太坊之间的区别,包括用例、网络性能、安全性、代币经济学、去中心化程度等。", + "page-ethereum-vs-bitcoin-twitter-meta-description": "了解比特币和以太坊之间的区别,包括用例、网络性能、代币经济学等。", + "page-ethereum-vs-bitcoin-title": "以太坊与比特币:有什么区别?", + "page-ethereum-vs-bitcoin-description-1": "比特币和以太坊是两个最著名的去中心化区块链网络,但它们的用途却大相径庭。", + "page-ethereum-vs-bitcoin-section-1": "比特币(大写 B)是为一种名为比特币(小写 b)的数字货币而设计的区块链。以太坊旨在成为一个去中心化的应用程序和资产平台,由其原生加密货币以太币 (ETH) 提供支持。", + "page-ethereum-vs-bitcoin-section-2": "两者都使用区块链技术,都是开源的,都由全球社区维护,但其目标和功能各不相同。在本指南中,我们将逐一介绍每个网络是什么、它们有何共同点,以及它们在技术、文化和未来前景等方面的不同之处。", + "page-ethereum-vs-bitcoin-bitcoin-section-title": "比特币简介", + "page-ethereum-vs-bitcoin-bitcoin-section-1": "比特币是一个去中心化的数字货币网络。它由一个名为中本聪 (Satoshi Nakamoto) 的匿名实体在 2008 年金融危机后不久的 2009 年创建。其理念是让比特币成为一个点对点电子现金系统。", + "page-ethereum-vs-bitcoin-bitcoin-section-2": "比特币允许任何人在互联网上发送和接收比特币,而无需依赖银行等中心化机构。所有交易都记录在称为区块链的公共账本上。", + "page-ethereum-vs-bitcoin-bitcoin-section-3": "比特币使用工作量证明来保护其网络安全。世界各地的计算机竞相解决加密难题,从而添加新区块。这些专用计算机被称为矿工,它们通过“挖出”新区块获得比特币作为区块奖励。", + "page-ethereum-vs-bitcoin-bitcoin-section-4": "比特币的最大供应量固定为 2100 万枚。这一设计选择是比特币通常被称为数字黄金的一个关键原因。", + "page-ethereum-vs-bitcoin-ethereum-section-title": "以太坊简介", + "page-ethereum-vs-bitcoin-ethereum-section-1": "与比特币一样,以太坊也是一个去中心化区块链网络,但它旨在做的不仅仅是记录支付。以太坊由一位名叫 Vitalik Buterin 的软件开发者及其联合创始人于 2015 年推出,旨在成为一个智能合约和去中心化应用程序平台。", + "page-ethereum-vs-bitcoin-ethereum-section-2": "以太坊让任何人都可以像比特币一样发送和接收价值,但它也充当任何人都可以用于应用程序的平台。以太坊网络运行于数千个节点之上,不受任何单一实体的控制。", + "page-ethereum-vs-bitcoin-ethereum-section-3": "任何人都可以创建应用程序并将其部署到以太坊。这些程序被称为智能合约,它们是以太坊的核心创新。", + "page-ethereum-vs-bitcoin-ethereum-section-4": "智能合约一旦部署,在与之交互时就会确定性地运行。这使得构建借贷、交易、游戏和数字收藏品等应用程序成为可能,这些应用程序可以为全球数百万用户全天候运行。", + "page-ethereum-vs-bitcoin-ethereum-section-5": "就像比特币用于支付比特币网络上的交易费一样,以太坊的原生货币以太币也用于支付交易费、发布和使用智能合约以及保护网络安全。以太币既是运行程序的燃料,也是一种价值存储手段。", + "page-ethereum-vs-bitcoin-ethereum-section-6": "了解更多关于以太坊及其运作方式的信息", + "page-ethereum-vs-bitcoin-differences-section-title": "主要区别", + "page-ethereum-vs-bitcoin-differences-section-1": "比特币和以太坊都使用区块链技术来维护去中心化网络,但它们在设计、用途和功能上有所不同。", + "page-ethereum-vs-bitcoin-differences-table-area": "领域", + "page-ethereum-vs-bitcoin-differences-table-bitcoin": "比特币", + "page-ethereum-vs-bitcoin-differences-table-ethereum": "以太坊(Ethereum)", + "page-ethereum-vs-bitcoin-differences-table-row-1-1": "主要目的", + "page-ethereum-vs-bitcoin-differences-table-row-1-2": "点对点数字货币", + "page-ethereum-vs-bitcoin-differences-table-row-1-3": "应用程序和数字经济平台", + "page-ethereum-vs-bitcoin-differences-table-row-2-1": "智能合约", + "page-ethereum-vs-bitcoin-differences-table-row-2-2": "不支持", + "page-ethereum-vs-bitcoin-differences-table-row-2-3": "核心功能", + "page-ethereum-vs-bitcoin-differences-table-row-3-1": "供应", + "page-ethereum-vs-bitcoin-differences-table-row-3-2": "比特币的发行由原始且未更改的协议规定,每个区块以固定/预定的速率发行,最终固定上限为 2100 万枚。", + "page-ethereum-vs-bitcoin-differences-table-row-3-3": "每个区块销毁的以太币数量与活动/需求成正比,每个时段发行的以太币数量与质押的 ETH 总量成正比。没有固定上限,但发行率受限于质押的 ETH 总量。", + "page-ethereum-vs-bitcoin-differences-table-row-4-1": "共识机制", + "page-ethereum-vs-bitcoin-differences-table-row-4-2": "工作量证明。", + "page-ethereum-vs-bitcoin-differences-table-row-4-3": "权益证明。", + "page-ethereum-vs-bitcoin-differences-table-row-5-1": "速度", + "page-ethereum-vs-bitcoin-differences-table-row-5-2": "大多数人认为,在六个区块(平均 60 分钟)之后,交易便不可逆转", + "page-ethereum-vs-bitcoin-differences-table-row-5-3": "大约 15 分钟即可达到确定性", + "page-ethereum-vs-bitcoin-differences-table-row-6-1": "能源使用", + "page-ethereum-vs-bitcoin-differences-table-row-6-2": "高", + "page-ethereum-vs-bitcoin-differences-table-row-6-3": "低", + "page-ethereum-vs-bitcoin-differences-table-row-7-1": "治理", + "page-ethereum-vs-bitcoin-differences-table-row-7-2": "保守,发展缓慢", + "page-ethereum-vs-bitcoin-differences-table-row-7-3": "灵活,社区驱动", + "page-ethereum-vs-bitcoin-differences-table-row-8-1": "开发者生态系统", + "page-ethereum-vs-bitcoin-differences-table-row-8-2": "较小", + "page-ethereum-vs-bitcoin-differences-table-row-8-3": "庞大而活跃", + "page-ethereum-vs-bitcoin-differences-table-row-9-1": "升级", + "page-ethereum-vs-bitcoin-differences-table-row-9-2": "罕见", + "page-ethereum-vs-bitcoin-differences-table-row-9-3": "频繁和迭代", + "page-ethereum-vs-bitcoin-purpose-title": "比特币与以太坊的用途", + "page-ethereum-vs-bitcoin-purpose-1": "比特币诞生于 2009 年全球金融危机之后。其目标是提供一种无需银行或政府参与的点对点货币形式。它的设计很简单。该网络旨在在没有中间人的情况下将价值从一个人转移到另一个人。这种狭隘的关注点帮助它成为众所周知的数字黄金,一种稀缺而持久的价值存储方式,也可以用作交易媒介。", + "page-ethereum-vs-bitcoin-purpose-2": "以太坊于 2015 年推出,其愿景更为宏大。其创建者希望利用区块链的安全性和去中心化特性,并使其可编程。以太坊不仅仅局限于支付,还允许任何人编写和发布名为智能合约的自执行程序。这为全新类别的应用程序打开了大门,从去中心化金融 (DeFi)稳定币非同质化代币 (NFT)游戏去中心化社交媒体。", + "page-ethereum-vs-bitcoin-purpose-3": "技术设计反映了这些目的。比特币的脚本语言是有限的,这降低了复杂性并有助于保持网络安全。以太坊的编程语言更具表现力,使其能够存储和管理更复杂的状态以及应用程序之间的交互。这种灵活性是一个优势,但也意味着网络发展得更快,会定期升级并推出新功能。", + "page-ethereum-vs-bitcoin-purpose-4": "两者都在更广泛的数字经济中扮演着不同的角色。比特币专注于成为一种稳定和去中心化的价值存储。以太坊旨在成为去中心化应用程序和可编程资产的全球结算层。", + "page-ethereum-vs-bitcoin-usecases-and-adoption-title": "用例和采用情况", + "page-ethereum-vs-bitcoin-usecases-and-adoption-1": "比特币通常用作价值存储。许多投资者将其视为对冲通货膨胀或经济不稳定的工具。在一些国家,它被用作替代货币,或作为人们在传统银行系统之外储蓄的一种方式。", + "page-ethereum-vs-bitcoin-usecases-and-adoption-2": "以太币也可用作价值存储,但其主要作用是为广泛的应用程序和资产生态系统提供动力。开发者可以使用以太坊来创建新协议、发行代币、运行去中心化交易所、铸造 NFT、构建游戏以及开发无需中心化控制即可运行的社交平台。", + "page-ethereum-vs-bitcoin-usecases-and-adoption-3": "以太坊支持数以千计的去中心化应用程序,用于新型金融、众筹和数字所有权。一些用例甚至连接了两个网络。例如,比特币可以被“封装”并在以太坊上使用,用于 DeFi 中的借贷和交易等活动。", + "page-ethereum-vs-bitcoin-usecases-and-adoption-4": "机构采用情况反映了这些差异。加密货币比特币被广泛用作长期价值存储,而以太坊被视为去中心化基础设施。其可编程性吸引了金融科技平台和支付提供商。", + "page-ethereum-vs-bitcoin-usecases-and-adoption-5": "了解更多以太坊的用途", + "page-ethereum-vs-bitcoin-monetary-policy-title": "货币政策", + "page-ethereum-vs-bitcoin-monetary-policy-1": "比特币的供应量上限为 2100 万枚。这一硬性限制由协议强制执行,也是比特币被比作黄金的原因之一。新比特币通过挖矿奖励进入流通,每 210,000 个区块奖励减半,这一过程大约需要 4 年,被称为减半事件。奖励从 2009 年的每区块 50 比特币开始,2012 年降至 25,2016 年降至 12.5,以此类推。按照这个速度,最后一枚比特币预计将在 2140 年左右被挖出。", + "page-ethereum-vs-bitcoin-monetary-policy-2": "比特币的挖矿奖励和交易费用于支付网络费用并确保其安全。然而,随着区块奖励减半,网络越来越依赖交易费来维持自身。目前,网络费用只占网络收入的一小部分,<5%,这意味着随着比特币网络发行量趋于 0,网络的长期安全性可能面临风险。", + "page-ethereum-vs-bitcoin-monetary-policy-3": "以太坊没有固定的供应上限。相反,其发行量由协议规则决定,最近的升级引入了可以随时间推移减少供应量的机制。最引人注目的是 EIP-1559 升级,它会销毁一部分交易费。当网络活动频繁时,销毁的 ETH 数量可能超过发行量,从而使供应在这些时期出现通货紧缩。", + "page-ethereum-vs-bitcoin-monetary-policy-4": "以太坊的货币方法保证了永久的安全预算,交易费和区块奖励为网络提供了安全预算。", + "page-ethereum-vs-bitcoin-developer-ecosystem-title": "开发者生态系统", + "page-ethereum-vs-bitcoin-developer-ecosystem-1": "以太坊拥有最大的区块链开发者社区之一。在以太坊上进行构建,您可以访问各种工具、框架、资助黑客松。以太坊虚拟机 (EVM) 是以太坊的运行时环境,现已成为通用标准,许多其他区块链都使用它来确保兼容性。", + "page-ethereum-vs-bitcoin-developer-ecosystem-2": "像 ERC-20 和 ERC-721 这样的代币标准已成为更广泛的区块链经济的基础。许多二层网络和其他区块链都使用 EVM,这样应用程序、钱包和智能合约代码就可以在不同区块链之间以最小的改动使用。", + "page-ethereum-vs-bitcoin-developer-ecosystem-3": "比特币的开发者社区规模较小,也更为专注。大多数活动都集中在维护和改进核心协议,以及开发像闪电网络这样的二层解决方案,以实现更快、更便宜的支付。", + "page-ethereum-vs-bitcoin-developer-ecosystem-4": "了解更多关于以太坊开发者资源的信息", + "page-ethereum-vs-bitcoin-security-and-consensus-title": "安全与共识", + "page-ethereum-vs-bitcoin-security-and-consensus-1": "比特币和以太坊都由庞大的、由独立节点组成的分布式网络来保障安全,但它们使用不同的方法来就网络状态达成一致。", + "page-ethereum-vs-bitcoin-security-and-consensus-2": "比特币使用一种称为工作量证明的系统。被称为矿工的计算机竞相解决加密难题。第一个解决难题的矿工可以将下一个交易区块添加到区块链中,并获得比特币奖励。这种方法为比特币带来了所谓的概率确定性,这意味着只有在交易之上添加了更多区块之后,交易才被认为是高度安全的。对于比特币来说,这通常需要大约六次确认,即约一小时。", + "page-ethereum-vs-bitcoin-security-and-consensus-3": "以太坊使用权益证明。在此模型中,验证者锁定或质押 ETH,以获得被选中提议和确认新区块的机会。选择是随机的,但被选中的概率随着质押的 ETH 数量的增加而增加。行为不诚实的验证者有失去其质押品的风险。这使得以太坊能够实现经济确定性,即已确认的区块极难逆转,通常在约 15 分钟内即可实现。以太坊还使用检查点,一旦足够多的验证者达成一致,就会将区块标记为不可逆转。", + "page-ethereum-vs-bitcoin-security-and-consensus-4": "了解有关以太坊共识机制的更多信息", + "page-ethereum-vs-bitcoin-underlying-technology-title": "底层技术", + "page-ethereum-vs-bitcoin-underlying-technology-1": "比特币使用所谓的未花费交易输出模型,即 UTXO。在该系统中,区块链不跟踪账户余额。相反,它记录了之前交易中尚未花费的输出。当你花费比特币时,你会将这些输出用作新交易的输入,并在此过程中创建新的输出。", + "page-ethereum-vs-bitcoin-underlying-technology-2": "你可以把这想象成使用现金。如果你有两张五美元的钞票,想花掉七美元,你递出两张钞票,收到三美元的找零。比特币记录的是钞票和找零,而不是你的总余额。", + "page-ethereum-vs-bitcoin-underlying-technology-3": "以太坊使用基于账户的模型。它不像跟踪单个输出,而是像银行账户一样记录账户余额。这种方法使得管理智能合约和复杂逻辑变得更加容易,因为账户可以像程序一样存储数据并相互交互。", + "page-ethereum-vs-bitcoin-underlying-technology-4": "每种模型都有其权衡之处。UTXO 可以提供更高的隐私性,并使跟踪单个代币变得更容易。基于账户的系统更直接地用于构建应用程序。", + "page-ethereum-vs-bitcoin-underlying-technology-5": "在以太坊开发者文档中阅读更多内容", + "page-ethereum-vs-bitcoin-decentralization-title": "去中心化。", + "page-ethereum-vs-bitcoin-decentralization-1": "比特币和以太坊都旨在实现去中心化,但它们衡量和实现去中心化的方式不同。", + "page-ethereum-vs-bitcoin-decentralization-2": "比特币的去中心化得益于其简单的技术设计、长期稳定性和节点的广泛分布。其低资源要求使人们更容易在家中运行完整节点,这有助于维护网络的独立性和抗审查性。", + "page-ethereum-vs-bitcoin-decentralization-3": "以太坊也拥有一个庞大且不断增长的节点网络。它非常重视客户端多样性,这意味着软件的多个版本由独立团队维护。这减少了对任何单个客户端的依赖,并有助于防范可能影响网络的错误或故障。", + "page-ethereum-vs-bitcoin-decentralization-4": "以太坊有更广泛的参与者参与质押、升级和治理讨论等活动,但两个网络都旨在保持开放和弹性。比特币保持节点要求不变,依赖于较少的软件客户端。以太坊鼓励不同的贡献者,每个贡献者都带来自己的观点。", + "page-ethereum-vs-bitcoin-environmental-impact-title": "环境影响", + "page-ethereum-vs-bitcoin-environmental-impact-1": "以太坊历史上最重要的变化之一是 2022 年从工作量证明转向权益证明。这一被称为“合并”的过渡将网络的能源消耗减少了 99% 以上。", + "page-ethereum-vs-bitcoin-environmental-impact-2": "在权益证明下,以太坊不再依赖能源密集型挖矿。相反,验证者是随机选择的,选择的可能性随着他们质押的 ETH 数量的增加而增加。这一转变使以太坊成为能效更高的区块链网络之一。", + "page-ethereum-vs-bitcoin-environmental-impact-3": "比特币继续使用工作量证明,由于矿工竞相解决加密难题,这需要大量电力。其中一些能源来自可再生能源,比特币社区正在就如何提高可持续性进行持续讨论。", + "page-ethereum-vs-bitcoin-environmental-impact-4": "能源使用的差异已成为两个网络之间比较的一个重要方面。在优先考虑环境影响的背景下,以太坊较低的能源足迹使其更具吸引力。", + "page-ethereum-vs-bitcoin-environmental-impact-5": "阅读关于以太坊能源使用的完整报告", + "page-ethereum-vs-bitcoin-future-outlook-title": "未来展望", + "page-ethereum-vs-bitcoin-future-outlook-1": "比特币正日益被用作价值存储和储备资产。它不太可能发生重大变化,而这种稳定性正是其吸引力的一部分。", + "page-ethereum-vs-bitcoin-future-outlook-2": "以太坊正将自己定位为新数字经济中的应用平台。随着二层网络的发展和持续升级,它的目标是支持全球规模的应用程序、基础设施和资产。", + "page-ethereum-vs-bitcoin-future-outlook-3": "对于许多用户来说,这两个网络并非直接竞争关系。它们服务于不同的目的,可以在数字资产的多元化方法中相互补充。", + "page-ethereum-vs-bitcoin-future-outlook-4": "了解更多关于以太坊路线图的信息" +} \ No newline at end of file From ecf3e470e921e383456926daa9ff13d90dee201e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:45 -0800 Subject: [PATCH 031/581] update(i18n): src/intl/zh/page-upgrades-get-involved.json --- src/intl/zh/page-upgrades-get-involved.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/intl/zh/page-upgrades-get-involved.json b/src/intl/zh/page-upgrades-get-involved.json index 5bcff659e62..2b4166d5e85 100644 --- a/src/intl/zh/page-upgrades-get-involved.json +++ b/src/intl/zh/page-upgrades-get-involved.json @@ -28,12 +28,12 @@ "page-upgrades-get-involved-run-clients-execution-desc": "这些客户端曾称为“以太坊 1”客户端,但这个词正在被弃用,代之以“执行层客户端”。", "page-upgrades-get-involved-run-clients-consensus": "共识层客户端", "page-upgrades-get-involved-run-clients-consensus-desc": "这些客户端曾称为“以太坊 2”客户端,但这个词正在被弃用,代之以“共识层客户端”。", - "page-upgrades-get-involved-stake": "质押你的以太币", + "page-upgrades-get-involved-stake": "质押您的以太币", "page-upgrades-get-involved-stake-desc": "你现在可以质押你的以太币,帮助保证信标链的安全了。", - "page-upgrades-get-involved-stake-eth": "质押ETH", + "page-upgrades-get-involved-stake-eth": "质押以太币", "page-upgrades-get-involved-subtitle": "下面是你能帮助推动以太坊发展以及未来升级相关工作的所有方法:", "page-upgrades-get-involved-title-1": "运行客户端", - "page-upgrades-get-involved-title-2": "质押你的以太币", + "page-upgrades-get-involved-title-2": "质押您的以太币", "page-upgrades-get-involved-title-3": "查找漏洞", "page-upgrades-get-involved-written-c-sharp": "用 C# 语言编写", "page-upgrades-get-involved-written-go": "用 Go 语言编写", From f5543fdaa9c7f12966c4a364a190e2a8baa6caa7 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:48 -0800 Subject: [PATCH 032/581] update(i18n): src/intl/zh/page-staking.json --- src/intl/zh/page-staking.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/intl/zh/page-staking.json b/src/intl/zh/page-staking.json index 96e3892980d..328d6c47b51 100644 --- a/src/intl/zh/page-staking.json +++ b/src/intl/zh/page-staking.json @@ -14,7 +14,7 @@ "comp-withdrawal-credentials-upgraded-2": "关联执行地址的提款凭证:", "comp-withdrawal-credentials-not-upgraded-1": "此 {network} 验证者需要升级。", "comp-withdrawal-credentials-not-upgraded-2": "如何升级的说明目前可以在质押启动板上找到。", - "comp-withdrawal-credentials-verify": "在 {network} 上进行验证", + "comp-withdrawal-credentials-verify": "在 {network} 上验证", "page-staking-withdrawals-when": "已上线!", "page-staking-image-alt": "插图:Rhino Mascot 的质押启动板。", "page-staking-benefits-1-title": "赚取奖励", @@ -49,7 +49,7 @@ "page-staking-guide-title-somer-esat": "Somer Esat", "page-staking-guide-title-rocket-pool": "Rocket Pool 节点运营商", "page-staking-guide-title-stakewise": "StakeWise 节点运营商", - "page-staking-guide-title-lido-csm":"Lido CSM 节点运营商", + "page-staking-guide-title-lido-csm": "Lido CSM 节点运营商", "page-staking-guide-description-linux": "Linux (CLI)", "page-staking-guide-description-mac-linux": "Linux、macOS (CLI)", "page-staking-guide-description-mac-linux-windows": "Linux、Windows、MacOS(命令行界面)", @@ -151,10 +151,10 @@ "page-staking-how-solo-works-item-3": "同步一个共识层客户端", "page-staking-how-solo-works-item-4": "生成你的密钥并加载到你的验证者客户端", "page-staking-how-solo-works-item-5": "监视和维护你的节点", - "page-staking-launchpad-widget-start": "开始在 {network} 上质押", "page-staking-launchpad-widget-mainnet-label": "主网", + "page-staking-launchpad-widget-start": "在 {network} 上开始质押", "page-staking-launchpad-widget-span": "选择网络", - "page-staking-launchpad-widget-p1": "独立验证者在冒险投入资金之前,应该在 Hoodi 测试网上测试其设置和运营技能。请记住选择非主流客户端非常重要,因为它能提升网络的安全性并减少你的风险。", + "page-staking-launchpad-widget-p1": "独立验证者在冒险投入资金之前,应该在 {{network}} 测试网上测试其设置和运营技能。请记住选择非主流客户端非常重要,因为它能提升网络的安全性并减少你的风险。", "page-staking-launchpad-widget-p2": "如果你熟悉相关技能,你可以独自使用 Staking Launchpad,通过命令行来设置所需要的一切。", "page-staking-launchpad-widget-p3": "为了让事情变得更简单,请查看下面的一些工具和指南,它们可以帮助你使用 Staking Launchpad 轻松设置客户端。", "page-staking-launchpad-widget-link": "软件工具和指南", @@ -165,7 +165,7 @@ "page-staking-stats-box-metric-1": "以太币质押总数", "page-staking-stats-box-metric-2": "验证者总数", "page-staking-stats-box-metric-3": "当前年化利率", - "page-staking-stats-box-metric-1-tooltip": "信标链上质押的以太币总数,不包括超过 32个以太币的余额", + "page-staking-stats-box-metric-1-tooltip": "信标链上符合条件的已质押 ETH 总和", "page-staking-stats-box-metric-2-tooltip": "信标链上当前已激活验证者帐户的数量", "page-staking-stats-box-metric-3-tooltip": "过去 24 小时内每个验证者的平均年化经济收益", "page-staking-section-comparison-subtitle": "没有一个解决方案可以适用所有质押,每一个都是独一无二的。这里我们将不同质押方法下会产生的风险、奖励和要求进行对比。", @@ -202,7 +202,7 @@ "page-staking-faq-2-answer": "验证者能为网络提交和证明区块。为了防止不诚实行为,用户必须将他们的资金进行质押。这让协议可以惩罚恶意行为者。质押是让你保持诚实的一种方式,因为你的行为会产生财务后果。", "page-staking-faq-3-question": "我可以购买“以太坊 2”吗?", "page-staking-faq-3-answer-p1": "该协议没有原生的“以太坊 2”代币,因为当以太坊过渡到权益证明时,原生代币以太币 (ETH) 没有改变。", - "page-staking-faq-3-answer-p2": "有一些衍生代币/代码可以代表质押的以太币(即来自 Rocket Pool 的 rETH、来自 Lido 的 stETH、来自 Coinbase 的 ETH2)。详细了解质押池", + "page-staking-faq-3-answer-p2": "有一些衍生代币/代码可以代表已质押的 ETH(即来自 Rocket Pool 的 rETH、来自 Lido 的 stETH、来自 Coinbase 的 ETH2)。详细了解质押池。", "page-staking-faq-4-question": "质押已经上线了吗?", "page-staking-faq-4-answer-p1": "是的。质押自 2020 年 12 月 1 日起上线。", "page-staking-faq-4-answer-p2": "这意味着质押目前已上线,用户可以存入以太币,运行验证者客户端,从而开始赚取奖励。", From 5bfb8a6522ffdf92d033b83eb6718492b084bf20 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:51 -0800 Subject: [PATCH 033/581] update(i18n): src/intl/zh/page-ethereum-history-founder-and-ownership.json --- ...thereum-history-founder-and-ownership.json | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/intl/zh/page-ethereum-history-founder-and-ownership.json diff --git a/src/intl/zh/page-ethereum-history-founder-and-ownership.json b/src/intl/zh/page-ethereum-history-founder-and-ownership.json new file mode 100644 index 00000000000..9e800c98bd4 --- /dev/null +++ b/src/intl/zh/page-ethereum-history-founder-and-ownership.json @@ -0,0 +1,65 @@ +{ + "page-ethereum-history-founder-and-ownership-meta-title": "以太坊的历史:创始人、发布和所有权 | ethereum.org", + "page-ethereum-history-founder-and-ownership-meta-description": "了解以太坊的历史,包括它的创建者、发布时间以及如今的控制者。", + "page-ethereum-history-founder-and-ownership-twitter-meta-description": "了解比特币和以太坊之间的区别,包括用例、网络性能、代币经济学等。", + "page-ethereum-history-founder-and-ownership-title": "以太坊的历史:创始人、发布和所有权", + "page-ethereum-history-founder-and-ownership-description-1": "以太坊由 Vitalik Buterin 于 2013 年创立。后来,又有几位联合创始人加入,包括 Gavin Wood 和 Joseph Lubin。以太坊网络于 2015 年 7 月 30 日正式启动,并挖出了第一个区块(创世区块)。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-description-1": "与传统组织不同,以太坊没有首席执行官、董事会或单一控制方。它是一个由社区管理的去中心化平台,并由非营利组织以太坊基金会提供支持。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum": "谁创立/共同创立了以太坊?", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-1": "以太坊由 Vitalik Buterin 创立,他在 2013 年末构思了这个想法。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-2": "Buterin 1994 年出生于俄罗斯,在加拿大长大,从小就表现出非凡的数学天赋。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-3": "他在 2011 年发现了比特币,并开始撰写有关比特币的文章,这让他于 2012 年与他人共同创办了 Bitcoin Magazine。这是最早专门介绍加密货币的刊物之一。作为早期比特币社区的一员,他亲眼目睹了比特币的潜力和局限。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-4": "2014 年,Vitalik 发布了以太坊白皮书,概述了一个超越比特币的平台,该平台创建的区块链不仅仅用于支付。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-5": "以太坊扩展了比特币的方法,基本上是说,与其制定围绕支持一种应用程序的规则,不如创建一个更通用的东西,让人们可以构建自己的应用程序,并且他们构建的任何应用程序的规则都可以在以太坊平台上执行和实现。", + "page-ethereum-history-founder-and-ownership-when-ethereum-when-did-ethereum-launch": "以太坊是什么时候发布的?", + "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now": "现在谁拥有并运行以太坊?", + "page-ethereum-history-founder-and-ownership-founder-of-ethereum": "以太坊创始人", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-6": "以太坊由 8 位个人共同创立,他们帮助以太坊得以问世。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-vitalik-buterin": "Vitalik Buterin:于 2013 年构思了以太坊,撰写了原始白皮书,并成为其首席远见者和倡导者,阐述了去中心化世界计算机的概念,并指导了该协议的技术和哲学方向。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-gavin-wood": "Gavin Wood:开发了 Solidity 编程语言并撰写了以太坊黄皮书,这是以太坊虚拟机(EVM)的技术指南。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-joseph-lubin": "Joseph Lubin:帮助资助了以太坊的早期阶段,后来创立了 ConsenSys,一家专注于构建基于以太坊的应用程序和基础设施的公司。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-jeffrey-wilcke": "Jeffrey Wilcke:创建了 Geth,这是最初也是使用最广泛的以太坊执行客户端,负责运行 EVM 和存储以太坊网络数据。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-mihai-alisie": "Mihai Alisie:与 Vitalik Buterin 共同创办了《比特币杂志》,并帮助在瑞士建立了以太坊基金会,担任副总裁,并为以太币的预售建立了法律框架。", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-anthony-di-lorio": "Anthony Di Lorio", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-amir-chetrit": "Amir Chetrit", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-charles-hoskinson": "Charles Hoskinson", + "page-ethereum-history-founder-and-ownership-who-founded-ethereum-launch-description-7": "如今,Vitalik Buterin 仍然积极参与以太坊的开发。Joseph Lubin 继续领导 ConsenSys。他的公司为以太坊生态系统开发了 MetaMaskInfura 等关键工具。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-1": "从 Vitalik 的最初想法到以太坊的正式发布,历时约 20 个月。以下是关键的里程碑:", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-2": "2013 年 11 月: Vitalik Buterin 分享了以太坊白皮书。其中描述了他对一个可以运行智能合约的区块链平台的愿景。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-3": "2014 年 1 月: Vitalik 在迈阿密的北美比特币会议上公开宣布以太坊的概念。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-4": "2014 年 7 月至 8 月:为了资助以太坊的开发,创始团队进行了一场公开的众筹活动。他们筹集了 31,000 BTC(当时价值约 1,800 万美元),以换取以太币(ETH)。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-5": "2015 年 4 月: Vitalik 和联合创始人推出了以太坊的奥林匹克测试网。这是主网启动前的最后测试阶段。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-6": "2015 年 7 月 30 日:创始团队通过挖出创世区块正式启动以太坊主网。这标志着以太坊网络的诞生。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-7": "2016 年 3 月 14 日:以太坊社区实施了“家园”,这是第一个计划中的升级。这标志着以太坊已准备好被主流采用。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-8": "在以太坊项目中,我们有这样一种观念,我们只有一次机会,只有一次成功的机会,所以我们必须把它做好。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-9": "以太坊联合创始人", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-10": "以太坊的推出标志着区块链技术的一个重要里程碑。它引入了智能合约,并为去中心化应用程序创建了一个平台。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-11": "你始终可以查看以太坊创世区块,它保留了以太坊首次问世的时刻。", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-12": "查看以太坊升级的完整列表", + "page-ethereum-history-founder-and-ownership-when-did-ethereum-launch-description-13": "查看未来的以太坊路线图", + "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-1": "以太坊最独特的方面之一是它的所有权结构,或者更准确地说,是它缺乏传统的所有权。与普通公司不同,以太坊:", + "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-2": "没有首席执行官或中央权威机构", + "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-3": "不受任何单一实体或组织的控制", + "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-4": "没有传统意义上的股东", + "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-5": "相反,以太坊作为一个去中心化网络运行。它由世界各地数千台独立的计算机(节点)维护。这种去中心化模式是以太坊设计和价值的核心。", + "page-ethereum-history-founder-and-ownership-who-owns-and-runs-ethereum-now-description-6": "几个关键团体帮助以太坊的持续发展和治理:", + "page-ethereum-history-founder-and-ownership-ethereum-foundation": "1. 以太坊基金会", + "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-1": "以太坊基金会是一个非营利组织,支持以太坊和相关技术。虽然很重要,但它并不控制网络。该基金会:", + "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-2": "管理资金以支持以太坊开发", + "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-3": "为在以太坊上构建的项目提供资助", + "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-4": "组织社区活动和教育倡议", + "page-ethereum-history-founder-and-ownership-ethereum-foundation-description-5": "协调研究工作", + "page-ethereum-history-founder-and-ownership-core-developers": "2. 核心开发者和研究人员", + "page-ethereum-history-founder-and-ownership-core-developers-description-1": "一个由开发者和研究人员组成的全球社区为以太坊的代码和设计做出了贡献。这些贡献者通过一个开放、公开的过程提出、讨论和实施改进。Vitalik Buterin 在社区中仍然受到尊重,但决策是通过团体协议而不是任何个人做出的。", + "page-ethereum-history-founder-and-ownership-eip": "3. 以太坊改进提案 (EIP)", + "page-ethereum-history-founder-and-ownership-eip-description-1": "以太坊社区通过以太坊改进提案 (EIP)向网络提出变更建议。这个开放的系统允许任何人提出改进建议。然后,这些想法将由社区讨论、完善并可能实施。", + "page-ethereum-history-founder-and-ownership-validators": "4. 节点运营商和验证者", + "page-ethereum-history-founder-and-ownership-validators-description-1": "自 2022 年 9 月以太坊转向权益证明以来,该网络由质押 ETH 并处理交易的验证者来保护。世界各地分布着大量验证者,他们将网络的控制权广泛分布。", + "page-ethereum-history-founder-and-ownership-validators-description-2": "这种去中心化模式限制了任何单一实体的控制,使以太坊能够抵制审查。这包括其最初的创始人。没有任何个人或组织可以自行更改以太坊的规则或关闭网络。", + "page-ethereum-history-founder-and-ownership-validators-description-3": "在以太坊上构建应用程序与在某些传统中心化平台上构建应用程序的核心区别在于这个核心思想:一旦您构建了应用程序,该应用程序就不需要依赖您或任何其他单一个人来继续存在。而且,该应用程序保证会根据指定的规则继续运行。", + "page-ethereum-history-founder-and-ownership-conclusion": "总结", + "page-ethereum-history-founder-and-ownership-conclusion-description-1": "从 2013 年 Vitalik Buterin 创建以太坊,到 2015 年发布,再到今天的发展,以太坊始终忠于其创始愿景。它仍然是一个去中心化、可信中立的平台,应用程序完全按照编程的方式运行。该网络及其上构建的应用程序没有停机、审查、欺诈或第三方干扰。", + "page-ethereum-history-founder-and-ownership-conclusion-description-2": "以太坊的故事随着每次更新和创新而不断展开。随着网络的发展,它体现了去中心化治理如何在没有传统公司结构的情况下推动技术进步。", + "page-ethereum-history-founder-and-ownership-conclusion-description-3": "以太坊已经从一份富有远见的白皮书转变为一个为数千个应用程序提供动力并创造数十亿美元价值的全球基础设施层。这证明了开放协作不仅可以重塑金融,还可以重塑所有权、治理和数字信任等基本概念。", + "page-ethereum-history-founder-and-ownership-conclusion-description-4": "了解有关以太坊治理流程的更多信息" +} From e8a84afa92ed121e3f493eec6a761b654f9e1d57 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:54 -0800 Subject: [PATCH 034/581] update(i18n): src/intl/zh/page-developers-learning-tools.json --- src/intl/zh/page-developers-learning-tools.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/intl/zh/page-developers-learning-tools.json b/src/intl/zh/page-developers-learning-tools.json index d5b458b650f..e7896e27436 100644 --- a/src/intl/zh/page-developers-learning-tools.json +++ b/src/intl/zh/page-developers-learning-tools.json @@ -2,7 +2,7 @@ "page-learning-tools-bloomtech-description": "BloomTech Web3 课程将向你传授符合雇佣要求的工程师技能。", "page-learning-tools-bloomtech-logo-alt": "BloomTech 标识", "page-learning-tools-bootcamps": "开发者训练营", - "page-learning-tools-bootcamps-desc": "付费在线课程,让你快速了解最新动态", + "page-learning-tools-bootcamps-desc": "免费或付费在线课程,助您快速上手。", "page-learning-tools-browse-docs": "浏览文档", "page-learning-tools-capture-the-ether-description": "Capture the Ether 是一款在破解智能合约的过程中学习其安全性的游戏。", "page-learning-tools-capture-the-ether-logo-alt": "Capture the Ether 徽标", @@ -58,5 +58,7 @@ "page-learning-tools-learnweb3-logo-alt": "LearnWeb3 徽标", "page-learning-tools-cyfrin-updraft-description": "学习所有技能水平的智能合约开发和安全审计。", "page-learning-tools-cyfrin-updraft-logo-alt": "Cyfrin Updraft 徽标", + "page-learning-tools-price-free": "免费", + "page-learning-tools-price-paid": "付费", "alt-eth-blocks": "积木被搭建成以太坊符号的图示" } From 9531f5dda929525cf0ab5e781c5759bb21090061 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:08:57 -0800 Subject: [PATCH 035/581] update(i18n): src/intl/zh/page-developers-local-environment.json --- src/intl/zh/page-developers-local-environment.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intl/zh/page-developers-local-environment.json b/src/intl/zh/page-developers-local-environment.json index d4aa44cdeca..f8fdc0b5edd 100644 --- a/src/intl/zh/page-developers-local-environment.json +++ b/src/intl/zh/page-developers-local-environment.json @@ -28,6 +28,6 @@ "page-local-environment-setup-subtitle": "如果你准备好开始建造,就选择你的堆栈。", "page-local-environment-setup-subtitle-2": "这里是你可以用来帮助你构建你的以太坊应用的工具和框架。", "page-local-environment-setup-title": "设置你的本地开发环境", - "page-local-environment-solidity-template-desc": "GitHub模板,用于为您的Solidity智能合约预先构建设置。包括Hardhat本地网络、Ethers钱包实现等。", + "page-local-environment-solidity-template-desc": "一个 GitHub 模板,用于为 Solidity 智能合约预构建设置。包括一个 Hardhat 本地网络,用于钱包实现的以太币等等。", "page-local-environment-solidity-template-logo-alt": "Solidity template徽标" } From 6ada371498f1497d5198980b6b1c2d4972ef6b32 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:00 -0800 Subject: [PATCH 036/581] update(i18n): src/intl/zh/page-what-is-ethereum.json --- src/intl/zh/page-what-is-ethereum.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/intl/zh/page-what-is-ethereum.json b/src/intl/zh/page-what-is-ethereum.json index 8f034937836..59566a0ca98 100644 --- a/src/intl/zh/page-what-is-ethereum.json +++ b/src/intl/zh/page-what-is-ethereum.json @@ -38,7 +38,7 @@ "page-what-is-ethereum-ether-learn-more": "了解更多关于以太币 (ETH) 的信息", "page-what-is-ethereum-how-title": "以太坊是如何运作的?", "page-what-is-ethereum-how-intro-1": "以太坊在 2015 年推出时,采用了一种名为工作量证明的系统。", - "page-what-is-ethereum-how-intro-2": "这种由比特币首创的机制,让所有计算机能够就资产归属达成共识。计算机会消耗大量能源去解一道复杂的数学难题。获胜者可以提议一个传入交易区块并获得新的以太币。", + "page-what-is-ethereum-how-intro-2": "这种由比特币首创的机制,是所有计算机就资产归属达成共识的方式。计算机会消耗大量能源来解一道复杂的数学难题。获胜者可以提议一个传入交易区块并获得新的 ETH。", "page-what-is-ethereum-how-intro-3": "2022 年,以太坊升级为一种称为权益证明的新机制,其能源效率比以前高出 99%。在这种机制下,验证者不再解数学难题,而是通过锁定其以太币作为保证金,来获得处理交易的权利。", "page-what-is-ethereum-how-intro-4": "如果正确完成任务,他们就能获得以太币。如果作弊,他们将会损失部分质押。", "page-what-is-ethereum-how-intro-5": "下面是一个示例:", @@ -155,7 +155,7 @@ "page-what-is-ethereum-when-who-learn-more": "了解更多关于以太坊的历史", "page-what-is-ethereum-roadmap-title": "以太坊 2025 年的路线图是什么?", "page-what-is-ethereum-roadmap-intro-1": "以太坊不遵循固定的路线图,而是遵循共同愿景。", - "page-what-is-ethereum-roadmap-intro-2": "网络升级以 EIP 提案的形式提出,并由全球贡献者公开开发。没有中心化团队决定升级内容,人们只是根据用户需求构建他们认为有用的功能。", + "page-what-is-ethereum-roadmap-intro-2": "网络升级以 EIP 的形式提出,由世界各地的贡献者公开开发。没有中心化团队来决定升级内容,人们只是根据用户需求构建他们认为有用的功能。", "page-what-is-ethereum-roadmap-intro-3": "Pectra 是 2025 年 5 月推出的最新升级版本。此次升级优化了钱包功能,为质押人提供了更多灵活性,并简化了去中心化应用程序在二层网络上的运行。升级目标是,在不牺牲安全性或去中心化原则的前提下提升用户体验。", "page-what-is-ethereum-roadmap-priorities-intro": "展望未来,以太坊的优先事项包括:", "page-what-is-ethereum-roadmap-priority-1": "让核心协议及其二层网络对所有人而言更快、更便宜", From 904e7cee6765bbe2ced93e4134d2c5a03993ba76 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:02 -0800 Subject: [PATCH 037/581] update(i18n): src/intl/zh/glossary.json --- src/intl/zh/glossary.json | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/intl/zh/glossary.json b/src/intl/zh/glossary.json index 598201c219e..e251a858fba 100644 --- a/src/intl/zh/glossary.json +++ b/src/intl/zh/glossary.json @@ -88,18 +88,20 @@ "dag-term": "有向无环图", "dag-definition": "DAG 代表有向无环图。它是由节点和节点之间的链接组成的数据结构。在合并之前,以太坊在其工作量证明算法 Ethash 中使用有向无环图,但在权益证明中不再使用。", "dapp-term": "去中心化应用程序", - "dapp-definition": "Dapp 是在区块链网络上运行的去中心化应用程序,不通过中央控制机构提供服务。了解有关去中心化应用程序的更多信息
去中心化应用程序至少有一个连接至网络界面的智能合约。此外,许多去中心化应用程序还包含去中心化存储和/或信息协议及平台。", + "dapp-definition": "dApp 是在区块链网络上运行的去中心化应用程序,不通过中央控制机构提供服务。了解有关去中心化应用程序的更多信息
去中心化应用程序至少有一个连接至网络界面的智能合约。此外,许多去中心化应用程序还包含去中心化存储和/或信息协议及平台。", "data-availability-term": "数据可用性", "data-availability-definition": "为了维护系统的透明与信任,任何节点都可以单独地验证区块链上的交易。", - "decentralization-term": "去中心化", + "decentralization-term": "去中心化。", "decentralization-definition": "取消由中而实体控制和执行流程的概念。", "dao-term": "去中心化自治组织 (DAO)", "dao-definition": "去中心化自治组织是由区块链上编码规则运行的数字组织,通过成员投票而不是中央机构来做出决定。了解有关去中心化自治组织 (DAO) 的更多信息
每名成员的投票权通常与他们持有的代币数量相关。去中心化自治组织的目标是将决策与运营民主化,专注于透明性与社区治理。", + "desci-term": "DeSci", + "desci-definition": "DeSci(即去中心化科学)是一项将区块链技术应用于科学研究的运动。它利用 DAO智能合约和代币化激励措施,创建更加透明、开放和协作的资助和研究生态系统。", "dex-term": "去中心化交易所 (DEX)", "dex-definition": "一种允许你与网络上的其他对等节点交换代币的以太坊应用程序。去中心化交易所不像中心化交易所那样受到地理限制 — 任何人都能够参与。", "deposit-contract-term": "部署合约", "deposit-contract-definition": "在以太坊上质押的门户。存款合约是以太坊上的智能合约,它接受以太币存款并管理验证者余额。验证者如果不将以太币存入该合约,就无法被激活。该合约需要提供以太币和输入数据,输入数据包括由验证者私钥签名的验证者公钥和提款公钥。权益证明网络需要这些数据来识别和批准验证者。", - "defi-term": "去中心化金融", + "defi-term": "去中心化金融 (DeFi)", "defi-definition": "一种广义的以太坊应用程序,旨在提供由区块链支持的金融服务,无需任何中介。了解有关去中心化金融 (DeFi) 的更多信息", "difficulty-term": "难度", "difficulty-definition": "一种工作量证明中网络中覆盖全网络的设置,用于控制找到有效随机数所需的平均计算量。难度由产生的区块哈希为被视为有效而需要的前导零数量表示。此概念在以太坊转变为权益证明后弃用。", @@ -149,7 +151,7 @@ "ethash-definition": "在以太坊过渡到权益证明之前使用的一种工作量证明算法。了解更多", "ether-term": "以太币", "ether-definition": "以太坊的原生加密货币,通常称为“以太币”。用于在使用以太坊生态系统和应用程序时支付交易费。了解有关以太币的更多信息。", - "events-term": "事件", + "events-term": "活动", "events-definition": "允许使用以太坊虚拟机日志工具。去中心化应用程序可以侦听事件,并使用它们在用户界面触发 JavaScript 回调。了解有关事件和日志的更多信息", "evm-term": "以太坊虚拟机 (EVM)", "evm-definition": "可执行字节码的基于堆栈的虚拟机。在以太坊中,执行模型指定在给出一系列字节码指令和一小组环境数据的情况下,系统状态如何改变。这是通过一个虚拟状态机的形式化模型指定的。了解有关以太坊虚拟机的更多信息。", @@ -171,7 +173,7 @@ "fraud-proof-definition": "某些二层网络解决方案的安全模型,为了提高速度,交易被汇总成多个批次并在单次交易中提交给以太坊。其他网络参与者可以重新执行交易以检查它们是否被诚实执行。如果他们发现发布的数据与他们自己的版本之间存在差异,他们可以发布加密证明来证实欺诈发生的地点。一些卷叠使用有效性证明。", "frontier-term": "边境", "frontier-definition": "以太坊的初始测试开发阶段,从 2015 年 7 月持续到 2016 年 3 月。", - "gas-term": "燃料", + "gas-term": "Gas", "gas-definition": "燃料是为区块链(如以太坊)上的交易和智能合约支付的费用。了解有关燃料和费用的更多信息。", "gas-limit-term": "燃料限制", "gas-limit-definition": "一笔交易或一个区块能消耗的最大燃料量。", @@ -213,7 +215,7 @@ "key-definition": "在以太坊的背景下,密钥是数字代码:用于接收交易的公钥以及用于访问和发送资金的私钥。
公钥:可以公开共享。
私钥:由所有者保密。", "layer-1-term": "第一层", "layer-1-definition": "一层网络是指多层区块链网络中的主区块链。例如,以太坊和比特币是一层区块链。许多二层区块链将资源密集型交易卸载到其单独的区块链,同时出于安全目的继续使用以太坊或比特币的一层区块链。", - "layer-2-term": "二层网络", + "layer-2-term": "二层", "layer-2-definition": "二层网络是建立在以太坊主网络之上的另一类网络,旨在使交易更快、更便宜。了解有关二层网络的更多信息。", "library-term": "程序库", "library-definition": "一种特殊类型的合约,没有付费函数,没有回退函数,也没有数据存储。因此,它不能接收或保存以太币,也不能存储数据。作为既往部署的代码,程序库可被其他合约调用进行只读计算。了解有关智能合约程序库的更多信息。", @@ -223,9 +225,11 @@ "liquidity-definition": "流动性是指资产转换为现金或其他资产的速度和容易程度。像 Uniswap 这样的去中心化交易所拥有多个流动性池,资产持有者可以将其资产存入其中,交易者可以以去中心化的方式买卖资产以换取奖励。", "liquidity-tokens-term": "流动性代币", "liquidity-tokens-definition": "流动性代币 (LST) 是向将资产存入流动性池的参与者发行的数字代币。流动性池是锁定在智能合约中的资金集合,用于促进去中心化交易所 (DEX) 上的交易。
这些代币代表参与者在池中的份额,在以后可以赎回初始存款加上池活动产生的部分交易费用。本质上,流动性代币充当流动性池中所有权或权益的证明,允许持有者获得奖励,同时为其他人高效交易不同的加密货币对提供必要的流动性。", + "liquid-staking-tokens-term": "流动性质押代币", + "liquid-staking-tokens-definition": "衍生代币,代表用户质押的锁定加密货币的所有权。在质押资产时,一些平台允许铸造流动质押代币(LST),它们代表锁定代币的等值份额。这些 LST 可用于交易、出售或在其他 DeFi 协议中使用,从而提高质押者的资本效率,即使原始资产仍在质押中,也能获得流动性。", "lmd-ghost-term": "LMD-GHOST", "lmd-ghost-definition": "以太坊共识客户端用来识别链头的分叉选择算法。LMD-GHOST 是“Latest Message Driven Greediest Heaviest Observed SubTree”(最新消息驱动的最贪婪、最重的观测子树)的缩写,意思是链头是其创建以来认证积累最多的区块。", - "mainnet-term": "主网", + "mainnet-term": "Mainnet(主网)", "mainnet-definition": "\"main network\"(主网)的缩写,是主要的公共以太坊区块链。", "max-fee-per-gas-term": "每单位燃料最高费用", "max-fee-per-gas-definition": "最高费用是用户为使交易添加到区块中而愿意为每单位燃料支付的绝对最高金额 (gwei)。", @@ -271,9 +275,9 @@ "peer-definition": "运行以太坊客户端软件且具有相同区块链副本的联网计算机。", "peer-to-peer-network-term": "对等网络", "peer-to-peer-network-definition": "计算机(对等)网络,无需基于服务器的集中服务即可共同执行功能。
此设置常用于共享文件(即 Bit torrent)、信息或数字货币,使用户之间能进行更直接且可能更有效的交换。", - "permissionless-term": "无需准入性", + "permissionless-term": "无需许可", "permissionless-definition": "无许可意味着任何人都可以加入并使用以太坊等系统。它向所有人开放,无需任何批准。", - "plasma-term": "以太坊 Plasma 扩容解决方案", + "plasma-term": "Plasma 扩容解决方案", "plasma-definition": "使用欺诈证明的链下扩容解决方案,例如乐观卷叠。Plasma 仅限于简单的交易,例如基本的代币转账和交换。了解有关 plasma 的更多信息。", "private-key-term": "私钥", "private-key-definition": "私钥是一个秘密代码,可以证明您拥有数字货币并允许您使用它,就像您帐户的 PIN 码一样。切勿告知他人。", @@ -337,7 +341,7 @@ "solidity-inline-assembly-definition": "Solidity 程序中的以太坊虚拟机汇编语言。Solidity 对内联汇编的支持使编写某些操作变得更加容易。", "stablecoin-term": "稳定币", "stablecoin-definition": "稳定币是一种加密货币,设计具有稳定的价值,常与一种货币或商品挂钩(如美元),将价格波动降至最小。了解有关稳定币的更多信息。", - "staking-term": "权益质押", + "staking-term": "质押", "staking-definition": "存入一定数量的以太币(你的质押)来成为一名验证者并保护网络。验证者在权益证明的共识模型下检查交易并提议区块。质押能够为符合网络最佳利益的行为提供经济上的激励。你会在履行验证者责任时获得奖励,反之则会损失不同数量的以太币。了解有关以太坊质押的更多信息。", "staking-pool-term": "质押池", "staking-pool-definition": "联合多个以太坊质押者的以太币,用于达到激活一组验证者密钥所需的 32 个以太币。节点运营商使用这些密钥参与共识,区块奖励会被分配给参与贡献的质押者。质押池或委托质押不是以太坊协议原生的,但社区已经构建了很多解决方案。了解有关联合质押的更多信息。", @@ -363,6 +367,8 @@ "testnet-definition": "\"Test network\"(测试网络)的缩写,是用于模拟以太坊主网行为的网络。", "token-term": "代币", "token-definition": "以太坊区块链智能合约中定义的可交易虚拟商品。", + "token-factory-term": "代币工厂", + "token-factory-definition": "代币工厂是一种智能合约,可以简化在 ERC-20ERC-721ERC-1155 等特定标准下创建代币的过程。该智能合约充当模板,允许用户部署具有名称、符号、供应量和附加功能等自定义参数的新代币,而无需从头开始创建新的智能合约。", "transaction-term": "交易", "transaction-definition": "由一个原始帐户>签名并提交到以太坊区块链的数据,以一个特定地址为目标。交易包含元数据,如该交易的燃料限制了解有关交易的更多信息。", "transaction-fee-term": "交易费", @@ -391,6 +397,8 @@ "web3-definition": "Web3 是使用区块链的新型互联网,用户而非公司控制自己的数据与交易。也不需要共享任何个人信息。了解有关 Web3 的更多信息。", "wei-term": "Wei", "wei-definition": "以太币的最小面额。1018 wei = 1 个以太币。", + "wrapped-token-term": "包装代币", + "wrapped-token-definition": "一种基于区块链的代币,代表了另一个网络上的加密货币或资产。例如,Wrapped Ether (WETH) 就是代表以太坊上的以太币(ETH),并符合以太坊的 ERC-20 代币标准。原始资产通过 智能合约 被安全地锁定,并铸造出等值的包装代币。这种机制实现了区块链内外的互操作性,使像 ETH 这样的资产能够在去中心化应用中无缝使用,同时保持其价值。", "zero-address-term": "零地址", "zero-address-definition": "一个以太坊地址,完全由数字 0 组成,常被用于从自有流通中移除代币。通过 burn() 方法从智能合约的索引正式移除的代币与发送到该地址的代币有所不同。", "zk-proof-term": "零知识证明", From 7d7048a1a6d06b1a70376dd2d85082df39c6b621 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:05 -0800 Subject: [PATCH 038/581] update(i18n): src/intl/zh/learn-quizzes.json --- src/intl/zh/learn-quizzes.json | 125 +++++++++++++++++++++++++++------ 1 file changed, 103 insertions(+), 22 deletions(-) diff --git a/src/intl/zh/learn-quizzes.json b/src/intl/zh/learn-quizzes.json index d71c6092d1d..86021a5ae9d 100644 --- a/src/intl/zh/learn-quizzes.json +++ b/src/intl/zh/learn-quizzes.json @@ -41,11 +41,11 @@ "what-is-ethereum-2-prompt": "以太坊原生加密货币叫:", "what-is-ethereum-2-a-label": "以太币", "what-is-ethereum-2-a-explanation": "以太币是基于以太坊网络的原生加密货币。", - "what-is-ethereum-2-b-label": "以太坊", + "what-is-ethereum-2-b-label": "以太坊(Ethereum)", "what-is-ethereum-2-b-explanation": "以太坊是区块链,但其原生货币不称为“以太坊”。这一点是常见的误解。", "what-is-ethereum-2-c-label": "Ethercoin 分叉币", "what-is-ethereum-2-c-explanation": "与许多其他加密货币不同的是,以太坊的原生加密货币的名称(英文)并不包含“coin”一词。", - "what-is-ethereum-2-d-label": "比特币", + "what-is-ethereum-2-d-label": "比特币(Bitcoin)", "what-is-ethereum-2-d-explanation": "Bitcoin(大写 B)是指创建的第一条区块链,bitcoin(小写 b)是指链上的原生加密货币。", "what-is-ethereum-3-prompt": "谁在运行以太坊?", "what-is-ethereum-3-a-label": "开发者", @@ -64,30 +64,30 @@ "what-is-ethereum-4-d-label": "超过 10 次", "what-is-ethereum-5-prompt": "以太坊消耗的电量超过:", "what-is-ethereum-5-a-label": "开采金矿", - "what-is-ethereum-5-a-explanation": "开采金矿每年使用大约 131 太瓦时。以太坊每年使用大约 0.0026 太瓦时能源。", + "what-is-ethereum-5-a-explanation": "开采金矿每年耗电约 131 太瓦时。以太坊每年耗电约 0.0026 太瓦时。", "what-is-ethereum-5-b-label": "Netflix", - "what-is-ethereum-5-b-explanation": "Netflix 每年使用大约 0.451 太瓦时。以太坊每年使用大约 0.0026 太瓦时能源。", + "what-is-ethereum-5-b-explanation": "Netflix 每年耗电约 0.451 太瓦时。以太坊每年耗电约 0.0026 太瓦时。", "what-is-ethereum-5-c-label": "PayPal", - "what-is-ethereum-5-c-explanation": "PayPal 每年使用大约 0.26 太瓦时。以太坊每年使用大约 0.0026 太瓦时能源。", + "what-is-ethereum-5-c-explanation": "PayPal 每年耗电约 0.26 太瓦时。以太坊每年耗电约 0.0026 太瓦时。", "what-is-ethereum-5-d-label": "以上都不是", - "what-is-ethereum-5-d-explanation": "以太坊每年使用大约 0.0026 太瓦时能源。低于开采金矿(每年大约 131 太瓦时)、Netflix(每年大约 0.451 太瓦时)和 Paypal(每年大约 0.26 太瓦时)。", + "what-is-ethereum-5-d-explanation": "以太坊每年耗电约 0.0026 太瓦时。低于开采金矿(每年约 131 太瓦时)、Netflix(每年约 0.451 太瓦时)和 PayPal(每年约 0.26 太瓦时)。", "what-is-ether-1-prompt": "以太币也被称为:", "what-is-ether-1-a-label": "ETC", "what-is-ether-1-a-explanation": "ETC 是以太坊经典的代码。", "what-is-ether-1-b-label": "ETR", "what-is-ether-1-b-explanation": "ETR 不是以太币或任何主流加密货币的代码。", - "what-is-ether-1-c-label": "ETH 以太币", + "what-is-ether-1-c-label": "ETH", "what-is-ether-1-c-explanation": "ETH 是以太坊上以太币的代码。", "what-is-ether-1-d-label": "BTC", "what-is-ether-1-d-explanation": "BTC 是比特币 (Bitcoin) 网络上比特币 (bitcoin) 的代码。", "what-is-ether-2-prompt": "在以太坊上,网络费用通过以下方式支付:", "what-is-ether-2-a-label": "比特币", "what-is-ether-2-a-explanation": "首字母小写的“bitcoin”是比特币网络的原生加密货币。", - "what-is-ether-2-b-label": "ETH 以太币", + "what-is-ether-2-b-label": "以太币(ETH)", "what-is-ether-2-b-explanation": "以太币 (ETH) 是以太坊的原生加密货币。在以太坊上,所有的网络费用都使用以太币支付。", "what-is-ether-2-c-label": "美元", "what-is-ether-2-c-explanation": "在以太坊上不可能用美元或任何其他法定货币支付网络费用。", - "what-is-ether-2-d-label": "以太坊", + "what-is-ether-2-d-label": "以太坊(Ethereum)", "what-is-ether-2-d-explanation": "以太坊是网络,但以太坊的网络费用是用以太币支付的。", "what-is-ether-3-prompt": "在以太坊上质押有助于保护网络,因为:", "what-is-ether-3-a-label": "如果质押者不喜欢某些人的所做所为,可以封禁他们", @@ -110,7 +110,7 @@ "web3-1-prompt": "Web3 允许用户通过以下方式拥有数字资产:", "web3-1-a-label": "代币", "web3-1-a-explanation": "代币提供了一种表示可相互交换的价值单位的方法并由以太坊帐户持有。虽然代币表示所有权,然而在以太坊上还有更多拥有数字资产的方式。", - "web3-1-b-label": "非同质化代币", + "web3-1-b-label": "非同质化代币(NFTs)", "web3-1-b-explanation": "NFT(非同质化代币)可将任何独有物品表示成基于以太坊的资产。虽然非同质化代币表示所有权,然而在以太坊上还有更多拥有数字资产的方式。", "web3-1-c-label": "以太坊域名服务 (ENS)", "web3-1-c-explanation": "ENS(以太坊域名服务)是以太坊区块链上的一种去中心化域名服务。虽然它们表示所有权,然而在以太坊上还有更多拥有数字资产的方式。", @@ -139,7 +139,7 @@ "web3-4-a-explanation": "加文·伍德 (Gavin Wood) 是以太坊的联合创始人,据信,他在 2015 年以太坊启动后不久,创造了“Web3”这个词。", "web3-4-b-label": "斯蒂夫·乔布斯 (Steve Jobs)", "web3-4-b-explanation": "斯蒂夫·乔布斯 (Steve Jobs) 没有创造“Web3”这个词。", - "web3-4-c-label": "Vitalik Buterin", + "web3-4-c-label": "维塔利克·布特林(Vitalik Buterin)", "web3-4-c-explanation": "虽然维塔利克·布特林 (Vitalik Buterin) 是以太坊的最初创始人,但“Web3”这个词不是他创造的。", "web3-4-d-label": "埃隆·马斯克(Elon Musk)", "web3-4-d-explanation": "埃隆·马斯克(Elon Musk)没有创造“Web3”这个词。", @@ -259,9 +259,9 @@ "rollups-1-d-label": "使以太坊去中心化", "rollups-1-d-explanation": "卷叠以及其他二层网络解决方案的主要目的是为了进行以太坊扩容。", "rollups-2-prompt": "为了扩容,大多数其他一层网络主要会舍弃:", - "rollups-2-a-label": "安全性", + "rollups-2-a-label": "安全性。", "rollups-2-a-explanation": "为了扩容,大多数其他一层网络会舍弃安全性以及其他一些优势。", - "rollups-2-b-label": "去中心化", + "rollups-2-b-label": "去中心化。", "rollups-2-b-explanation": "为了扩容,大多数其他一层网络会舍弃去中心化以及其他一些优势。", "rollups-2-c-label": "代币价格", "rollups-2-c-explanation": "代币价格对扩容能力没有任何影响。", @@ -270,7 +270,7 @@ "rollups-3-prompt": "以下哪一项不被视为二层网络?", "rollups-3-a-label": "Validium", "rollups-3-a-explanation": "Validium 不被视为二层网络解决方案,因为它没有从以太坊获得安全性或数据可用性。这不是唯一的正确答案。", - "rollups-3-b-label": "侧链", + "rollups-3-b-label": "侧链。", "rollups-3-b-explanation": "侧链不被视为二层网络解决方案,因为它没有从以太坊获得安全性或数据可用性。这不是唯一的正确答案。", "rollups-3-c-label": "其他一层网络区块链", "rollups-3-c-explanation": "其他一层网络区块链不被视为二层网络解决方案。这不是唯一的正确答案。", @@ -286,11 +286,11 @@ "rollups-4-d-label": "用各种不同的方法设计二层网络将会使以太坊受益", "rollups-4-d-explanation": "以太坊没有计划推出“官方版”的二层网络,因为用各种不同的方法设计二层网络解决方案,将使所有人受益。", "merge-1-prompt": "合并让以太坊采用哪种共识机制?", - "merge-1-a-label": "工作量证明", + "merge-1-a-label": "工作量证明。", "merge-1-a-explanation": "工作量证明是合并前使用的共识机制。", - "merge-1-b-label": "权益证明", + "merge-1-b-label": "权益证明。", "merge-1-b-explanation": "正确!合并使以太坊采用权益证明机制。", - "merge-1-c-label": "权威证明", + "merge-1-c-label": "授权证明。", "merge-1-c-explanation": "以太坊没有并且也从未在以太坊主网上使用过授权证明机制。", "merge-1-d-label": "以上都对。", "merge-1-d-explanation": "以太坊不可能同时使用所有这些共识机制。", @@ -318,14 +318,59 @@ "merge-4-b-label": "错误", "merge-4-b-explanation": "不管在合并前、合并中还是合并后,以太币没有任何变化。“把以太币升级到以太坊 2 代币”的说法,是恶意参与者用来欺诈用户的常用手段。", "merge-5-prompt": "以太坊的共识层以前被称作:", - "merge-5-a-label": "工作量证明", + "merge-5-a-label": "工作量证明。", "merge-5-a-explanation": "工作量证明是合并前使用的共识机制。", "merge-5-b-label": "以太坊 2", "merge-5-b-explanation": "在被重新命名为“共识层”前,它原来叫做“以太坊 2”。", "merge-5-c-label": "以太坊 1", "merge-5-c-explanation": "“以太坊 1”是执行层最初的名称,而不是共识层的。", - "merge-5-d-label": "权益质押", + "merge-5-d-label": "质押", "merge-5-d-explanation": "质押是指将以太币存入智能合约,帮助保护区块链的安全。", + "gas-1-prompt": "什么是燃料费?", + "gas-1-a-label": "与交易和智能合约操作相关的费用", + "gas-1-a-explanation": "流行说法, Gas fee代表交易和智能合约操作的成本", + "gas-1-b-label": "一次操作费用 = Gas 用量 × Gas 价格", + "gas-1-b-explanation": "虽然这一说法没错,但根据给定选项,它并不是最佳答案", + "gas-1-c-label": "一种包含优先支付的方式(priority fee),用于加快交易处理的可能性。", + "gas-1-c-explanation": "有一种不全面的说法, 总 Gas 费包括基础费(base fee)和优先费(priority fee),优先费可以影响交易的处理速度。", + "gas-1-d-label": "以上都对。", + "gas-1-d-explanation": "Gas 费涵盖了所有这些方面:它们用于补偿计算资源消耗,适用于交易和智能合约操作,并且可以包含 优先费,以加快交易被打包的速度。", + "gas-2-prompt": "判断以下哪个策略对降低gas 费用最没有效果?", + "gas-2-a-label": "在网络拥堵低峰期发送交易", + "gas-2-a-explanation": "在网络低峰期发送交易确实可以降低 Gas 费,因为此时网络拥堵较少,基础 Gas 价格较低。", + "gas-2-b-label": "等待 Gas 价格下降", + "gas-2-b-explanation": "等待 Gas 价格下降是有效策略,因为 Gas 费用会随着网络拥堵情况波动。", + "gas-2-c-label": "使用 Layer 2 链可以显著降低交易费用", + "gas-2-c-explanation": "Layer 2 解决方案可以降低手续费,是节省 Gas 费的有效方法。", + "gas-2-d-label": "使用复杂的智能合约逻辑会增加计算量", + "gas-2-d-explanation": "复杂的智能合约逻辑会增加 Gas 成本,因为它需要更多计算资源。通过高效设计,减少步骤、存储和冗余操作,可以有效降低费用。", + "gas-3-prompt": "Gas 费高的主要原因是什么?", + "gas-3-a-label": "网络计算量超过特定阈值", + "gas-3-a-explanation": "正确,当以太坊上的计算量超过阈值时,Gas 费会增加,尤其是在活动高峰时期,例如去中心化应用(dApp)空投或 NFT 发售期间。", + "gas-3-b-label": "验证者手动提高基础费(Base Fee)", + "gas-3-b-explanation": "错误,验证者不会手动设置基础费(Base Fee);基础费是由协议根据前一区块的需求自动调整的。", + "gas-3-c-label": "设计良好且经过优化的智能合约", + "gas-3-c-explanation": "编写良好的智能合约逻辑,例如高效使用存储和循环,可以降低 Gas 消耗。", + "gas-3-d-label": "网络上可用 ETH 不足", + "gas-3-d-explanation": "Gas 费不会受到网络上 ETH 数量的影响。", + "gas-4-prompt": "Gas 费是如何在以太坊安全中起着关键作用?", + "gas-4-a-label": "通过激励鼓励验证者诚实行事", + "gas-4-a-explanation": "验证者可以通过几种方式获得补偿, 但 Gas 费的主要作用是阻止垃圾交易和过度占用资源。", + "gas-4-b-label": "通过赋予交易成本来减少垃圾交易、滥用和恶意活动。", + "gas-4-b-explanation": "Gas 费让垃圾交易或恶意行为的成本变高,从而防止滥用,并有助于维护网络稳定。", + "gas-4-c-label": "通过确保交易按优先级顺序处理", + "gas-4-c-explanation": "交易的优先级可以由 优先费(tip) 决定,而不是由 Gas 费决定的", + "gas-4-d-label": "通过增加流通中的 ETH 总量", + "gas-4-d-explanation": "基础费(Base Fee,Gas 总费的一部分)会被销毁,从而减少流通中的 ETH,而不是增加。", + "gas-5-prompt": "如何计算燃料费?", + "gas-5-a-label": "Gas 价格 × 交易大小", + "gas-5-a-explanation": "Gas 费是基于计算量,而不是交易的大小。", + "gas-5-b-label": "Gas 使用量 × (基础费 + 优先费)", + "gas-5-b-explanation": "Gas 费的计算公式为:Gas 使用量 ×(基础费 + 优先费)。", + "gas-5-c-label": "区块大小 × 验证者小费上限", + "gas-5-c-explanation": "区块大小并不直接影响这个公式。", + "gas-5-d-label": "基础费 + 优先费 + 小费", + "gas-5-d-explanation": "基础费和优先费是公式的一部分,其中小费就是优先费。", "daos-1-prompt": "关于去中心化自治组织 (DAO) 的说法哪些是对的?", "daos-1-a-label": "去中心化自治组织 (DAO) 是基于治理代币的集体所有制组织", "daos-1-a-explanation": "去中心化自治组织 (DAO) 是集体所有制组织,但还有其他正确的说法。", @@ -370,7 +415,7 @@ "daos-5-c-label": "基于信誉的成员资格", "daos-5-c-explanation": "与基于代币或基于共享的成员资格不同,基于信誉的去中心化自治组织 (DAO) 不会将所有权移交给贡献者。去中心化自治组织 (DAO) 的成员必须通过参与活动来赢得信誉。", "daos-5-d-label": "执行委员会和链下资产管理", - "daos-5-d-explanation": "这种方式采用高度集中且不透明的治理机制。与此相反,去中心化自治组织 (DAO) 采用可验证的投票机制以及链上资产管理,来确保透明度和问责制。", + "daos-5-d-explanation": "这种方式采用高度集中且不透明的治理机制。与此相反,去中心化自治组织采用可验证的投票机制以及链上资产管理,来确保透明度和问责制。", "staking-solo-1-prompt": "以下哪些关于罚没的表述是正确的?", "staking-solo-1-a-label": "离线时受处罚,重新上线后恢复奖励", "staking-solo-1-a-explanation": "离线不会导致罚没。离线会受到轻微处罚,当验证者再次上线并恢复证明时,奖励就会恢复。", @@ -597,7 +642,7 @@ "defi-3-d-label": "MakerDao", "defi-3-d-explanation": "错误。MakerDAO 是一个去中心化平台,允许用户发行和管理 DAI 稳定币,但不侧重于代币交换。", "defi-4-prompt": "当你使用去中心化金融 (DeFi) 应用程序完成一笔交易时,交易信息存储在哪里?", - "defi-4-a-label": "ETH 以太币", + "defi-4-a-label": "ETH", "defi-4-a-explanation": "错误。数据不存储在以太币 (ETH) 中。以太币是以太坊区块链的原生资产。", "defi-4-b-label": "我的钱包", "defi-4-b-explanation": "错误。钱包是一个应用程序,通过连接以太坊区块链来管理你的以太坊帐户。它不会存储你的任何交易历史数据。", @@ -613,5 +658,41 @@ "defi-5-c-label": "比特币", "defi-5-c-explanation": "错误。比特币网络是一个单纯用于存储价值的网络,而非用于运行先进的程序。去中心化金融 (DeFi) 需要更加灵活的系统,能够运行复杂程序以自动处理借贷和交易,例如以太坊。", "defi-5-d-label": "传统金融机构", - "defi-5-d-explanation": "错误。去中心化金融 (DeFi) 应用程序不需要传统金融机构,而是使用被称为智能合约的区块链程序自动处理交易。" + "defi-5-d-explanation": "错误。去中心化金融 (DeFi) 应用程序不需要传统金融机构,而是使用被称为智能合约的区块链程序自动处理交易。", + "smart-contracts-1-prompt": "智能合约的特征是什么?", + "smart-contracts-1-a-label": "智能合约就像法律合约,但以数字的形式存储在区块链上,以安全地保存内容。", + "smart-contracts-1-a-explanation": "智能合约使用与传统合约类似的逻辑,但除此之外几乎没有相似之处。", + "smart-contracts-1-b-label": "链接到能够执行交易的自主 AI 系统", + "smart-contracts-1-b-explanation": "智能合约根据代码中定义的“如果满足... 则执行...”逻辑 可预测地执行交易——它们不使用 AI", + "smart-contracts-1-c-label": "链上程序遵循”如果满足... 则执行...“的逻辑,以确保其按照自己的规则执行交易", + "smart-contracts-1-c-explanation": "智能合约是部署在以太坊上的帐户,其不可更改的代码决定其功能。", + "smart-contracts-1-d-label": "它们是以太坊区块链背后的规则,与律师共同开发以确保符合法律规范。", + "smart-contracts-1-d-explanation": "智能合约是可由开发者创建并部署在区块链上的代码片段。", + "smart-contracts-2-prompt": "最能体现智能合约功能的比喻是什么?", + "smart-contracts-2-a-label": "一家银行", + "smart-contracts-2-a-explanation": "银行需要人工执行,并且结构化为层级实体,而智能合约根据不可更改的规则由计算机可预测地执行。", + "smart-contracts-2-b-label": "数字自动售货机", + "smart-contracts-2-b-explanation": "自动售货机只有在所有条件满足后才会吐出货物:特定的输入保证确定性的输出。这与智能合约的逻辑类似。", + "smart-contracts-2-c-label": "一个计算器", + "smart-contracts-2-c-explanation": "智能合约代码可以用于计算,但并不仅限于此。智能合约是基于区块链的程序,遵循“如果满足... 则执行...”的逻辑。", + "smart-contracts-2-d-label": "一个网站", + "smart-contracts-2-d-explanation": "网站是捕获用户指令的前端。智能合约是执行这些指令的后端逻辑,并返回结果。", + "smart-contracts-3-prompt": "以下哪个选项不是智能合约的特征?", + "smart-contracts-3-a-label": "确定性执行", + "smart-contracts-3-a-explanation": "智能合约的主要优势在于,它会确定性地执行明确的代码,没有人工干预或偏见。", + "smart-contracts-3-b-label": "公开的记录", + "smart-contracts-3-b-explanation": "通过公共区块链上的智能合约,任何人都可以即时追踪资产转账和其他相关信息。", + "smart-contracts-3-c-label": "隐私保护", + "smart-contracts-3-c-explanation": "由于区块链是化名网络,交易公开绑定到一个唯一的加密地址,而非一个身份。", + "smart-contracts-3-d-label": "能够更改", + "smart-contracts-3-d-explanation": "智能合约一旦创建就无法更改——确保其根据代码定义的规则执行交易。", + "smart-contracts-4-prompt": "以下哪个选项不是智能合约的应用?", + "smart-contracts-4-a-label": "稳定币", + "smart-contracts-4-a-explanation": "稳定币是使用智能合约定义和追踪的代币对象。", + "smart-contracts-4-b-label": "协议变更", + "smart-contracts-4-b-explanation": "虽然协议变更有时通过智能合约实现,但它们的创建和定义是通过透明的在线论坛提出的,并在客户端软件中实现。", + "smart-contracts-4-c-label": "非同质化代币 (NFT)", + "smart-contracts-4-c-explanation": "智能合约被用于定义各种各样的 NFT,从数字艺术品到所有权证明。", + "smart-contracts-4-d-label": "开放货币交易所", + "smart-contracts-4-d-explanation": "去中心化交易所 (DEX) 使用智能合约构建,以实现无需中心化控制的运行。" } From e27d62cc93941c70ea876b16268058616fdb08b7 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:07 -0800 Subject: [PATCH 039/581] update(i18n): src/intl/zh/page-contributing-translation-program-acknowledgements.json From 92095e3fc94c81a512af4458ec00cb854a68ee40 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:10 -0800 Subject: [PATCH 040/581] update(i18n): src/intl/zh/page-trillion-dollar-security.json --- .../zh/page-trillion-dollar-security.json | 196 ++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 src/intl/zh/page-trillion-dollar-security.json diff --git a/src/intl/zh/page-trillion-dollar-security.json b/src/intl/zh/page-trillion-dollar-security.json new file mode 100644 index 00000000000..55c25c6d6e9 --- /dev/null +++ b/src/intl/zh/page-trillion-dollar-security.json @@ -0,0 +1,196 @@ +{ + "page-trillion-dollar-security-meta-title": "万亿美元安全计划——安全挑战总览报告", + "page-trillion-dollar-security-meta-description": "万亿美元安全计划是一项次态系统范围内的努力,以提升以太坊的安全性。本报告梳理了当前生态系统所面临的安全挑战。", + "page-trillion-dollar-security-subtitle": "万亿美元安全计划", + "page-trillion-dollar-security-title": "安全挑战总览", + "page-trillion-dollar-security-hero-paragraph-1": "以太坊使最安全,最具弹性和最值得信赖的区块链生态系统。在过去的十年中,以太坊生态系统发展了丰富的技术、标准和知识,支撑着拥有数百万用户和超过 6000 亿美元资金的生态系统。", + "page-trillion-dollar-security-hero-paragraph-2": "但要使以太坊在全球采用的下一阶段中成功,还必须做出许多改进。为了实现我们社区的雄心壮志,以太坊必须发展成为这样一个生态系统:", + "page-trillion-dollar-security-hero-paragraph-3": "数十亿用户安心持有超过$1000的链上资产,在以太坊上得到安全保护的资产总值达到万亿美元。", + "page-trillion-dollar-security-hero-paragraph-4": "公司,机构和政府能够放心地在单个合约或应用程序中存储超过 1 万亿美元的价值,并且乐于进行相当规模的交易。", + "page-trillion-dollar-security-hero-paragraph-5": "万亿美元安全 (1TS) 项目是一次旨在升级以太坊安全性的全生态系统范围的努力。此报告是 1TS 项目的首份成果。在过去一个月中,我们收集了用户、开发者、安全专家和机构的反馈,了解他们认为最大的挑战和改进空间。感谢数百位个人和组织抽出时间与我们分析你们的看法。", + "page-trillion-dollar-security-hero-paragraph-6": "本报告对我们的研究发现进行了总结,涵盖了6个不同领域:", + "page-trillion-dollar-security-report-card-title": "以太坊生态安全总览报告", + "page-trillion-dollar-security-download-report": "下载PDF", + "page-trillion-dollar-security-divider-heading": "以太坊生态安全总览报告", + "page-trillion-dollar-security-sticky-info": "这是 {section}的粘性版块的信息​​。Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque euismod, urna eu tincidunt consectetur。", + "page-trillion-dollar-security-content-overview-title": "概述", + "page-trillion-dollar-security-user-experience-title": "用户体验 (UX)", + "page-trillion-dollar-security-user-experience-description": "影响用户能力的问题包括:安全地进行私钥管理、链上应用交互及交易签名。", + "page-trillion-dollar-security-smart-contract-title": "智能合约安全性", + "page-trillion-dollar-security-smart-contract-description": "以太坊应用程序的智能合约组件的安全性,以及塑造它们的软件生产生命周期。", + "page-trillion-dollar-security-infrastructure-title": "基础设施和云安全", + "page-trillion-dollar-security-infrastructure-description": "以太坊的应用(app)所取决于的基础设施问题(包括加密特定是和已停用的),比如L2链、RPC节点、云托管服务等等。", + "page-trillion-dollar-security-consensus-title": "共识协议", + "page-trillion-dollar-security-consensus-description": "核心协议的安全特点,是保护以太坊区块链自身抵御攻击与操纵的能力。", + "page-trillion-dollar-security-incident-title": "监控、事件响应和通过干预缓和事物的负面影响", + "page-trillion-dollar-security-incident-description": "用户与组织在处理安全漏洞事件时面临挑战,特别是在追回资金或善后的时候。", + "page-trillion-dollar-security-social-title": "社交圈与治理", + "page-trillion-dollar-security-social-description": "以太坊的开源治理来源、社区和组织的生态系统。", + "page-trillion-dollar-security-hero-closing-paragraph-1": "该首份报告专注于识别和梳理仍然存在的问题和挑战。下一步将是选择优先级最高的问题、寻找解决方案,并与生态系统协作解决这些问题。", + "page-trillion-dollar-security-hero-closing-paragraph-2": "由于以太坊生态系统是去中心化的,保障以太坊的安全不是单一实体能够完成的,以太坊的技术栈由世界各地的独立组织构建和维护,包括钱包、基础设施和开发者工具。虽然 1TS 项目由以太坊基金会协调,但我们仍需要你的帮助来保障以太坊的安全。", + "page-trillion-dollar-security-hero-closing-paragraph-3": "你可以分享自己的反馈和想法,为万亿美元安全项目​​贡献一份力量:", + "page-trillion-dollar-security-feedback-question-1": "关于以太坊的安全,有没有什么你意识到但没有在这份报告中涵盖的问题?", + "page-trillion-dollar-security-feedback-question-2": "你认为下面这些调查的问题中优先级最高的是什么?", + "page-trillion-dollar-security-feedback-question-3": "你有什么想法或解决方案来解决这些问题?", + "page-trillion-dollar-security-contact-paragraph": "我们很希望能够在万亿美元的安全@以太坊官网收到你的回音。", + "page-trillion-dollar-security-section-1-intro": "安全开始于人们与以太坊交互所使用的界面。用户与区块链本身之间的这一边界始终是安全挑战的来源。", + "page-trillion-dollar-security-section-1-paragraph-1": "区块链的一个显著特征是交易的原子性:一旦更新被记录在区块链中,就无法干预或撤销。者提供了强力的一致性保证和协议级别的安全性,但也使用户面临更高的操作风险:任何错误、密钥泄露或仓促批准都可能导致无法挽回的损失。", + "page-trillion-dollar-security-section-1-paragraph-2": "因此,用户承担了巨大的安全负担。为了安全地使用以太坊,个人和组织必须安全地持有和管理密钥、与链上应用程序交互,以及使用其密钥签署交易以转移资产或以其他方式更新以太坊的状态。", + "page-trillion-dollar-security-section-1-paragraph-3": "每一项这些要求都会带来风险,例如密钥泄露或丢失、仓促或不知情的授权,或者用户依赖的钱包软件遭到入侵 (这些软件用于通知和指导用于与以太坊进行交互)。", + "page-trillion-dollar-security-section-1-1-title": "1.1 钥匙(包括公钥和私钥)管理", + "page-trillion-dollar-security-section-1-1-paragraph-1": "许多用户没有能力安全地管理密码学的密钥。", + "page-trillion-dollar-security-section-1-1-paragraph-2": "大多数广泛使用的软件钱包依赖用户安全地存储代表其底层密码学私钥的助记词,这往往导致用户使用不安全的替代方法,例如将助记词以明文方式存储、存储在云服务上,或写在纸上。", + "page-trillion-dollar-security-section-1-1-paragraph-3": "硬件钱包是一种替代发干,使用户能够管理存储在专用物理设备中的加密密钥,然而。硬件钱包也有其缺陷和攻击面。硬件钱包可能会丢失、损坏或被盗。许多硬件钱包并非开源,并且可能拥有非透明的供应链,这带来了供应链攻击的风险,即被篡改的设备可能流入市场。", + "page-trillion-dollar-security-section-1-1-paragraph-4": "无论是使用软件钱包还是硬件钱包管理密钥,许多用户都会对自我保管感到担忧,因为密钥会可能遭受物理盗窃或攻击。", + "page-trillion-dollar-security-section-1-1-paragraph-5": "企业和机构用户在密钥管理方面面临额外挑战。如果个人员工持有密钥 (即作为多重签名钱包的一部分),由于人员会随时间变动,组织将必须能够替换旧密钥并创建新密钥。不同行业和司法管辖区的合规要求可能需要现有钱包软件不支持的自定义工作流或审计记录。在某些情况下,企业用户转向使用第三方托管数字资产,而这可能会引入另一层需要考虑的安全风险。", + "page-trillion-dollar-security-section-1-2-title": "1.2盲签名与交易的不确定性", + "page-trillion-dollar-security-section-1-2-paragraph": "用户经常在不了解操作内容的情况下”盲目“批准交易。钱包通常显示原始十六进制数据、被截断的合约地址,或其他不足以让用户理解交易后果的信息。这使得各类用户容易受到恶意智能合约、网络钓鱼、诈骗、伪造界面、前端篡改以及基本用户错误的威胁。", + "page-trillion-dollar-security-section-1-3-title": "1.3审批与权限管理", + "page-trillion-dollar-security-section-1-3-paragraph-1": "在许多以太坊应用程序中,用户在正常使用过程中通常会授予底层应用程序某些权限。例如,用户可能会授予像 Uniswap 这样的去中心化交易所移动其代币的权限,以便将此代币兑换为 ETH。", + "page-trillion-dollar-security-section-1-3-paragraph-2": "这些授权可以对金额设定限制,但许多钱包默认授予无限期的无限量授权。在大多数钱包中,用户无法管理或查看他们未撤销的授权。", + "page-trillion-dollar-security-section-1-3-paragraph-3": "这可能使用户更易受到恶意应用程序或被篡改前端的攻击,因为许多用户的默认操作模式是授予无限制的批准,这可能被用于抽取他们的资金。即使用户对一个合法智能合约授予批准,如果该合约之后被入侵且该批准仍然有效,被入侵的合约也可能抽取用户的资金。", + "page-trillion-dollar-security-section-1-3-paragraph-4": "这对组织用户同样构成风险。例如,某个组织可能为了操作便利而选择授予去中心化交易所路由器无限 USDC 授权,如果路由器合约升级,用户的资金将面临风险。", + "page-trillion-dollar-security-section-1-4-title": "1.4受到入侵的网络界面​​", + "page-trillion-dollar-security-section-1-4-paragraph-1": "大多数用户并不直接与智能合约交互,而是使用其移动设备或网页浏览器,通过网页界面进行操作。", + "page-trillion-dollar-security-section-1-4-paragraph-2": "这些前端可能通过常见的手段受到攻击,例如 DNS 劫持、恶意 javascript 注入,不安全的托管或各种第三方依赖。被入侵的应用程序 UX 可能会将各类用户引导至恶意智能合约,或者导致他们签署误导性的交易。", + "page-trillion-dollar-security-section-1-5-title": "1.5 隐私", + "page-trillion-dollar-security-section-1-5-paragraph-1": "隐私性可以减轻或放大各种用户的安全风险。", + "page-trillion-dollar-security-section-1-5-paragraph-2": "较弱的隐私保护会将个人用户暴露在各种定向威胁之下,例如网络钓鱼、漏洞利用、诈骗或物理攻击。许多常见的用户体验模式也会导致用户暴露,例如地址重用、KYC 数据和其他元数据泄露。", + "page-trillion-dollar-security-section-1-5-paragraph-3": "对于机构和企业而言,隐私往往是出于合规或特定用例的基本业务需求。此外,隐私问题还可能带来特定的安全风险。例如,在基于以太坊构建的供应链系统中,用户可能需要强力的隐私保障,以保护其知识产权资产。如果系统是透明的,这些资产可能会被遭到泄露。", + "page-trillion-dollar-security-section-1-6-title": "1.6 片段", + "page-trillion-dollar-security-section-1-6-paragraph-1": "不同的钱包在处理核心行为 (如显示交易、处理批准或标记合约) 方面缺乏一致性。这种用户体验的碎片化增加了用户学习安全使用钱包的难度,也提高了风险。", + "page-trillion-dollar-security-section-1-6-paragraph-2": "例如,由于不同钱包的用户体验提示各不相同,用户无法依赖其一致性来保护自己免受网络钓鱼和欺骗。如果每个工具的运作方式都不同,用户就无法对以太坊的工作方式形成可靠的预期。", + "page-trillion-dollar-security-section-2-intro": "智能合约是以太坊应用程序的链上组件:它们持有资金、定义访问控制并执行应用程序的业务逻辑。由于智能合约通常是透明的并且任何人都可以访问,因此在考虑以太坊生态系统的安全性时,它们是一个关键的攻击面。", + "page-trillion-dollar-security-section-2-paragraph-1": "智能合约安全性随着以太坊的发展得到了显著提升。早期的安全事件,如 DAO 攻击,促使生态系统更加专业化,并改进了整个软件生命周期的安全防护,使代码在部署到链上前更加安全。关键的改进包括:", + "page-trillion-dollar-security-section-2-list-1": "安全审计成为标准化的做法,多家安全公司进入生态系统并研究相关专业知识。", + "page-trillion-dollar-security-section-2-list-2": "工具、测试与静态分析系统​​已经走向成熟并成为实践的标准。", + "page-trillion-dollar-security-section-2-list-3": "经过审核的通用程序库给开发者提供了​​默认安全原则的构建区块。", + "page-trillion-dollar-security-section-2-list-4": "形式化的验证技术​​被广泛采用,特别应用于跨链桥、质押系统和高价值合约。", + "page-trillion-dollar-security-section-2-list-5": "生态系统的安全文化和最好的实践得到了改善。", + "page-trillion-dollar-security-section-2-list-6": "高额奖金的计划的创立,使得应用的阶段得到显著强化。", + "page-trillion-dollar-security-section-2-paragraph-2": "然而,这个领域仍然存在有漏洞的环节和需要改进的领域。", + "page-trillion-dollar-security-section-2-1-title": "2.1合约的疏漏", + "page-trillion-dollar-security-section-2-1-paragraph": "虽然智能合约安全性已经有所改进,但仍存在可能导致重大安全问题的漏洞,包括:", + "page-trillion-dollar-security-section-2-1-list-title-1": "合约升级的风险", + "page-trillion-dollar-security-section-2-1-list-desc-1": "一些合约被设计为可以在部署后进行修改,以便开发团队能够继续更新和改进应用程序。然而,这也带来了风险。升级可能会引入新的漏洞,或者在恶意升级的情况下导致用户损失全部资金。", + "page-trillion-dollar-security-section-2-1-list-title-2": "重入攻击", + "page-trillion-dollar-security-section-2-1-list-desc-2": "即合约 A 在更新其内部状态前调用外部合约 B,而合约 B 在第一次调用结束之前又回调到原始合约 A。", + "page-trillion-dollar-security-section-2-1-list-title-3": "外部程序库的不安全使用", + "page-trillion-dollar-security-section-2-1-list-desc-3": "当合约调用了可能未经过审计、恶意的或可升级的外部程序库。", + "page-trillion-dollar-security-section-2-1-list-title-4": "未经审计的部分", + "page-trillion-dollar-security-section-2-1-list-desc-4": "尽管标准库的审计和使用已经有所改进,开发者有时仍在其应用程序中依赖于未经审计的组件。", + "page-trillion-dollar-security-section-2-1-list-title-5": "访问控制的失败", + "page-trillion-dollar-security-section-2-1-list-desc-5": "当权限配置错误或定义太过宽泛时,攻击者就能够采取恶意的行动。", + "page-trillion-dollar-security-section-2-1-list-title-6": "未经授权的访问", + "page-trillion-dollar-security-section-2-1-list-desc-6": "当恶意的攻击者得到了能够控制合约的私钥。", + "page-trillion-dollar-security-section-2-1-list-title-7": "跨链桥与跨链交互", + "page-trillion-dollar-security-section-2-1-list-desc-7": "跨链桥与跨链协议的使用引入了另外的复杂性,攻击者可以利用跨链信息的传递或验证机制的漏洞发起攻击。", + "page-trillion-dollar-security-section-2-1-list-title-8": "外部帐户(EOA)的委托授权或签名机制的误用", + "page-trillion-dollar-security-section-2-1-list-desc-8": "恶意应用程序可能诱导用户将帐户的完整委托权限签署给另一方,从而实现盗窃。恶意应用程序还可能以意想不到的方式使用用户签署的消息,例如进行重放攻击。", + "page-trillion-dollar-security-section-2-1-list-title-9": "由AI代码生成工具或自动化重构的工具带来的漏洞正在成为新的威胁", + "page-trillion-dollar-security-section-2-2-title": "2.2开发者经验,工具和编程语言", + "page-trillion-dollar-security-section-2-2-paragraph": "由于开发者的错误,漏洞最终会出现在已部署的代码中。改进的开发者工具显著降低了部署安全智能合约的难度,但问题依然存在。", + "page-trillion-dollar-security-section-2-2-list-title-1": "流行的框架中缺乏安全的默认设置", + "page-trillion-dollar-security-section-2-2-list-desc-1": "一些工具优先考虑灵活性或速度而非安全性,设置了不安全的默认值,例如在 approve() 函数中默认授予无限制代币授权,或默认未包含访问控制模式。", + "page-trillion-dollar-security-section-2-2-list-title-2": "用于高级操作控制的自定义代码", + "page-trillion-dollar-security-section-2-2-list-desc-2": "具有复杂操作需求的机构用户往往必须从头构建所需功能,这增加了漏洞风险。目前缺乏针对高级安全工作流程的标准化安全组件或框架。", + "page-trillion-dollar-security-section-2-2-list-title-3": "不一致的测试覆盖面", + "page-trillion-dollar-security-section-2-2-list-desc-3": "跨工具栈,以及缺乏经过验证的技术的规范,比如模糊测试或不变性检查的规范。", + "page-trillion-dollar-security-section-2-2-list-title-4": "形式化的验证方法的采用率低", + "page-trillion-dollar-security-section-2-2-list-desc-4": "形式化验证技术非常强大,但它们也相当复杂、昂贵、需要专业领域知识,且尚未很好地整合到标准开发工作流中,不过可以在软件生产的早期用于在规范阶段验证安全性。", + "page-trillion-dollar-security-section-2-2-list-title-5": "合约验证环节存在的问题", + "page-trillion-dollar-security-section-2-2-list-desc-5": "用户和开发者难以轻易评估已部署合约的可信度、安全验证程度(如代码审计),或潜在的风险。尽管已有一些解决方案,但仍存在许多问题。解决这些问题的工具尚未被广泛采用,用于统一方法的标准仍然碎片化,而且部分现有服务本身也是中心化的依赖。", + "page-trillion-dollar-security-section-2-2-list-title-6": "编译器风险​", + "page-trillion-dollar-security-section-2-2-list-desc-6": "编译器 (将人类可读的代码,如 Solidity,转换为 EVM 本身使用的字节码的软件) 可能存在缺陷,从而在智能合约部署前引入错误。目前,以太坊生态系统主要依赖 solc 编译器,这意味着任何漏洞都可能造成广泛影响。", + "page-trillion-dollar-security-section-2-2-list-title-7": "编程语言的广度与深度", + "page-trillion-dollar-security-section-2-2-list-desc-7": "尽管 Solidity 已有一个构建于之上的有深度的工具生态系统,部分开发者还是期望找到其他编程语言中更现代的​​安全特点,比如内存安全。", + "page-trillion-dollar-security-section-2-3-title": "2.3链上代码的风险评估", + "page-trillion-dollar-security-section-2-3-paragraph": "机构和企业通常使用其现有的流程、标准和要求来评估其依赖的技术和系统的安全性。然而,现有的框架往往无法直接适用于智能合约,其通常假设代码是可变的、拥有中心化的变更控制,并且具有明确的责任和法律义务。基于智能合约构建的系统有时可能会打破这些假设,这使得组织在采用以太坊和适当管理风险上面临困难。", + "page-trillion-dollar-security-section-3-intro": "以太坊的许多用例依赖于各种基础设施提供商,包括加密货币专用的基础设施 (如二层网络区块链、RPC 提供者) 和传统云服务,以及互联网基础设施 (如 AWS、CDN、DNS)。", + "page-trillion-dollar-security-section-3-paragraph-1": "这些系统既是钱包和应用层的攻击面 (例如钱包的 RPC 端点),也是以太坊协议本身的攻击面 (例如,许多验证者将其节点托管在云基础设施上)。即使底层区块链协议保持安全,私钥泄露、网络钓鱼以及缺乏细粒度访问控制仍可能导致大规模中断、盗窃或未经授权的更改。", + "page-trillion-dollar-security-section-3-1-title": "3.1Layer 2链", + "page-trillion-dollar-security-section-3-1-paragraph": "二层网络区块链 (L2) 作为以太坊的扩展,在保留以太坊主网的一些典型安全保障 (取决于其具体设计) 的同时,提供更快、费用更低的环境。然而,它们也有自己独特的攻击面,包括:", + "page-trillion-dollar-security-section-3-1-list-title-1": "多跳跨链资产的复杂性", + "page-trillion-dollar-security-section-3-1-list-desc-1": "当资产在一层网络和多个二层网络之间流动时,它们会暴露于多个合约集合中,这些合约都必须保持安全。二层网络链上的账目不匹配或停机可能会引入漏洞,这些都可能被攻击者利用。", + "page-trillion-dollar-security-section-3-1-list-title-2": "​​Rollup L2依靠着证明系统来增强状态更新的正确性。​", + "page-trillion-dollar-security-section-3-1-list-desc-2": "​​这些系统中的漏洞或配置错误可以阻止最终敲定,或允许错误更新状态的最终敲定,导致用户的资金损失。", + "page-trillion-dollar-security-section-3-1-list-title-3": "安全委员会是由关键持有者组成的团体,作为“备份”机制用于升级二层网络软件或应对某些紧急情况", + "page-trillion-dollar-security-section-3-1-list-desc-3": "安全委员会本身也存在风险,因为成员被入侵或彼此串通可能导致用户的资金面临风险或资产被冻结。", + "page-trillion-dollar-security-section-3-1-paragraph-2": "看一看L2打击来了解详细的框架及监控仪表盘,用于评估和比较L2性能与安全性。。", + "page-trillion-dollar-security-section-3-2-title": "3.2RPC和节点的基础设施", + "page-trillion-dollar-security-section-3-2-paragraph-1": "以太坊应用程序依赖少数基础设施提供商获取 RPC 访问、API 和节点服务。着包括加密货币专用的基础设施提供商,以及通常用于托管节点的传统云服务 (例如 AWS、Cloudflare、Hetzner)。", + "page-trillion-dollar-security-section-3-2-paragraph-2": "如果这些基础设施提供商下线,或者尝试审查或限制访问,许多用户可能会无法通过他们的钱包或应用程序访问以太坊,直到迁移至新的 RPC 或其他基础设施提供商。其中一些提供商过去曾暂停或关闭与区块链活动相关的帐户,这引发了人们对其作为去中心化应用程序长期可靠性的担忧。", + "page-trillion-dollar-security-section-3-3-title": "3.3DNS 层的弱点", + "page-trillion-dollar-security-section-3-3-paragraph": "域名系统 (DNS) 是互联网的基础层,但它也是中心化的,并且可能遭到入侵。许多用户通过网页域名访问应用程序,这可能受到以下风险的影响:", + "page-trillion-dollar-security-section-3-3-list-1": "DNS劫持攻击技术,攻击者植入恶意的前端界面。", + "page-trillion-dollar-security-section-3-3-list-2": "域名检获风险​​,政府或域名注册商可以检获域名。", + "page-trillion-dollar-security-section-3-3-list-3": "钓鱼域名攻击,攻击者注册相近的域名迷惑用户。", + "page-trillion-dollar-security-section-3-4-title": "3.4软件供应链和程序库", + "page-trillion-dollar-security-section-3-4-paragraph": "以太坊开发者依赖开源程序库,这些库通常直接从 npm、crates.io 或 GitHub 等服务获取。如果这些库被入侵,它们可能成为以下攻击的载体:", + "page-trillion-dollar-security-section-3-4-list-title-1": "恶意软件包的注入", + "page-trillion-dollar-security-section-3-4-list-desc-1": "攻击者通过​​入侵被广泛使用的软件包​​,或发布​​名字相似的恶意软件包​​", + "page-trillion-dollar-security-section-3-4-list-title-2": "依赖性劫持", + "page-trillion-dollar-security-section-3-4-list-desc-2": "当​​维护者们失去项目的控制权​​时,恶意攻击者趁机​​植入有害代码​​", + "page-trillion-dollar-security-section-3-4-list-title-3": "开发者入侵", + "page-trillion-dollar-security-section-3-4-list-desc-3": "安装的软件包含能让攻击者控制开发者的电脑的代码​​。", + "page-trillion-dollar-security-section-3-5-title": "3.5 前端交付服务和相关风险", + "page-trillion-dollar-security-section-3-5-paragraph": "许多以太坊应用程序通过内容分发网络 (CDN) 或基于云的托管平台 (例如 Vercel、Netlify、Cloudflare) 提供前端服务。如果这些服务受到入侵,它们可能会成为各种攻击的载体, 例如恶意 javascript 注入,攻击者向用户提供被篡改的前端。", + "page-trillion-dollar-security-section-3-6-title": "3.6 互联网服务提供商层面的审查​", + "page-trillion-dollar-security-section-3-6-paragraph-1": "互联网服务提供商 (ISP) 或国家可以通过控制底层互联网基础设施来审查对以太坊的访问。这些攻击可能包括:", + "page-trillion-dollar-security-section-3-6-list-1": "拦截或限制访问以太坊的常用端口", + "page-trillion-dollar-security-section-3-6-list-2": "屏蔽解析至以太坊相关服务的 DNS请求", + "page-trillion-dollar-security-section-3-6-list-3": "对已知以太坊节点实施地域封锁或IP限制", + "page-trillion-dollar-security-section-3-6-list-4": "深度的数据包审查,识别和审查以太坊协议相关流量", + "page-trillion-dollar-security-section-3-6-paragraph-2": "如今,世界各地的威权政府已经使用许多这些基本技术来限制访问信息、抗议工具或加密货币的途径。", + "page-trillion-dollar-security-section-4-intro": "以太坊的共识协议定义了网络如何更新以太坊区块链的状态并达成一致。该协议是使以太坊成为一个值得信赖的货币、金融、身份、治理、现实世界资产等平台的基础。", + "page-trillion-dollar-security-section-4-paragraph-1": "以太坊的共识协议已经在实践中被证明是稳健的,自 2015 年首次上线以来,经过多次升级,仍然保持零停机。然而,仍然存在长期改进空间,以使系统更具弹性和安全。", + "page-trillion-dollar-security-section-4-1-title": "4.1 共识的脆弱性和恢复的风险", + "page-trillion-dollar-security-section-4-1-paragraph": "以太坊的分叉选择和最终确定性规则具有弹性,但并非无懈可击,在某些边缘情况下 (如验证者长时间分歧、客户端漏洞或网络分区),共识可能会停止或暂时分歧。在极端情况下,这可能导致验证者由于怠惰惩罚和罚没而受到连锁惩罚,进而导致验证者资本外逃。", + "page-trillion-dollar-security-section-4-2-title": "4.2客户端多样性", + "page-trillion-dollar-security-section-4-2-paragraph": "以太坊业界领先的客户端多样性保护了网络免受单一客户端漏洞的影响。然而,客户端多样性仍有改善空间,通过更多地采用少数客户端,能够进一步降低这些风险。", + "page-trillion-dollar-security-section-4-3-title": "4.3质押的中心化和池子的主导", + "page-trillion-dollar-security-section-4-3-paragraph": "大量验证者权重集中在流动性质押协议、托管服务和大型节点运营商手中。这种集中化可能会带来以下风险:", + "page-trillion-dollar-security-section-4-3-list-1": "治理掌控或影响。如果控制大量质押的实体 (或有法律权力影响这些实体的机构) 共同协作,他们可能对区块的提议和验证产生巨大影响,从而可能审查用户或影响协议升级。", + "page-trillion-dollar-security-section-4-3-list-2": "客户端选择和基础设施的设置的同质性,可以增加相关的失败风险。", + "page-trillion-dollar-security-section-4-4-title": "4.4 未被定义的社会惩罚和协调差距", + "page-trillion-dollar-security-section-4-4-paragraph": "在某些极端故障模式下,以太坊将依赖”社交惩罚“来惩处那些恶意攻击网络的验证者 (参见 6.1)。然而,用于这种惩罚的基础设施、规范和预期流程尚未完善。社区目前没有可用的既定机制来执行这一过程。", + "page-trillion-dollar-security-section-4-5-title": "4.5 经济和博弈攻击载体", + "page-trillion-dollar-security-section-4-5-paragraph": "仍然存在许多尚未被研究的潜在经济攻击载体,包括:", + "page-trillion-dollar-security-section-4-5-list-1": "悲伤攻击或惩罚性破坏。验证者可能会因非自身过错的原因而遭受损失或罚没,而是由于攻击者纯粹为了损害他人利益而采取的恶意行为。", + "page-trillion-dollar-security-section-4-5-list-2": "战略性退出或定期怠惰。验证者可能会在关键时刻故意离线或退出,以在受到最小惩罚的情况下最大化利益或扰乱共识。", + "page-trillion-dollar-security-section-4-5-list-3": "验证者和中继者的合谋。验证者之间或中继者与验证者的​​协同行为​​可以降低去中心化程度,或者抽取最大可提取价值(MEV)。", + "page-trillion-dollar-security-section-4-5-list-4": "利用最大可提取价值 (MEV),提议者-构建者分离或流动性质押设计中的边缘案例激励。相关行为者可能会操纵罕见的协议条件来获取超额的奖励。", + "page-trillion-dollar-security-section-4-6-title": "4.6量化风险", + "page-trillion-dollar-security-section-4-6-paragraph-1": "以太坊的核心密码学 (如椭圆曲线签名算法 secp256k1) 未来可能会被量子计算机破解。虽然这不是迫在眉睫的风险,但一旦出现可信的威胁,现有的钱包,合约和质押密钥可能立即面临风险。这一未来挑战削弱了以太坊对用户的长期保障。", + "page-trillion-dollar-security-section-4-6-paragraph-2": "向抗量子密码学迁移的路径 (例如通过后量子签名方案) 需要在实际需求出现前的数年就进行设计、测试,并可能应用到协议中。以太坊生态系统中的组织,包括以太坊基金会,正在积极探索这些方案并监控风险。", + "page-trillion-dollar-security-section-5-paragraph-1": "即使是理想的区块链生态系统,也会存在风险、攻击和漏洞。当出现问题时,必须有有效的系统来缓解、检测并应对问题。这里的挑战包括:", + "page-trillion-dollar-security-section-5-list-title-1": "联系受到影响的团队", + "page-trillion-dollar-security-section-5-list-desc-1": "与应用程序被入侵的团队取得联系可能很困难。这可能会导致数小时的延误,从而限制应对人员挽回资金的能力。", + "page-trillion-dollar-security-section-5-list-title-2": "​​有关组织的问题升级", + "page-trillion-dollar-security-section-5-list-desc-2": "当问题涉及某个平台 (如某个社交网络或中心化交易所) 时,如果它们没有现有的联系渠道,响应者可能会难以升级问题。", + "page-trillion-dollar-security-section-5-list-title-3": "协调多方进行响应", + "page-trillion-dollar-security-section-5-list-desc-3": "通常不清楚有多少事件响应团队在协助受影响的应用程序,这可能导致沟通不畅或资源浪费,而团队努力可能更为高效。", + "page-trillion-dollar-security-section-5-list-title-4": "缺乏监管能力", + "page-trillion-dollar-security-section-5-list-desc-4": "监控链上和链下问题可能很困难,但这能够提供早期预警并确保对威胁的迅速响应。", + "page-trillion-dollar-security-section-5-list-title-5": "获得保险", + "page-trillion-dollar-security-section-5-list-desc-5": "保险是大多数传统系统中用于减少损失的重要工具,这些系统设计货币、金融系统、身份以及其他有价值的信息。然而,目前传统金融服务为加密货币领域提供的保险选项仍然很有限。", + "page-trillion-dollar-security-section-6-intro": "以太坊的”社交层“指的是影响以太坊生态系统行为的一系列人群、组织、公司、治理流程和文化规范。该社交层本身也容易受到某些攻击或风险的影响,从而进一步影响以太坊的安全性和可靠性。", + "page-trillion-dollar-security-section-6-paragraph-1": "这些风险往往是更长期导向的,且涉及到了整个以太坊,而非单个的用户或应用的安全。", + "page-trillion-dollar-security-section-6-1-title": "6.1质押的中心化", + "page-trillion-dollar-security-section-6-1-paragraph-1": "如果控制大量质押的实体们决定串通,那么大量质押的中心化可能对整个以太坊构成风险。", + "page-trillion-dollar-security-section-6-1-paragraph-2": "这种经济上的中心化创造了捕获社会治理的潜力。如果一小群验证者掌控着绝大多数的质押,他们可以:", + "page-trillion-dollar-security-section-6-1-list-1": "协作或抵抗分叉。", + "page-trillion-dollar-security-section-6-1-list-2": "审查特定的交易或合约。", + "page-trillion-dollar-security-section-6-1-list-3": "通过威胁退出或者提出反对破坏社区共识。", + "page-trillion-dollar-security-section-6-1-paragraph-3": "如果发生这种极端情况,以太坊社区建议使用”社交惩罚“来解决问题。社交惩罚是通过链下社会共识来决定惩罚行为不当的验证者,以限制其能力。但目前尚不存在明确的规范、流程或工具来实施此类措施 (参见 4.4)。", + "page-trillion-dollar-security-section-6-2-title": "6.2脱链资产的中心化", + "page-trillion-dollar-security-section-6-2-paragraph-1": "以太坊托管了大量现实世界资产,这些资产存放在链下的银行账户或其他存款中,然后通过代表链下资产所有权的代币在链上进行交易。例如,许多大型稳定币就是以这种方式运作的。", + "page-trillion-dollar-security-section-6-2-paragraph-2": "持有链下存款的机构可能对以太坊生态系统产生影响。例如,在出现有争议的分叉或网络升级的极端情况下,大额存款者仅通过选择认可某一条链上的代币,就可以影响哪一条链被广泛接受。", + "page-trillion-dollar-security-section-6-3-title": "6.3 监管的攻击或压力", + "page-trillion-dollar-security-section-6-3-paragraph": "政府和监管机构可能会对控制以太坊堆栈关键组件的各个实体施加压力,以进行审查或干扰以太坊协议。以太坊的机构用户也可能收到这些压力的影响,从而进一步影响其用户 (例如,由于监管禁令,银行可能无法继续提供某些加密货币产品)。", + "page-trillion-dollar-security-section-6-4-title": "6.4 组织的治理的捕获", + "page-trillion-dollar-security-section-6-4-paragraph-1": "以太坊的开源治理和开发过程由多样化且全球化的团队和公司驱动,他们负责维护核心客户端软件、基础设施以及工具。", + "page-trillion-dollar-security-section-6-4-paragraph-2": "各种形式的影响(企业收购、资金依赖、关键贡献者的雇佣、现有组织内部的利益冲突)可能会逐渐改变以太坊治理的文化和优先事项。这可能导致以太坊与特定商业或外部利益趋同,而偏离社区驱动的精神和既定路线图,随着时间推移,这可能会使以太坊的中立和弹性随时间而削弱。", + "page-trillion-dollar-security-image-alt-hero": "一个展示了相互连接的区块链节点和代表安全的元素的未来主义的可视化呈现,在数字资产领域代表了万亿美元安全", + "page-trillion-dollar-security-image-alt-report": "万亿美元安全报告的封面图,展示了现代数字安全的可视化,还有区块链元素和网络连接。​" +} From 5fef42fbc4a78b8bd8d7cc785a764379c76bbad6 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:13 -0800 Subject: [PATCH 041/581] update(i18n): src/intl/zh/page-history.json --- src/intl/zh/page-history.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/intl/zh/page-history.json b/src/intl/zh/page-history.json index 588128daccc..3779557b633 100644 --- a/src/intl/zh/page-history.json +++ b/src/intl/zh/page-history.json @@ -1,7 +1,7 @@ { - "page-history-slot-number": "信标链区块编号", - "page-history-block-number": "区块编号", + "page-history-slot-number": "时隙编号", + "page-history-block-number": "区块号", "page-history-epoch-number": "时段编号", - "page-history-ethereum-org-wayback": "网站时光机上的 ethereum.org", - "page-history-eth-price": "以太币价格" + "page-history-ethereum-org-wayback": "互联网时光机上的 ethereum.org", + "page-history-eth-price": "ETH 价格" } From f8e1afbc139ae4b950dc2042347794bf3d3dab4e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:17 -0800 Subject: [PATCH 042/581] update(i18n): public/content/translations/zh/developers/tutorials/ethereum-for-web2-auth/index.md --- .../tutorials/ethereum-for-web2-auth/index.md | 886 ++++++++++++++++++ 1 file changed, 886 insertions(+) create mode 100644 public/content/translations/zh/developers/tutorials/ethereum-for-web2-auth/index.md diff --git a/public/content/translations/zh/developers/tutorials/ethereum-for-web2-auth/index.md b/public/content/translations/zh/developers/tutorials/ethereum-for-web2-auth/index.md new file mode 100644 index 00000000000..aa2a116f43a --- /dev/null +++ b/public/content/translations/zh/developers/tutorials/ethereum-for-web2-auth/index.md @@ -0,0 +1,886 @@ +--- +title: 使用以太坊进行 web2 身份验证 +description: 阅读本教程后,开发者将能够把以太坊登录 (web3) 与 SAML 登录集成。SAML 是 web2 中用于提供单点登录和其他相关服务的标准。 这允许通过以太坊签名对访问 web2 资源的请求进行身份验证,用户属性则来自认证。 +author: Ori Pomerantz +tags: [ "web2", "认证", "eas" ] +skill: beginner +lang: zh +published: 2025-04-30 +--- + +## 简介 + +[SAML](https://www.onelogin.com/learn/saml) 是 web2 中使用的一种标准,允许[身份提供者 (IdP)](https://en.wikipedia.org/wiki/Identity_provider#SAML_identity_provider) 为[服务提供者 (SP)](https://en.wikipedia.org/wiki/Service_provider_\(SAML\)) 提供用户信息。 + +在本教程中,您将学习如何将以太坊签名与 SAML 集成,以允许用户使用其以太坊钱包向尚不支持原生以太坊的 web2 服务进行身份验证。 + +请注意,本教程面向两类不同的受众: + +- 了解以太坊并需要学习 SAML 的以太坊人士 +- 了解 SAML 和 web2 身份验证并需要学习以太坊的 Web2 人士 + +因此,本教程会包含许多您已了解的介绍性材料。 您可以随意跳过。 + +### 面向以太坊人士的 SAML + +SAML 是一种中心化协议。 服务提供者 (SP) 仅在与身份提供者 (IdP) 或签署 IdP 证书的[证书颁发机构](https://www.ssl.com/article/what-is-a-certificate-authority-ca/)存在预先信任关系时,才会接受来自 IdP 的断言(例如“这是我的用户 John,他应有权执行 A、B 和 C”)。 + +例如,SP 可以是为公司提供差旅服务的旅行社,而 IdP 可以是公司的内部网站。 当员工需要预订商务差旅时,旅行社会先将他们发送至公司进行身份验证,然后才允许他们实际预订差旅。 + +![SAML 流程分步说明](./fig-01-saml.png) + +这就是浏览器、SP 和 IdP 这三个实体协商访问权限的方式。 SP 无需提前了解任何有关使用浏览器的用户的信息,只需信任 IdP 即可。 + +### 面向 SAML 人士的以太坊 + +以太坊是一个去中心化系统。 + +![以太坊登录](./fig-02-eth-logon.png) + +用户拥有私钥(通常保存在浏览器扩展程序中)。 您可以从私钥派生出公钥,再从公钥派生出 20 字节的地址。 当用户需要登录系统时,系统会要求他们使用随机数(一次性值)签署一条信息。 服务器可以验证签名是由该地址创建的。 + +![从认证中获取额外数据](./fig-03-eas-data.png) + +签名仅验证以太坊地址。 要获取其他用户属性,您通常会使用[认证](https://attest.org/)。 一份认证通常包含以下字段: + +- **认证者**,进行认证的地址 +- **接收者**,认证适用的地址 +- **数据**,被认证的数据,例如姓名、权限等。 +- **模式**,用于解释数据的模式 ID。 + +由于以太坊的去中心化特性,任何用户都可以创建认证。 认证者的身份对于确定哪些认证是可靠的至关重要。 + +## 设置 + +第一步是让 SAML SP 和 SAML IdP 能够相互通信。 + +1. 下载软件。 本文的示例软件[在 Github 上](https://github.com/qbzzt/250420-saml-ethereum)。 不同阶段存储在不同分支中,此阶段您需要 `saml-only` + + ```sh + git clone https://github.com/qbzzt/250420-saml-ethereum -b saml-only + cd 250420-saml-ethereum + pnpm install + ``` + +2. 使用自签名证书创建密钥。 这意味着该密钥本身就是其证书颁发机构,需要手动将其导入服务提供者。 有关详细信息,请参阅 [OpenSSL 文档](https://docs.openssl.org/master/man1/openssl-req/)。 + + ```sh + mkdir keys + cd keys + openssl req -new -x509 -days 365 -nodes -sha256 -out saml-sp.crt -keyout saml-sp.pem -subj /CN=sp/ + openssl req -new -x509 -days 365 -nodes -sha256 -out saml-idp.crt -keyout saml-idp.pem -subj /CN=idp/ + cd .. + ``` + +3. 启动服务器(SP 和 IdP) + + ```sh + pnpm start + ``` + +4. 浏览到 SP 的 URL [http://localhost:3000/](http://localhost:3000/),然后单击按钮重定向到 IdP(端口 3001)。 + +5. 向 IdP 提供您的电子邮件地址,然后单击**登录服务提供者**。 您会看到您被重定向回服务提供者(端口 3000),并且它通过您的电子邮件地址识别了您。 + +### 详细说明 + +以下是分步说明: + +![没有以太坊的常规 SAML 登录](./fig-04-saml-no-eth.png) + +#### src/config.mts + +此文件包含身份提供者和服务提供者的配置。 通常这两者是不同的实体,但为了简单起见,我们可以在这里共享代码。 + +```typescript +const fs = await import("fs") + +const protocol="http" +``` + +我们目前只是在测试,所以使用 HTTP 没问题。 + +```typescript +export const spCert = fs.readFileSync("keys/saml-sp.crt").toString() +export const idpCert = fs.readFileSync("keys/saml-idp.crt").toString() +``` + +读取公钥,公钥通常对两个组件都可用(可以直接信任,也可以由受信任的证书颁发机构签名)。 + +```typescript +export const spPort = 3000 +export const spHostname = "localhost" +export const spDir = "sp" + +export const idpPort = 3001 +export const idpHostname = "localhost" +export const idpDir = "idp" + +export const spUrl = `${protocol}://${spHostname}:${spPort}/${spDir}` +export const idpUrl = `${protocol}://${idpHostname}:${idpPort}/${idpDir}` +``` + +两个组件的 URL。 + +```typescript +export const spPublicData = { +``` + +服务提供者的公开数据。 + +```typescript + entityID: `${spUrl}/metadata`, +``` + +按照惯例,在 SAML 中,`entityID` 是实体的元数据所在的 URL。 此元数据对应于此处的公共数据,但其格式为 XML。 + +```typescript + wantAssertionsSigned: true, + authnRequestsSigned: false, + signingCert: spCert, + allowCreate: true, + assertionConsumerService: [{ + Binding: 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', + Location: `${spUrl}/assertion`, + }] + } +``` + +对我们来说,最重要的定义是 `assertionConsumerServer`。 它意味着,要向服务提供者断言某事(例如,“向您发送此信息的用户是 somebody@example.com”),我们需要使用 [HTTP POST](https://www.w3schools.com/tags/ref_httpmethods.asp) 到 URL `http://localhost:3000/sp/assertion`。 + +```typescript +export const idpPublicData = { + entityID: `${idpUrl}/metadata`, + signingCert: idpCert, + wantAuthnRequestsSigned: false, + singleSignOnService: [{ + Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + Location: `${idpUrl}/login` + }], + singleLogoutService: [{ + Binding: "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", + Location: `${idpUrl}/logout` + }], + } +``` + +身份提供者的公共数据是类似的。 它指定要登录用户,您需要 POST 到 `http://localhost:3001/idp/login`,要注销用户,则 POST 到 `http://localhost:3001/idp/logout`。 + +#### src/sp.mts + +这是实现服务提供者的代码。 + +```typescript +import * as config from "./config.mts" +const fs = await import("fs") +const saml = await import("samlify") +``` + +我们使用 [`samlify`](https://www.npmjs.com/package/samlify) 程序库来实现 SAML。 + +```typescript +import * as validator from "@authenio/samlify-node-xmllint" +saml.setSchemaValidator(validator) +``` + +`samlify` 程序库需要一个包来验证 XML 是否正确、是否使用预期的公钥签名等。 为此,我们使用 [`@authenio/samlify-node-xmllint`](https://www.npmjs.com/package/@authenio/samlify-node-xmllint)。 + +```typescript +const express = (await import("express")).default +const spRouter = express.Router() +const app = express() +``` + +`express`](https://expressjs.com/) [`Router`](https://expressjs.com/en/5x/api.html#router) 是一个可以挂载在网站内部的“迷你网站”。 在本例中,我们用它将所有服务提供者的定义组合在一起。 + +```typescript +const spPrivateKey = fs.readFileSync("keys/saml-sp.pem").toString() + +const sp = saml.ServiceProvider({ + privateKey: spPrivateKey, + ...config.spPublicData +}) +``` + +服务提供者自身的表示是所有的公共数据以及用于签署信息的私钥。 + +```typescript +const idp = saml.IdentityProvider(config.idpPublicData); +``` + +公共数据包含服务提供者需要了解的关于身份提供者的一切信息。 + +```typescript +spRouter.get(`/metadata`, + (req, res) => res.header("Content-Type", "text/xml").send(sp.getMetadata()) +) +``` + +为了实现与其他 SAML 组件的互操作性,服务和身份提供者应在 `/metadata` 中以 XML 格式提供其公共数据(称为元数据)。 + +```typescript +spRouter.post(`/assertion`, +``` + +这是浏览器用来标识自己的页面。 断言包括用户标识符(此处我们使用电子邮件地址),并且可以包括其他属性。 这是上述序列图中步骤 7 的处理程序。 + +```typescript + async (req, res) => { + // console.log(`SAML 响应:\n${Buffer.from(req.body.SAMLResponse, 'base64').toString('utf-8')}`) +``` + +您可以使用注释掉的命令来查看断言中提供的 XML 数据。 它经过 [base64 编码](https://en.wikipedia.org/wiki/Base64)。 + +```typescript + try { + const loginResponse = await sp.parseLoginResponse(idp, 'post', req); +``` + +解析来自身份服务器的登录请求。 + +```typescript + res.send(` + + +

你好 ${loginResponse.extract.nameID}

+ + + `) + res.send(); +``` + +发送 HTML 响应,只是为了向用户显示我们已成功登录。 + +```typescript + } catch (err) { + console.error('处理 SAML 响应时出错:', err); + res.status(400).send('SAML 身份验证失败'); + } + } +) +``` + +如果失败,通知用户。 + +```typescript +spRouter.get('/login', +``` + +当浏览器尝试获取此页面时,创建一个登录请求。 这是上述序列图中步骤 1 的处理程序。 + +```typescript + async (req, res) => { + const loginRequest = await sp.createLoginRequest(idp, "post") +``` + +获取信息以发布登录请求。 + +```typescript + res.send(` + + + +``` + +此页面会自动提交表单(见下文)。 这样,用户无需执行任何操作即可被重定向。 这是上述序列图中的步骤 2。 + +```typescript +
+``` + +POST 到 `loginRequest.entityEndpoint`(身份提供者端点的 URL)。 + +```typescript + +``` + +输入名称为 `loginRequest.type` (`SAMLRequest`)。 该字段的内容是 `loginRequest.context`,它也是经过 base64 编码的 XML。 + +```typescript +
+ + + `) + } +) + +app.use(express.urlencoded({extended: true})) +``` + +[此中间件](https://expressjs.com/en/5x/api.html#express.urlencoded) 读取 [HTTP 请求](https://www.tutorialspoint.com/http/http_requests.htm)的正文。 默认情况下,express 会忽略它,因为大多数请求都不需要它。 我们需要它,因为 POST 会使用正文。 + +```typescript +app.use(`/${config.spDir}`, spRouter) +``` + +将路由器挂载在服务提供者目录 (`/sp`) 中。 + +```typescript +app.get("/", (req, res) => { + res.send(` + + + + + + `) +}) +``` + +如果浏览器尝试获取根目录,请为其提供一个指向登录页面的链接。 + +```typescript +app.listen(config.spPort, () => { + console.log(`服务提供者正在运行于 http://${config.spHostname}:${config.spPort}`) +}) +``` + +使用此 express 应用监听 `spPort`。 + +#### src/idp.mts + +这是身份提供者。 它与服务提供者非常相似,下面的解释针对的是不同的部分。 + +```typescript +const xmlParser = new (await import("fast-xml-parser")).XMLParser( + { + ignoreAttributes: false, // 保留属性 + attributeNamePrefix: "@_", // 属性前缀 + } +) +``` + +我们需要读取并理解从服务提供者收到的 XML 请求。 + +```typescript +const getLoginPage = requestId => ` +``` + +此函数创建带有自动提交表单的页面,该页面在上述序列图的步骤 4 中返回。 + +```typescript + + + 登录页面 + + +

登录页面

+
+ + 电子邮件地址: +
+ +``` + +我们发送给服务提供者两个字段: + +1. 我们正在响应的 `requestId`。 +2. 用户标识符(我们目前使用用户提供的电子邮件地址)。 + +```typescript +
+ + + +const idpRouter = express.Router() + +idpRouter.post("/loginSubmitted", async (req, res) => { + const loginResponse = await idp.createLoginResponse( +``` + +这是上述序列图中步骤 5 的处理程序。 [`idp.createLoginResponse`](https://github.com/tngan/samlify/blob/master/src/entity-idp.ts#L73-L125) 创建登录响应。 + +```typescript + sp, + { + authnContextClassRef: 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport', + audience: sp.entityID, +``` + +受众是服务提供者。 + +```typescript + extract: { + request: { + id: req.body.requestId + } + }, +``` + +从请求中提取的信息。 我们在请求中关心的唯一参数是 requestId,它让服务提供者能够匹配请求及其响应。 + +```typescript + signingKey: { privateKey: idpPrivateKey, publicKey: config.idpCert } // 确保签名 +``` + +我们需要 `signingKey` 来获取签署响应的数据。 服务提供者不信任未签名的请求。 + +```typescript + }, + "post", + { + email: req.body.email +``` + +这是我们发送回服务提供者的包含用户信息的字段。 + +```typescript + } + ); + + res.send(` + + + + +
+ +
+ + + `) +}) +``` + +同样,使用自动提交的表单。 这是上述序列图中的步骤 6。 + +```typescript + +// 用于登录请求的 IdP 端点 +idpRouter.post(`/login`, +``` + +这是接收来自服务提供者的登录请求的端点。 这是上述序列图中的步骤 3 的处理程序。 + +```typescript + async (req, res) => { + try { + // 权宜之计,因为我无法让 parseLoginRequest 工作。 + // const loginRequest = await idp.parseLoginRequest(sp, 'post', req) + const samlRequest = xmlParser.parse(Buffer.from(req.body.SAMLRequest, 'base64').toString('utf-8')) + res.send(getLoginPage(samlRequest["samlp:AuthnRequest"]["@_ID"])) +``` + +我们应该能够使用 [`idp.parseLoginRequest`](https://github.com/tngan/samlify/blob/master/src/entity-idp.ts#L127-L144) 来读取身份验证请求的 ID。 然而,我无法使其正常工作,也不值得花太多时间在这上面,所以我只是用了一个[通用的 XML 解析器](https://www.npmjs.com/package/fast-xml-parser)。 我们需要的信息是 `` 标签内的 `ID` 属性,它位于 XML 的顶层。 + +## 使用以太坊签名 + +既然我们能将用户身份发送到服务提供者,下一步就是以可信的方式获取用户身份。 Viem 允许我们直接向钱包请求用户地址,但这相当于向浏览器请求信息。 我们无法控制浏览器,所以我们不能自动信任从它那里得到的响应。 + +因此,IdP 将向浏览器发送一个字符串以供签名。 如果浏览器中的钱包签署了这个字符串,就意味着它确实是那个地址(也就是说,它知道与该地址对应的私钥)。 + +要看到此操作的实际效果,请停止现有的 IdP 和 SP,然后运行以下命令: + +```sh +git checkout eth-signatures +pnpm install +pnpm start +``` + +然后浏览[到 SP](http://localhost:3000) 并按照指示操作。 + +请注意,此时我们不知道如何从以太坊地址获取电子邮件地址,因此我们向 SP 报告 `@bad.email.address`。 + +### 详细说明 + +更改在前一个图中的步骤 4-5。 + +![带以太坊签名的 SAML](./fig-05-saml-w-signature.png) + +我们唯一更改的文件是 `idp.mts`。 以下是更改的部分。 + +```typescript +import { v4 as uuidv4 } from 'uuid' +import { verifyMessage } from 'viem' +``` + +我们需要这两个额外的程序库。 我们使用 [`uuid`](https://www.npmjs.com/package/uuid) 来创建[随机数](https://en.wikipedia.org/wiki/Cryptographic_nonce)值。 值本身不重要,重要的是它只使用一次。 + +[`viem`](https://viem.sh/) 程序库让我们能够使用以太坊定义。 这里我们需要它来验证签名是否确实有效。 + +```typescript +const loginPrompt = "要访问服务提供者,请签署此随机数:" +``` + +钱包会请求用户允许签署该信息。 只包含随机数的信息可能会让用户感到困惑,所以我们加入了这个提示。 + +```typescript +// 在此处保留 requestID +let nonces = {} +``` + +我们需要请求信息才能对其做出响应。 我们可以在请求时发送它(步骤 4),然后在响应时接收它(步骤 5)。 然而,我们不能信任从浏览器获得的信息,因为它可能受恶意用户的控制。 所以最好将其存储在这里,以随机数作为密钥。 + +请注意,为简单起见,我们在此将其作为变量。 然而,这有几个缺点: + +- 我们容易受到拒绝服务攻击。 恶意用户可以多次尝试登录,从而耗尽我们的内存。 +- 如果 IdP 进程需要重新启动,我们就会丢失现有的值。 +- 我们无法在多个进程之间进行负载均衡,因为每个进程都有自己的变量。 + +在生产系统上,我们会使用数据库并实现某种过期机制。 + +```typescript +const getSignaturePage = requestId => { + const nonce = uuidv4() + nonces[nonce] = requestId +``` + +创建一个随机数,并存储 `requestId` 以备将来使用。 + +```typescript + return ` + + + + + +

请签名

+ +
+ + + +` +} +``` + +其余的只是标准 HTML。 + +```typescript +idpRouter.get("/signature/:nonce/:account/:signature", async (req, res) => { +``` + +这是序列图中的步骤 5 的处理程序。 + +```typescript + const requestId = nonces[req.params.nonce] + if (requestId === undefined) { + res.send("错误的随机数") + return ; + } + + nonces[req.params.nonce] = undefined +``` + +获取请求 ID,并从 `nonces` 中删除该随机数以确保其不能被重用。 + +```typescript + try { +``` + +因为签名无效的方式有很多,所以我们将此包装在 `try ...` 中。 `catch` 区块以捕获任何抛出的错误。 + +```typescript + const validSignature = await verifyMessage({ + address: req.params.account, + message: `${loginPrompt}${req.params.nonce}`, + signature: req.params.signature + }) +``` + +使用 [`verifyMessage`](https://viem.sh/docs/actions/public/verifyMessage#verifymessage) 实现序列图中的步骤 5.5。 + +```typescript + if (!validSignature) + throw("签名无效") + } catch (err) { + res.send("错误:" + err) + return ; + } +``` + +处理程序的其余部分与我们之前在 `/loginSubmitted` 处理程序中所做的相同,只有一个小改动。 + +```typescript + const loginResponse = await idp.createLoginResponse( + . + . + . + { + email: req.params.account + "@bad.email.address" + } + ); +``` + +我们没有实际的电子邮件地址(我们将在下一节中获取),因此暂时返回以太坊地址,并明确标记它不是电子邮件地址。 + +```typescript +// 用于登录请求的 IdP 端点 +idpRouter.post(`/login`, + async (req, res) => { + try { + // 权宜之计,因为我无法让 parseLoginRequest 工作。 + // const loginRequest = await idp.parseLoginRequest(sp, 'post', req) + const samlRequest = xmlParser.parse(Buffer.from(req.body.SAMLRequest, 'base64').toString('utf-8')) + res.send(getSignaturePage(samlRequest["samlp:AuthnRequest"]["@_ID"])) + } catch (err) { + console.error('处理 SAML 响应时出错:', err); + res.status(400).send('SAML 身份验证失败'); + } + } +) +``` + +在步骤 3 的处理程序中,现在使用 `getSignaturePage` 代替 `getLoginPage`。 + +## 获取电子邮件地址 + +下一步是获取服务提供者请求的标识符,即电子邮件地址。 为此,我们使用[以太坊认证服务 (EAS)](https://attest.org/)。 + +获取认证的最简单方法是使用 [GraphQL 应用程序接口](https://docs.attest.org/docs/developer-tools/api)。 我们使用以下查询: + +``` +query GetAttestationsByRecipient { + attestations( + where: { + recipient: { equals: "${getAddress(ethAddr)}" } + schemaId: { equals: "0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977" } + } + take: 1 + ) { + data + id + attester + } +} +``` + +此 [`schemaId`](https://optimism.easscan.org/schema/view/0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977) 仅包含一个电子邮件地址。 此查询请求此模式的认证。 认证的主题称为 `recipient`。 它总是一个以太坊地址。 + +警告:我们在这里获取认证的方式存在两个安全问题。 + +- 我们访问的 API 端点 `https://optimism.easscan.org/graphql` 是一个中心化组件。 我们可以获取 `id` 属性,然后在链上进行查找以验证认证是否真实,但 API 端点仍然可以通过不告知我们某些认证来对其进行审查。 + + 这个问题并非无法解决,我们可以运行自己的 GraphQL 端点,并从链上日志中获取认证,但这对于我们的目的来说过于繁琐。 + +- 我们不查看认证者身份。 任何人都可以向我们提供虚假信息。 在实际实现中,我们会有一组受信任的认证者,并且只查看他们的认证。 + +要看到此操作的实际效果,请停止现有的 IdP 和 SP,然后运行以下命令: + +```sh +git checkout email-address +pnpm install +pnpm start +``` + +然后提供您的电子邮件地址。 您有两种方法可以做到这一点: + +- 使用私钥导入钱包,并使用测试私钥 `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80`。 + +- 为您的电子邮件地址添加认证: + + 1. 在认证浏览器中浏览到[该模式](https://optimism.easscan.org/schema/view/0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977)。 + + 2. 单击**用模式认证**。 + + 3. 输入您的以太坊地址作为接收者,您的电子邮件地址作为 email address,并选择**链上**。 然后单击**创建认证**。 + + 4. 在您的钱包中批准交易。 您需要在 [Optimism 区块链](https://app.optimism.io/bridge/deposit)上有一些 ETH 来支付燃料费。 + +无论哪种方式,完成后请浏览至 [http://localhost:3000](http://localhost:3000) 并按照指示操作。 如果您导入了测试私钥,您收到的电子邮件将是 `test_addr_0@example.com`。 如果您使用自己的地址,它应该是您认证的任何内容。 + +### 详细说明 + +![从以太坊地址到电子邮件的转换](./fig-06-saml-sig-n-email.png) + +新的步骤是 GraphQL 通信,即步骤 5.6 和 5.7。 + +同样,以下是 `idp.mts` 的更改部分。 + +```typescript +import { GraphQLClient } from 'graphql-request' +import { SchemaEncoder } from '@ethereum-attestation-service/eas-sdk' +``` + +导入我们需要的程序库。 + +```typescript +const graphqlEndpointUrl = "https://optimism.easscan.org/graphql" +``` + +[每个区块链都有一个单独的端点](https://docs.attest.org/docs/developer-tools/api)。 + +```typescript +const graphqlClient = new GraphQLClient(graphqlEndpointUrl, { fetch }) +``` + +创建一个新的 `GraphQLClient` 客户端,我们可以用它来查询端点。 + +```typescript +const graphqlSchema = 'string emailAddress' +const graphqlEncoder = new SchemaEncoder(graphqlSchema) +``` + +GraphQL 只给我们一个包含字节的不透明数据对象。 为了理解它,我们需要模式。 + +```typescript +const ethereumAddressToEmail = async ethAddr => { +``` + +一个从以太坊地址转换到电子邮件地址的函数。 + +```typescript + const query = ` + query GetAttestationsByRecipient { +``` + +这是一个 GraphQL 查询。 + +```typescript + 认证( +``` + +我们正在寻找认证。 + +```typescript + where: { + recipient: { equals: "${getAddress(ethAddr)}" } + schemaId: { equals: "0xfa2eff59a916e3cc3246f9aec5e0ca00874ae9d09e4678e5016006f07622f977" } + } +``` + +我们想要的认证是那些在我们模式中,接收者是 `getAddress(ethAddr)` 的认证。 [`getAddress`](https://viem.sh/docs/utilities/getAddress#getaddress) 函数确保我们的地址具有正确的[校验和](https://github.com/ethereum/ercs/blob/master/ERCS/erc-55.md)。 这对于 GraphQL 来说是必要的,因为它是大小写敏感的。 "0xBAD060A7"、"0xBad060A7" 和 "0xbad060a7" 是不同的值。 + +```typescript + take: 1 +``` + +无论我们找到多少认证,我们都只想要第一个。 + +```typescript + ) { + data + id + attester + } + }` +``` + +我们想要接收的字段。 + +- `attester`:提交认证的地址。 通常这用于决定是否信任认证。 +- `id`:认证 ID。 您可以使用此值[在链上读取认证](https://optimism.blockscout.com/address/0x4200000000000000000000000000000000000021?tab=read_proxy&source_address=0x4E0275Ea5a89e7a3c1B58411379D1a0eDdc5b088#0xa3112a64)以验证 GraphQL 查询中的信息是否正确。 +- `data`:模式数据(在本例中为电子邮件地址)。 + +```typescript + const queryResult = await graphqlClient.request(query) + + if (queryResult.attestations.length == 0) + return "no_address@available.is" +``` + +如果没有认证,则返回一个明显不正确但对服务提供者来说看似有效的值。 + +```typescript + const attestationDataFields = graphqlEncoder.decodeData(queryResult.attestations[0].data) + return attestationDataFields[0].value.value +} +``` + +如果存在值,则使用 `decodeData` 解码数据。 我们不需要它提供的元数据,只需要值本身。 + +```typescript + const loginResponse = await idp.createLoginResponse( + sp, + { + . + . + . + }, + "post", + { + email: await ethereumAddressToEmail(req.params.account) + } + ); +``` + +使用新函数获取电子邮件地址。 + +## 去中心化呢? + +在这种配置下,只要我们依赖可信的认证者进行以太坊到电子邮件地址的映射,用户就无法冒充他们不是的人。 然而,我们的身份提供者仍然是一个中心化组件。 任何拥有身份提供者私钥的人都可以向服务提供者发送虚假信息。 + +可能有一个使用[多方计算 (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) 的解决方案。 我希望在未来的教程中写到它。 + +## 总结 + +采用像以太坊签名这样的登录标准面临着一个“先有鸡还是先有蛋”的问题。 服务提供商希望吸引尽可能广泛的市场。 用户希望能够访问服务,而不必担心支持他们的登录标准。 +创建适配器,例如以太坊 IdP,可以帮助我们克服这个障碍。 + +[点击此处查看我的更多作品](https://cryptodocguy.pro/)。 From b29b8c6d36be9ae50253ac5a304b39d4173f9ed2 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:20 -0800 Subject: [PATCH 043/581] update(i18n): public/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md --- .../index.md | 119 ++++++++++-------- 1 file changed, 65 insertions(+), 54 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/public/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md index 6b874fe3699..a1b2a4f62d8 100644 --- a/public/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md +++ b/public/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md @@ -1,9 +1,8 @@ --- title: 离线数据完整性的默克尔证明 -description: 在链上确保链下数据的完整性 +description: 在链上确保主要存储在链下的数据的数据完整性 author: Ori Pomerantz -tags: - - "storage" +tags: [ "存储" ] skill: advanced lang: zh published: 2021-12-30 @@ -11,15 +10,21 @@ published: 2021-12-30 ## 简介 {#introduction} -理想的情况下,我们想要将所有东西存储在以太坊存储器中。这些数据存储于数以千计的计算机中 且有极高的可用性(数据不会被审查)和完整性(不能在未经授权的情况下修改数据), 但存储一个 32 字节的词一般需要花费 20,000 燃料。 在撰写此教程时,该费用 等于 6.60 美元。 每字节 21 美分对许多应用程序来说都过于昂贵。 +理想的情况下,我们想要将所有东西存储在以太坊存储器中。这些数据存储于数以千计的计算机中 +且有极高的可用性(数据不会被审查)和完整性(不能在未经授权的情况下修改数据), +但存储一个 32 字节的词一般需要花费 20,000 燃料。 在撰写此教程时,该费用 +等于 6.60 美元。 每字节 21 美分对许多应用程序来说都过于昂贵。 -为了解决这个问题,以太坊生态系统开发了[许多以去中心化方式存储数据的 代替方法](/developers/docs/storage/)。 通常情况下, 需要在可用性与价格之间进行取舍。 然而,完整性通常可以得到保证。 +为了解决这个问题,以太坊生态系统开发了许多以去中心化 +方式存储数据的替代方法。 通常情况下, +需要在可用性与价格之间进行取舍。 然而,完整性通常可以得到保证。 -本篇文章中,你将学习**如何**在以下情况下确保数据的完整性:不将数据存储在区块链上,而是使用 [Merkle 证明](https://computersciencewiki.org/index.php/Merkle_proof)。 +在本文中,你将学习**如何**使用 +[默克尔证明](https://computersciencewiki.org/index.php/Merkle_proof),在不将数据存储在区块链上的情况下确保数据完整性。 ## 工作原理 {#how-does-it-work} -理论上,我们只需要存储链上数据的哈希值,然后将所有数据发送到需要这些数据的交易中。 但是,这会非常昂贵。 1 字节的数据通过交易发送的成本约 16 个燃料,目前约 0.5 美分,或每千字节约 5 美元。 每兆字节 5,000 美元,这对于许多应用程序来说仍然太昂贵,而且还没有加上对数据进行哈希计算的费用。 +理论上,我们只需将数据的哈希存储在链上,并在需要它的交易中发送所有数据。 但是,这会非常昂贵。 1 字节的数据通过交易发送的成本约 16 个燃料,目前约 0.5 美分,或每千字节约 5 美元。 每兆字节 5,000 美元,这对于许多应用程序来说仍然太昂贵,而且还没有加上对数据进行哈希计算的费用。 解决办法是反复对不同的数据子集进行哈希计算。对于不需要发送的数据,只要发送哈希值即可。 默克尔树是一种树型数据结构,每个节点值都是其下方节点的哈希值: @@ -27,15 +32,15 @@ published: 2021-12-30 根哈希是唯一需要存储在链上的部分。 为了证明一个特定值,你需要提供所有与之合并才能获取根的哈希值。 例如,要证明 `C`,你需要提供 `D`、`H(A-B)` 和 `H(E-H)`。 -![C 值证明](proof-c.png) +![C 值的证明](proof-c.png) ## 实现 {#implementation} -[此处提供示例代码](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity)。 +[此处提供了示例代码](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity)。 -### 链下代码 {#off-chain-code} +### 链下代码 {#offchain-code} -在这篇文章中,我们使用 JavaScript 进行链下计算。 大多数去中心化应用程序的 JavaScript 中都有链下组件。 +在本文中,我们使用 JavaScript 进行链下计算。 大多数去中心化应用程序的 JavaScript 中都有其链下组件。 #### 创建默克尔根 {#creating-the-merkle-root} @@ -45,44 +50,48 @@ published: 2021-12-30 const ethers = require("ethers") ``` -[我们使用源自以太币包的哈希函数](https://docs.ethers.io/v5/api/utils/hashing/#utils-keccak256)。 +[我们使用 ethers 包中的哈希函数](https://docs.ethers.io/v5/api/utils/hashing/#utils-keccak256)。 ```javascript -// The raw data whose integrity we have to verify. The first two bytes a -// are a user identifier, and the last two bytes the amount of tokens the -// user owns at present. +// 需要我们验证其完整性的原始数据。前两个字节 +// 是用户标识符,后两个字节是该 +// 用户当前拥有的代币数量。 const dataArray = [ 0x0bad0010, 0x60a70020, 0xbeef0030, 0xdead0040, 0xca110050, 0x0e660060, 0xface0070, 0xbad00080, 0x060d0091, ] ``` -例如,将每条数据编码为单个 256 位整数,并以非 JSON 的格式存储。 然而,这意味着在提取合约中的数据时,可以大大减少处理工作,从而显著降低了燃料成本。 [你可以在链上读取 JSON 格式的数据](https://github.com/chrisdotn/jsmnSol),但请尽量避免这么做。 +例如,将每条数据编码为单个 256 位整数,并以非 JSON 的格式存储。 然而,这意味着在提取合约中的数据时,可以大大减少处理工作,从而显著降低了燃料成本。 [你可以在链上读取 JSON](https://github.com/chrisdotn/jsmnSol),但如果可以避免,最好不要这么做。 ```javascript -// The array of hash values, as BigInts +// 作为 BigInt 的哈希值数组 const hashArray = dataArray ``` 在此例中,我们的数据开始就是 256 位,因此不需要处理。 如果我们使用更复杂的数据结构,如字符串,我们需要确保先取数据的哈希值并获取哈希数组。 请注意,还有一个原因是我们不关心用户是否知道其他用户的信息。 否则,我们将不得不进行散列计算,使用户 1 不知道用户 0 的值,用户 2 不知道用户 3 的值,等等。 ```javascript -// Convert between the string the hash function expects and the -// BigInt we use everywhere else. +// 在哈希函数所需的字符串与 +// 我们在其他任何地方使用的 BigInt 之间进行转换。 const hash = (x) => BigInt(ethers.utils.keccak256("0x" + x.toString(16).padStart(64, 0))) ``` -以太币哈希函数的预期结果是一个带十六进制数字的 JavaScript 字符串,如 `0x60A7`,并用另一个相同结构的字符串响应。 然而,对于代码的其他部分,使用 `BigInt` 类型更为容易,所以我们将转换为一个十六进制字符串,然后再转回 BigInt。 +ethers 哈希函数需要一个包含十六进制数的 JavaScript 字符串(例如 `0x60A7`),并返回另一个具有相同结构的字符串。 但是,对于代码的其余部分,使用 `BigInt` 会更简单,因此我们将其转换为十六进制字符串,然后再转换回来。 ```javascript -// Symmetrical hash of a pair so we won't care if the order is reversed. +// 对称哈希一对值,这样我们就不必关心顺序是否颠倒。 const pairHash = (a, b) => hash(hash(a) ^ hash(b)) ``` -此函数是对称的(a [xor](https://en.wikipedia.org/wiki/Exclusive_or) b 的哈希值)。 这意味着在检查默克尔证明时,我们不必烦恼是将证明中的值放在计算值之前还是之后。 默克尔证明在链上进行检查,所以链上的步骤越少越好。 +这个函数是对称的(a [xor](https://en.wikipedia.org/wiki/Exclusive_or) b 的哈希)。 这意味着在检查默克尔证明时,我们不必烦恼是将证明中的值放在计算值之前还是之后。 默克尔证明在链上进行检查,所以链上的操作越少越好。 -警告: 密码学没有表面看起来那么容易。 本文的初始版本提供了哈希函数 `hash(a^b)`。 那是一个**糟糕的**想法,因为这意味着如果知道 `a` 和 `b` 的合法值,则可以使用 `b' = a^b^a'` 证明任何所需的 `a'` 值。 使用此函数,就必须计算 `b'`,令 `hash(a') ^ hash(b')` 等于一个已知值(通往根的下一个分支),这要困难得多。 +警告: +密码学没有表面看起来那么容易。 +本文的初始版本使用了哈希函数 `hash(a^b)`。 +那是一个**糟糕**的想法,因为这意味着如果你知道 `a` 和 `b` 的合法值,就可以使用 `b' = a^b^a'` 来证明任何你想要的 `a'` 值。 +使用这个函数,你必须计算 `b'`,使得 `hash(a') ^ hash(b')` 等于一个已知值(通往根节点的下一个分支),这就困难得多了。 ```javascript // The value to denote that a certain branch is empty, doesn't @@ -95,11 +104,11 @@ const empty = 0n ![缺少分支的默克尔树](merkle-empty-hash.png) ```javascript -// Calculate one level up the tree of a hash array by taking the hash of -// each pair in sequence +// 通过按顺序获取每对值的哈希, +// 计算哈希数组在树中的上一层 const oneLevelUp = (inputArray) => { var result = [] - var inp = [...inputArray] // To avoid over writing the input // Add an empty value if necessary (we need all the leaves to be // paired) + var inp = [...inputArray] // 避免覆盖输入 // 如有必要,添加一个空值(我们需要所有的叶子都 // 配对) if (inp.length % 2 === 1) inp.push(empty) @@ -110,13 +119,13 @@ const oneLevelUp = (inputArray) => { } // oneLevelUp ``` -此函数通过对默克尔树中当前层级的值对进行哈希处理来上升一个层级。 请注意,这不是最高效的实现。我们本来可以避免重复输入,并且只需在循环中适当地加上 `hashEmpty`,但此代码为了提高可读性进行过优化。 +此函数通过对默克尔树中当前层级的值对进行哈希处理来上升一个层级。 请注意,这不是最高效的实现,我们本可以避免复制输入,只需在循环中的适当位置添加 `hashEmpty`,但此代码为可读性进行了优化。 ```javascript const getMerkleRoot = (inputArray) => { var result - result = [...inputArray] // Climb up the tree until there is only one value, that is the // root. // // If a layer has an odd number of entries the // code in oneLevelUp adds an empty value, so if we have, for example, // 10 leaves we'll have 5 branches in the second layer, 3 // branches in the third, 2 in the fourth and the root is the fifth + result = [...inputArray] // 沿树向上,直到只剩一个值,这个值就是 // 根。 // // 如果某一层有奇数个条目, // oneLevelUp 中的代码会添加一个空值,因此如果我们有(例如) // 10 个叶子,那么第二层将有 5 个分支,第三层 // 有 3 个,第四层有 2 个,根是第五个 while (result.length > 1) result = oneLevelUp(result) @@ -126,35 +135,35 @@ const getMerkleRoot = (inputArray) => { 要到达根,一直上升到只剩下一个值的层级。 -#### 创建一个默克尔证明 {#creating-a-merkle-proof} +#### 创建默克尔证明 {#creating-a-merkle-proof} 默克尔证明是与要证明的值一起哈希处理以便返回默克尔根的值。 要证明的值往往来自其他数据,因此这里更愿意单独提供,而不是作为代码的一部分。 ```javascript -// A merkle proof consists of the value of the list of entries to -// hash with. Because we use a symmetrical hash function, we don't -// need the item's location to verify the proof, only to create it +// 默克尔证明包含与之哈希的条目 +// 列表的值。因为我们使用了对称哈希函数,我们不 +// 需要条目的位置来验证证明,只需要用它来创建证明 const getMerkleProof = (inputArray, n) => {     var result = [], currentLayer = [...inputArray], currentN = n -    // Until we reach the top +    // 直到我们到达顶部     while (currentLayer.length > 1) { -        // No odd length layers +        // 没有奇数长度的层         if (currentLayer.length % 2)             currentLayer.push(empty)         result.push(currentN % 2 -               // If currentN is odd, add with the value before it to the proof +               // 如果 currentN 是奇数,则将其之前的值添加到证明中             ? currentLayer[currentN-1] -               // If it is even, add the value after it +               // 如果是偶数,则添加其后的值             : currentLayer[currentN+1]) ``` -我们对 `(v[0],v[1])`、`(v[2],v[3])` 等进行哈希处理。 因此,对于偶数值,我们需要下一个值,而奇数值则需要上一个值。 +我们对 `(v[0],v[1])`、`(v[2],v[3])` 等进行哈希。 因此,对于偶数值,我们需要下一个值,而奇数值则需要上一个值。 ```javascript -        // Move to the next layer up +        // 移动到上一层         currentN = Math.floor(currentN/2)         currentLayer = oneLevelUp(currentLayer)     }   // while currentLayer.length > 1 @@ -163,9 +172,9 @@ const getMerkleProof = (inputArray, n) => { }   // getMerkleProof ``` -### 链上代码 {#on-chain-code} +### 链上代码 {#onchain-code} -最后,我们有核查证明的代码。 链上代码用 [Solidity](https://docs.soliditylang.org/en/v0.8.11/) 语言编写。 优化在这里更为重要,因为燃料费相对昂贵。 +最后,我们有核查证明的代码。 链上代码是用 [Solidity](https://docs.soliditylang.org/en/v0.8.11/) 编写的。 优化在这里更为重要,因为燃料费相对昂贵。 ```solidity //SPDX-License-Identifier: Public Domain @@ -174,7 +183,7 @@ pragma solidity ^0.8.0; import "hardhat/console.sol"; ``` -编写此代码时,我使用的是[安全帽开发环境](https://hardhat.org/),它使我们在开发过程中可以获得 [Solidity 的控制台输出](https://hardhat.org/tutorial/debugging-with-hardhat-network.html)。 +我使用 [Hardhat 开发环境](https://hardhat.org/) 编写了此代码,该环境允许我们在开发时从 [Solidity 获取控制台输出](https://hardhat.org/tutorial/debugging-with-hardhat-network.html)。 ```solidity @@ -185,15 +194,15 @@ contract MerkleProof {       return merkleRoot;     } -    // Extremely insecure, in production code access to -    // this function MUST BE strictly limited, probably to an -    // owner +    // 极不安全,在生产代码中,对 +    // 此函数的访问权限必须受到严格限制,可能仅限于 +    // 所有者     function setRoot(uint _merkleRoot) external {       merkleRoot = _merkleRoot;     }   // setRoot ``` -为默克尔根设置和获取函数。 在生产系统中,让每个人都更新默克尔根是一个_非常糟糕的主意_。 这里这样做是为了简化示例代码。 **不要在数据完整性非常重要的系统上执行**。 +为默克尔根设置和获取函数。 在生产系统中,允许任何人更新默克尔根是一个_极其糟糕的主意_。 这里这样做是为了简化示例代码。 **不要在数据完整性至关重要的系统上这样做**。 ```solidity     function hash(uint _a) internal pure returns(uint) { @@ -205,12 +214,12 @@ contract MerkleProof {     } ``` -此函数生成一个配对哈希值。 它只是将 `hash` 和 `pairHash` 函数的 JavaScript 代码转变为 Solidity。 +此函数生成一个配对哈希值。 这只是 `hash` 和 `pairHash` 的 JavaScript 代码的 Solidity 翻译版本。 -**注意:**这是又一次对可读性的优化。 根据[函数定义](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm),也许可以将数据存储为 [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) 类型值并避免转换。 +\*\*注意:\*\*这是另一个为可读性而优化的例子。 根据[函数定义](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm),或许可以将数据存储为 [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) 值,从而避免转换。 ```solidity -    // Verify a Merkle proof +    // 验证默克尔证明     function verifyProof(uint _value, uint[] calldata _proof)         public view returns (bool) {       uint temp = _value; @@ -226,16 +235,18 @@ contract MerkleProof { }  // MarkleProof ``` -用数学符号表示,默克尔证明的验证看起来像这样:`H(proof_n, H(proof_n-1, H(proof_n-2, ... H(proof_1, H(proof_0, value))...)))`. 此代码实现了默克尔证明。 +用数学符号表示,默克尔证明验证如下所示:`H(proof_n, H(proof_n-1, H(proof_n-2, ...` H(proof_1, H(proof_0, value))...)))\`。 此代码实现了默克尔证明。 -## 默克尔证明和卷叠很难混淆 {#merkle-proofs-and-rollups} +## 默克尔证明与卷叠 {#merkle-proofs-and-rollups} -默克尔证明对[卷叠](/developers/docs/scaling/#rollups)的作用不大。 原因在于,卷叠将所有交易数据写入一层网络,但在二层网络进行处理。 发送交易的默克尔证明的成本平均达到每个层级 638 个燃料(目前,如果字节不为零,调用数据中一个字节花费 16 个燃料,如果为零,则花费 4 个燃料)。 如果我们的数据包含 1024 个字,默克尔证明需要 10 个层级,或者总共 6380 个燃料。 +默克尔证明不能与[卷叠](/developers/docs/scaling/#rollups)很好地配合使用。 原因在于,卷叠将所有交易数据写入一层网络,但在二层网络进行处理。 发送交易的默克尔证明的成本平均达到每个层级 638 个燃料(目前,如果字节不为零,调用数据中一个字节花费 16 个燃料,如果为零,则花费 4 个燃料)。 如果我们的数据包含 1024 个字,默克尔证明需要 10 个层级,或者总共 6380 个燃料。 -举一个[乐观卷叠](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m)的示例,写入一层网络的燃料成本约为 100 gwei,写入二层网络的成本为 0.001 gwei(这里按正常价格计,成本可能因为网络拥塞而增加)。 所以对于一层网络上 1 个燃料的成本,我们可能需要在二层网络上花费 10 万个燃料的处理费用。 假定我们不用重写存储,这意味着我们可以用一个一层网络燃料的价格将大约五个字写入二层网络的存储中。 对于单个默克尔证明,我们可以将全部 1024 个字写入存储(假定它们可以在链上计算出来,而不是在交易中提供),并且还剩下大部分燃料。 +以 [Optimism](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m) 为例,写入 L1 的燃料成本约为 100 gwei,写入 L2 的燃料成本为 0.001 gwei(这是正常价格,拥堵时可能会上涨)。 所以对于一层网络上 1 个燃料的成本,我们可能需要在二层网络上花费 10 万个燃料的处理费用。 假定我们不用重写存储,这意味着我们可以用一个一层网络燃料的价格将大约五个字写入二层网络的存储中。 对于单个默克尔证明,我们可以将全部 1024 个字写入存储(假设它们一开始就可以在链上计算,而不是在交易中提供),并且仍然有大部分燃料剩余。 -## 总结 {#conclusion} +## 结论 {#conclusion} 在现实中,你可能永远不会独立实现默克尔树。 有很多广为人知并经过审核的程序库可供使用,一般来说,最好不要自己独立实现加密基元。 但我希望你们现在能够更好地理解默克尔证明,并能够决定何时值得使用。 -请注意,虽然默克尔证明能维持_完整性_,但并不维持_可用性_。 如果数据存储方决定禁止访问,而且你不能构建默克尔树来访问你的资产,那么知道没有人可以拿走你的资产也只能作为一种小小的慰藉而已。 所以默克尔树最好和某种去中心化存储一起使用,例如星际文件系统。 +请注意,虽然默克尔证明可以保持_完整性_,但不能保持_可用性_。 如果数据存储方决定禁止访问,而且你不能构建默克尔树来访问你的资产,那么知道没有人可以拿走你的资产也只能作为一种小小的慰藉而已。 所以默克尔树最好和某种去中心化存储一起使用,例如星际文件系统。 + +[点击此处查看我的更多作品](https://cryptodocguy.pro/)。 From 07639d19fe69ef99aef9c55214f1c49f30889b68 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:23 -0800 Subject: [PATCH 044/581] update(i18n): public/content/translations/zh/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md --- .../index.md | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/zh/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md index 80ad005d282..ec3cd708de6 100644 --- a/public/content/translations/zh/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md +++ b/public/content/translations/zh/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md @@ -3,28 +3,24 @@ title: 如何在测试中模拟 Solidity 智能合约 description: 为什么应该在测试时模拟合约 author: Markus Waas lang: zh -tags: - - "solidity" - - "智能合约" - - "测试" - - "模拟" +tags: [ "Solidity", "智能合同", "测试", "模拟" ] skill: intermediate -published: 2020-05-02 +published: 2020年05月02日 source: soliditydeveloper.com sourceUrl: https://soliditydeveloper.com/mocking-contracts --- [模拟对象](https://wikipedia.org/wiki/Mock_object)是面向对象编程中的一种常见设计模式。 Mock 一词来源于古法语词“mocquer”,意为“嘲笑,取笑”,但它渐渐拥有了“模拟真实事物”的含义,这实际上也是我们在编程时所做的事情。 不要随意拿你的智能合约开玩笑,但一定要尽可能多地模拟它们。 这将使你的工作更轻松。 -## 使用模拟合约对合约进行单元测试 {#unit-testing-contracts-with-mocks} +## 用模拟对象进行合约单元测试 {#unit-testing-contracts-with-mocks} -对合约进行模拟,本质上是创建一个与该合约行为类似的副本,但开发者可以轻易控制这个副本。 通常你会拥有复杂的合约,而[你只想对合约其中一小部分进行单元测试](/developers/docs/smart-contracts/testing/)。 问题在于,如果测试这一小部分需要合约进入一个非常特别但又难以进入的状态,会怎样? +对合约进行模拟,本质上是创建一个与该合约行为类似的副本,但开发者可以轻易控制这个副本。 通常你会遇到复杂的合约,而你只想[对合约的一小部分进行单元测试](/developers/docs/smart-contracts/testing/)。 问题在于,如果测试这一小部分需要合约进入一个非常特别但又难以进入的状态,会怎样? 可以每次都编写将合约带入所需状态的复杂测试设置逻辑,也可以写一个模拟合约。 利用继承,对合约进行模拟比较容易。 只需创建继承原始合约的另一个模拟合约即可。 这时,你就可以重写模拟合约中的函数。 让我们通过一个例子来理解它。 -## 示例:私密 ERC20 合约 {#example-private-erc20} +## 示例:私有 ERC20 {#example-private-erc20} -本文使用一个在开始时提供私密时间的示例 ERC-20 合约。 合约所有者可以管理私密用户,而且只有这些用户才能在开始时接收代币。 经过特定一段时间后,所有人就都可以使用代币了。 如果你感到好奇,我们使用新 OpenZeppelin 合约(第三版)中的 [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/5.x/extending-contracts#using-hooks) 钩子进一步阐释。 +本文使用一个在开始时提供私密时间的示例 ERC-20 合约。 合约所有者可以管理私密用户,而且只有这些用户才能在开始时接收代币。 经过特定一段时间后,所有人就都可以使用代币了。 如果你好奇,我们使用的是新的 OpenZeppelin 合约 v3 中的 [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/5.x/extending-contracts#using-hooks) 钩子。 ```solidity pragma solidity ^0.6.0; @@ -51,7 +47,7 @@ contract PrivateERC20 is ERC20, Ownable { function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override { super._beforeTokenTransfer(from, to, amount); - require(_validRecipient(to), "PrivateERC20: invalid recipient"); + require(_validRecipient(to), "PrivateERC20:无效的接收者"); } function _validRecipient(address to) private view returns (bool) { @@ -87,18 +83,18 @@ contract PrivateERC20Mock is PrivateERC20 { 你将得到以下错误消息之一: -- `PrivateERC20Mock.sol: TypeError: Overriding function is missing "override" specifier.` -- `PrivateERC20.sol: TypeError: Trying to override non-virtual function. Did you forget to add "virtual"?.` +- `PrivateERC20Mock.sol:类型错误:重写函数缺少“override”说明符。` +- `PrivateERC20.sol:类型错误:试图重写非虚函数。 您是否忘记添加“virtual”?` 由于使用的是新的 Solidity 0.6 版本,所以必须为可被重写的函数添加 `virtual` 关键字,为执行重写的函数添加 override。 因此,我们为两个 `isPublic` 函数添加这些关键字。 -现在,在单元测试中,你就可以使用 `PrivateERC20Mock` 了。 想要在私密使用期间测试合约的行为时,请使用 `setIsPublic(false)`;同样,可以使用 `setIsPublic(true)` 在公共使用期间测试。 当然,在本例中,我们也可以只使用[时间帮助器](https://docs.openzeppelin.com/test-helpers/0.5/api#increase)相应地修改时间。 但至此,模拟合约的概念应该已经清楚了,并且你也可以想象一下不仅仅需要修改时间的复杂场景。 +现在,在单元测试中,你就可以使用 `PrivateERC20Mock` 了。 想要在私密使用期间测试合约的行为时,请使用 `setIsPublic(false)`;同样,可以使用 `setIsPublic(true)` 在公共使用期间测试。 当然,在我们的示例中,我们也可以使用[时间帮助器](https://docs.openzeppelin.com/test-helpers/0.5/api#increase)来相应地更改时间。 但至此,模拟合约的概念应该已经清楚了,并且你也可以想象一下不仅仅需要修改时间的复杂场景。 -## 对多个合约进行模拟 {#mocking-many-contracts} +## 模拟多个合约 {#mocking-many-contracts} -如果每进行一次模拟都要创建另一个合约,那将是一件很麻烦的事。 如果你被这种情况困扰,可以考虑 [MockContract](https://github.com/gnosis/mock-contract) 库。 它允许用户实时重写和更改合约的行为。 但是,该库只能用来模拟对另一个合约的调用,因此对于上面的示例并不适用。 +如果每进行一次模拟都要创建另一个合约,那将是一件很麻烦的事。 如果这困扰到你,可以看看 [MockContract](https://github.com/gnosis/mock-contract) 程序库。 它允许你实时重写和更改合约的行为。 但是,该库只能用来模拟对另一个合约的调用,因此对于上面的示例并不适用。 -## 模拟技术还可以更强大 {#mocking-can-be-even-more-powerful} +## 模拟可以更强大 {#mocking-can-be-even-more-powerful} 模拟技术的强大之处远不仅于此。 From 0590ce34a5c04e498e4607d9c7cc6b3f9a9320be Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:26 -0800 Subject: [PATCH 045/581] update(i18n): public/content/translations/zh/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md --- .../index.md | 585 ++++++++++++++++++ 1 file changed, 585 insertions(+) create mode 100644 public/content/translations/zh/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md diff --git a/public/content/translations/zh/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md b/public/content/translations/zh/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md new file mode 100644 index 00000000000..9a7263f452c --- /dev/null +++ b/public/content/translations/zh/developers/tutorials/creating-a-wagmi-ui-for-your-contract/index.md @@ -0,0 +1,585 @@ +--- +title: "为您的合约构建用户界面" +description: 我们将使用 TypeScript、React、Vite 和 Wagmi 等现代组件来构建一个现代但简约的用户界面,并学习如何将钱包连接到用户界面、调用智能合约来读取信息、向智能合约发送交易以及监控来自智能合约的事件以识别更改。 +author: Ori Pomerantz +tags: [ "typescript", "react", "vite", "wagmi", "前端" ] +skill: beginner +published: 2023-11-01 +lang: zh +sidebarDepth: 3 +--- + +您在以太坊生态系统中找到了我们需要的功能。 您编写了智能合约来实现它,甚至可能编写了一些在链下运行的相关代码。 太好了! 遗憾的是,如果没有用户界面,您就不会有任何用户,而且您上一次编写网站时,人们还在使用拨号调制解调器,JavaScript 还是个新事物。 + +本文就是为您准备的。 我假设您了解编程,或许还了解一些 JavaScript 和 HTML,但您的用户界面技能已经生疏和过时了。 我们将一起学习一个简单的现代应用,这样您就会知道现在是如何做的了。 + +## 为何这很重要 {#why-important} + +理论上,您可以让人们使用 [Etherscan](https://holesky.etherscan.io/address/0x432d810484add7454ddb3b5311f0ac2e95cecea8#writeContract) 或 [Blockscout](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=write_contract) 与您的合约进行交互。 对于经验丰富的以太坊用户来说,这很好。 但我们正努力为[另外十亿人](https://blog.ethereum.org/2021/05/07/ethereum-for-the-next-billion)服务。 如果没有出色的用户体验,这是不可能实现的,而友好的用户界面是其中的重要组成部分。 + +## Greeter 应用 {#greeter-app} + +现代 UI 的工作原理背后有很多理论,也有[很多不错的网站](https://react.dev/learn/thinking-in-react)[对此进行了解释](https://wagmi.sh/core/getting-started)。 我不会重复那些网站已经做得很好的工作,而是假设您更喜欢通过实践来学习,并从一个您可以上手的应用开始。 您仍然需要理论来完成工作,我们稍后会讲到这一点——我们将逐个源文件进行讲解,并在讲到时进行讨论。 + +### 安装 {#installation} + +1. 如有必要,请将 [Holesky 区块链](https://chainlist.org/?search=holesky&testnets=true) 添加到您的钱包并[获取测试 ETH](https://www.holeskyfaucet.io/)。 + +2. 克隆 github 仓库。 + + ```sh + git clone https://github.com/qbzzt/20230801-modern-ui.git + ``` + +3. 安装必要的软件包。 + + ```sh + cd 20230801-modern-ui + pnpm install + ``` + +4. 启动应用。 + + ```sh + pnpm dev + ``` + +5. 浏览到应用显示的 URL。 在大多数情况下,该 URL 为 [http://localhost:5173/](http://localhost:5173/)。 + +6. 您可以在[区块链浏览器](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=contract)上看到合约源代码,它是 Hardhat Greeter 的略微修改版本。 + +### 文件演练 {#file-walk-through} + +#### `index.html` {#index-html} + +该文件是标准的 HTML 样板文件,但导入脚本文件的这一行除外。 + +```html + +``` + +#### `src/main.tsx` {#main-tsx} + +文件扩展名告诉我们,这是一个用 [TypeScript](https://www.typescriptlang.org/) 编写的 [React 组件](https://www.w3schools.com/react/react_components.asp),TypeScript 是 JavaScript 的一个扩展,支持[类型检查](https://en.wikipedia.org/wiki/Type_system#Type_checking)。 TypeScript 被编译成 JavaScript,因此我们可以用它来进行客户端执行。 + +```tsx +import '@rainbow-me/rainbowkit/styles.css' +import { RainbowKitProvider } from '@rainbow-me/rainbowkit' +import * as React from 'react' +import * as ReactDOM from 'react-dom/client' +import { WagmiConfig } from 'wagmi' +import { chains, config } from './wagmi' +``` + +导入我们需要的库代码。 + +```tsx +import { App } from './App' +``` + +导入实现该应用的 React 组件(见下文)。 + +```tsx +ReactDOM.createRoot(document.getElementById('root')!).render( +``` + +创建根 React 组件。 `render` 的参数是 [JSX](https://www.w3schools.com/react/react_jsx.asp),这是一种同时使用 HTML 和 JavaScript/TypeScript 的扩展语言。 这里的感叹号告诉 TypeScript 组件:“你不知道 `document.getElementById('root')` 是否会是 `ReactDOM.createRoot` 的有效参数,但别担心——我是开发者,我告诉你它会是”。 + +```tsx + +``` + +该应用将放在 [一个 `React.StrictMode` 组件](https://react.dev/reference/react/StrictMode)中。 该组件告诉 React 库插入额外的调试检查,这在开发过程中很有用。 + +```tsx + +``` + +该应用也位于 [一个 `WagmiConfig` 组件](https://wagmi.sh/react/api/WagmiProvider)中。 [Wagmi (we are going to make it) 库](https://wagmi.sh/) 将 React UI 定义与 [viem 库](https://viem.sh/)连接起来,用于编写以太坊去中心化应用程序。 + +```tsx + +``` + +最后,还有[一个 `RainbowKitProvider` 组件](https://www.rainbowkit.com/)。 此组件处理登录以及钱包和应用之间的通信。 + +```tsx + +``` + +现在我们可以为应用提供组件,该组件实际实现了 UI。 组件末尾的 `/>` 告诉 React,根据 XML 标准,该组件内部没有任何定义。 + +```tsx + + + , +) +``` + +当然,我们必须关闭其他组件。 + +#### `src/App.tsx` {#app-tsx} + +```tsx +import { ConnectButton } from '@rainbow-me/rainbowkit' +import { useAccount } from 'wagmi' +import { Greeter } from './components/Greeter' + +export function App() { +``` + +这是创建 React 组件的标准方法——定义一个函数,每次需要渲染时都会调用该函数。 这个函数通常在顶部有一些 TypeScript 或 JavaScript 代码,然后是一个返回 JSX 代码的 `return` 语句。 + +```tsx + const { isConnected } = useAccount() +``` + +这里我们使用 [`useAccount`](https://wagmi.sh/react/api/hooks/useAccount) 来检查我们是否通过钱包连接到区块链。 + +按照惯例,在 React 中,名为 `use...` 的函数是返回某种数据的 [hooks](https://www.w3schools.com/react/react_hooks.asp)。 当您使用此类挂钩时,您的组件不仅会获取数据,而且当该数据更改时,组件会使用更新后的信息重新渲染。 + +```tsx + return ( + <> +``` + +React 组件的 JSX _必须_返回一个组件。 当我们有多个组件并且没有任何东西可以“自然地”包装它们时,我们使用一个空组件 (`<> ...` \`) 将它们变成单个组件。 + +```tsx +

Greeter

+ +``` + +我们从 RainbowKit 中获取 [`ConnectButton` 组件](https://www.rainbowkit.com/docs/connect-button)。 当我们未连接时,它会给我们一个“连接钱包”按钮,该按钮会打开一个模式窗口,解释什么是钱包,并让您选择使用哪一个。 当我们连接时,它会显示我们使用的区块链、我们的帐户地址和我们的 ETH 余额。 我们可以使用这些显示来切换网络或断开连接。 + +```tsx + {isConnected && ( +``` + +当我们需要将实际的 JavaScript(或将被编译成 JavaScript 的 TypeScript)插入到 JSX 中时,我们使用括号(`{}`)。 + +语法 `a && b` 是 [`a ?` 的缩写 b : a`](https://www.w3schools.com/react/react_es6_ternary.asp)。 也就是说,如果 `a`为真,则其值为`b`,否则其值为 `a`(可以是 `false`、`0\` 等)。 这是一种告诉 React 组件只应在满足特定条件时才显示的简单方法。 + +在这种情况下,我们只想在用户连接到区块链时向用户显示 `Greeter`。 + +```tsx + + )} + + ) +} +``` + +#### `src/components/Greeter.tsx` {#greeter-tsx} + +该文件包含大部分 UI 功能。 它包含通常会放在多个文件中的定义,但由于这是一个教程,程序被优化为第一次易于理解,而不是为了性能或易于维护。 + +```tsx +import { useState, ChangeEventHandler } from 'react' +import { useNetwork, + useReadContract, + usePrepareContractWrite, + useContractWrite, + useContractEvent + } from 'wagmi' +``` + +我们使用这些库函数。 同样,在使用它们的地方,下面会进行解释。 + +```tsx +import { AddressType } from 'abitype' +``` + +[`abitype` 库](https://abitype.dev/)为我们提供了各种以太坊数据类型的 TypeScript 定义,例如 [`AddressType`](https://abitype.dev/config#addresstype)。 + +```tsx +let greeterABI = [ + . + . + . +] as const // greeterABI +``` + +`Greeter` 合约的 ABI。 +如果您同时开发合约和 UI,通常会将它们放在同一个仓库中,并使用 Solidity 编译器生成的 ABI 作为应用中的文件。 然而,这里没有必要这样做,因为合约已经开发完毕,不会再改变。 + +```tsx +type AddressPerBlockchainType = { + [key: number]: AddressType +} +``` + +TypeScript 是强类型的。 我们使用这个定义来指定 `Greeter` 合约在不同链上部署的地址。 键是数字(chainId),值是 `AddressType`(一个地址)。 + +```tsx +const contractAddrs: AddressPerBlockchainType = { + // Holesky + 17000: '0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8', + + // Sepolia + 11155111: '0x7143d5c190F048C8d19fe325b748b081903E3BF0' +} +``` + +合约在两个受支持网络上的地址:[Holesky](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=contact_code) 和 [Sepolia](https://eth-sepolia.blockscout.com/address/0x7143d5c190F048C8d19fe325b748b081903E3BF0?tab=contact_code)。 + +注意:实际上还有第三个定义,针对 Redstone Holesky,将在下面解释。 + +```tsx +type ShowObjectAttrsType = { + name: string, + object: any +} +``` + +此类型用作 `ShowObject` 组件的参数(稍后解释)。 它包括对象的名称及其值,用于调试目的。 + +```tsx +type ShowGreetingAttrsType = { + greeting: string | undefined +} +``` + +在任何时候,我们都可能知道问候语是什么(因为我们从区块链中读取了它),也可能不知道(因为我们还没有收到它)。 因此,拥有一个可以是字符串或空的类型是很有用的。 + +##### `Greeter` 组件 {#greeter-component} + +```tsx +const Greeter = () => { +``` + +最后,我们来定义这个组件。 + +```tsx + const { chain } = useNetwork() +``` + +我们使用的链的信息,由 [wagmi](https://wagmi.sh/react/hooks/useNetwork) 提供。 +因为这是一个钩子 (`use...`),所以每当此信息发生变化时,组件都会被重新绘制。 + +```tsx + const greeterAddr = chain && contractAddrs[chain.id] +``` + +Greeter 合约的地址,它因链而异(如果我们没有链信息或者我们在没有该合约的链上,它就是 `undefined`)。 + +```tsx + const readResults = useReadContract({ + address: greeterAddr, + abi: greeterABI, + functionName: "greet" , // No arguments + watch: true + }) +``` + +[`useReadContract` 钩子](https://wagmi.sh/react/api/hooks/useReadContract) 从合约中读取信息。 您可以在 UI 中展开 `readResults` 来确切地看到它返回了什么信息。 在这种情况下,我们希望它继续观察,以便在问候语更改时得到通知。 + +\*\*注意:\*\*我们可以监听 [`setGreeting` 事件](https://eth-holesky.blockscout.com/address/0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8?tab=logs)来了解问候语何时更改并以这种方式进行更新。 然而,虽然这样可能更高效,但它并不适用于所有情况。 当用户切换到不同的链时,问候语也会改变,但这种改变并不伴随事件。 我们可以让一部分代码监听事件,另一部分识别链的变化,但这会比仅仅设置 [`watch` 参数](https://wagmi.sh/react/api/hooks/useReadContract#watch-optional)更复杂。 + +```tsx + const [ newGreeting, setNewGreeting ] = useState("") +``` + +React 的 [`useState` 钩子](https://www.w3schools.com/react/react_usestate.asp)允许我们指定一个状态变量,其值在组件的多次渲染之间保持不变。 初始值是参数,在本例中为空字符串。 + +`useState` 钩子返回一个包含两个值的列表: + +1. 状态变量的当前值。 +2. 一个在需要时修改状态变量的函数。 由于这是一个钩子,所以每次调用它时,组件都会重新渲染。 + +在这种情况下,我们使用一个状态变量来表示用户想要设置的新问候语。 + +```tsx + const greetingChange : ChangeEventHandler = (evt) => + setNewGreeting(evt.target.value) +``` + +这是新问候语输入字段发生变化时的事件处理程序。 类型 [`ChangeEventHandler`](https://react-typescript-cheatsheet.netlify.app/docs/basic/getting-started/forms_and_events/) 指定这是 HTML 输入元素值变化的处理器。 之所以使用 `` 部分,是因为这是一个[泛型类型](https://www.w3schools.com/typescript/typescript_basic_generics.php)。 + +```tsx + const preparedTx = usePrepareContractWrite({ + address: greeterAddr, + abi: greeterABI, + functionName: 'setGreeting', + args: [ newGreeting ] + }) + const workingTx = useContractWrite(preparedTx.config) +``` + +这是从客户端角度提交区块链交易的过程: + +1. 使用 [`eth_estimateGas`](https://docs.alchemy.com/reference/eth-estimategas) 将交易发送到区块链中的一个节点。 +2. 等待节点的响应。 +3. 收到响应后,请用户通过钱包签署交易。 这一步_必须_在收到节点响应后进行,因为在签名之前,用户会看到交易的 gas 成本。 +4. 等待用户批准。 +5. 再次发送交易,这次使用 [`eth_sendRawTransaction`](https://docs.alchemy.com/reference/eth-sendrawtransaction)。 + +第 2 步可能会花费一段可感知的时间,在此期间,用户会想知道他们的命令是否真的被用户界面接收到,以及为什么还没有要求他们签署交易。 这会造成糟糕的用户体验 (UX)。 + +解决方案是使用[准备钩子](https://wagmi.sh/react/prepare-hooks)。 每次参数更改时,立即向节点发送 `eth_estimateGas` 请求。 然后,当用户实际想要发送交易时(在本例中,通过按**更新问候语**),gas 成本是已知的,用户可以立即看到钱包页面。 + +```tsx + return ( +``` + +现在我们终于可以创建要返回的实际 HTML 了。 + +```tsx + <> +

Greeter

+ { + !readResults.isError && !readResults.isLoading && + + } +
+``` + +创建一个 `ShowGreeting` 组件(在下面解释),但前提是问候语已成功从区块链中读取。 + +```tsx + +``` + +这是用户可以设置新问候语的输入文本字段。 每次用户按下一个键,我们都会调用 `greetingChange`,它会调用 `setNewGreeting`。 由于 `setNewGreeting` 来自 `useState` 钩子,它会导致 `Greeter` 组件再次渲染。 这意味着: + +- 我们需要指定 `value` 来保留新问候语的值,否则它将变回默认值,即空字符串。 +- 每次 `newGreeting` 更改时都会调用 `usePrepareContractWrite`,这意味着它在准备好的交易中总是会有最新的 `newGreeting`。 + +```tsx + +``` + +如果没有 `workingTx.write`,那么我们仍在等待发送问候语更新所需的信息,因此按钮是禁用的。 如果有一个 `workingTx.write` 值,那么这就是调用以发送交易的函数。 + +```tsx +
+ + + + + ) +} +``` + +最后,为了帮助您了解我们在做什么,请显示我们使用的三个对象: + +- `readResults` +- `preparedTx` +- `workingTx` + +##### `ShowGreeting` 组件 {#showgreeting-component} + +此组件显示 + +```tsx +const ShowGreeting = (attrs : ShowGreetingAttrsType) => { +``` + +组件函数接收一个包含组件所有属性的参数。 + +```tsx + return {attrs.greeting} +} +``` + +##### `ShowObject` 组件 {#showobject-component} + +为了提供信息,我们使用 `ShowObject` 组件来显示重要的对象(`readResults` 用于读取问候语,`preparedTx` 和 `workingTx` 用于我们创建的交易)。 + +```tsx +const ShowObject = (attrs: ShowObjectAttrsType ) => { + const keys = Object.keys(attrs.object) + const funs = keys.filter(k => typeof attrs.object[k] == "function") + return <> +
+``` + +我们不希望所有信息都杂乱地显示在 UI 中,因此为了能够查看或关闭它们,我们使用 [`details`](https://www.w3schools.com/tags/tag_details.asp) 标签。 + +```tsx + {attrs.name} +
+        {JSON.stringify(attrs.object, null, 2)}
+```
+
+大多数字段都是使用 [`JSON.stringify`](https://www.w3schools.com/js/js_json_stringify.asp) 显示的。
+
+```tsx
+      
+ { funs.length > 0 && + <> + Functions: +
    +``` + +唯一的例外是函数,它不属于 [JSON 标准](https://www.json.org/json-en.html),因此必须单独显示。 + +```tsx + {funs.map((f, i) => +``` + +在 JSX 中,`{` 花括号 `}` 内的代码被解释为 JavaScript。 然后,`(` 圆括号 `)` 内的代码再次被解释为 JSX。 + +```tsx + (
  • {f}
  • ) + )} +``` + +React 要求 [DOM 树](https://www.w3schools.com/js/js_htmldom.asp)中的标签具有不同的标识符。 这意味着同一标签(在本例中为[无序列表](https://www.w3schools.com/tags/tag_ul.asp))的子标签需要不同的 `key` 属性。 + +```tsx +
+ + } +
+ +} +``` + +结束各种 HTML 标签。 + +##### 最终的 `export` {#the-final-export} + +```tsx +export { Greeter } +``` + +`Greeter` 组件是我们需要为应用导出的组件。 + +#### `src/wagmi.ts` {#wagmi-ts} + +最后,与 WAGMI 相关的各种定义都在 `src/wagmi.ts` 中。 我不会在这里解释所有内容,因为其中大部分是您不太可能需要更改的样板代码。 + +这里的代码与[在 github 上](https://github.com/qbzzt/20230801-modern-ui/blob/main/src/wagmi.ts)的代码不完全相同,因为在文章后面我们添加了另一条链([Redstone Holesky](https://redstone.xyz/docs/network-info))。 + +```ts +import { getDefaultWallets } from '@rainbow-me/rainbowkit' +import { configureChains, createConfig } from 'wagmi' +import { holesky, sepolia } from 'wagmi/chains' +``` + +导入应用支持的区块链。 您可以在 [viem github](https://github.com/wagmi-dev/viem/tree/main/src/chains/definitions) 中查看支持的链的列表。 + +```ts +import { publicProvider } from 'wagmi/providers/public' + +const walletConnectProjectId = 'c96e690bb92b6311e8e9b2a6a22df575' +``` + +要使用 [WalletConnect](https://walletconnect.com/),您需要为您的应用提供一个项目 ID。 您可以在 [cloud.walletconnect.com](https://cloud.walletconnect.com/sign-in) 上获取。 + +```ts +const { chains, publicClient, webSocketPublicClient } = configureChains( + [ holesky, sepolia ], + [ + publicProvider(), + ], +) + +const { connectors } = getDefaultWallets({ + appName: 'My wagmi + RainbowKit App', + chains, + projectId: walletConnectProjectId, +}) + +export const config = createConfig({ + autoConnect: true, + connectors, + publicClient, + webSocketPublicClient, +}) + +export { chains } +``` + +### 添加另一个区块链 {#add-blockchain} + +如今有很多 [L2 扩容解决方案](/layer-2/),您可能想支持一些 viem 尚不支持的方案。 要做到这一点,您需要修改 `src/wagmi.ts`。 这些说明解释了如何添加 [Redstone Holesky](https://redstone.xyz/docs/network-info)。 + +1. 从 viem 导入 `defineChain` 类型。 + + ```ts + import { defineChain } from 'viem' + ``` + +2. 添加网络定义。 + + ```ts + const redstoneHolesky = defineChain({ + id: 17_001, + name: 'Redstone Holesky', + network: 'redstone-holesky', + nativeCurrency: { + decimals: 18, + name: 'Ether', + symbol: 'ETH', + }, + rpcUrls: { + default: { + http: ['https://rpc.holesky.redstone.xyz'], + webSocket: ['wss://rpc.holesky.redstone.xyz/ws'], + }, + public: { + http: ['https://rpc.holesky.redstone.xyz'], + webSocket: ['wss://rpc.holesky.redstone.xyz/ws'], + }, + }, + blockExplorers: { + default: { name: 'Explorer', url: 'https://explorer.holesky.redstone.xyz' }, + }, + }) + ``` + +3. 将新链添加到 `configureChains` 调用中。 + + ```ts + const { chains, publicClient, webSocketPublicClient } = configureChains( + [ holesky, sepolia, redstoneHolesky ], + [ publicProvider(), ], + ) + ``` + +4. 确保应用知道您在新网络上的合约地址。 在这种情况下,我们修改 `src/components/Greeter.tsx`: + + ```ts + const contractAddrs : AddressPerBlockchainType = { + // Holesky + 17000: '0x432d810484AdD7454ddb3b5311f0Ac2E95CeceA8', + + // Redstone Holesky + 17001: '0x4919517f82a1B89a32392E1BF72ec827ba9986D3', + + // Sepolia + 11155111: '0x7143d5c190F048C8d19fe325b748b081903E3BF0' + } + ``` + +## 结论 {#conclusion} + +当然,您并不真正关心为 `Greeter` 提供用户界面。 您想为自己的合约创建用户界面。 要创建您自己的应用,请执行以下步骤: + +1. 指定创建 wagmi 应用。 + + ```sh copy + pnpm create wagmi + ``` + +2. 为应用命名。 + +3. 选择 **React** 框架。 + +4. 选择 **Vite** 变体。 + +5. 您可以[添加 Rainbow kit](https://www.rainbowkit.com/docs/installation#manual-setup)。 + +现在去为您的合约创造一个全世界都能使用的界面吧。 + +[点击此处查看我的更多作品](https://cryptodocguy.pro/)。 + From f515baf179b6e635aed870e8eaae9d82e8b653b7 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:30 -0800 Subject: [PATCH 046/581] update(i18n): public/content/translations/zh/dao/index.md --- public/content/translations/zh/dao/index.md | 108 ++++++++++---------- 1 file changed, 55 insertions(+), 53 deletions(-) diff --git a/public/content/translations/zh/dao/index.md b/public/content/translations/zh/dao/index.md index 83a24731f20..156e3920a70 100644 --- a/public/content/translations/zh/dao/index.md +++ b/public/content/translations/zh/dao/index.md @@ -19,15 +19,15 @@ summaryPoint3: 一个为特定事业投入资金的安全场所。 去中心化自治组织让全世界志同道合之士开展合作,而无需信赖一位宅心仁厚的领导来管理资金和运营。 没有可以随意花钱的首席执行官,也没有能够做假账的首席财务官。 取而代之的是,融入代码的基于区块链的规则规定组织如何运作以及资金如何使用。 -去中心化自治组织拥有内部资产,未经该组织批准,任何人都无权动用。 决策通过提案和投票监管,确保组织中的每位成员都有发言权,并且一切都发生在[链上](/glossary/#on-chain),公开透明。 +去中心化自治组织拥有内部资产,未经该组织批准,任何人都无权动用。 决策通过提案和投票进行治理,以确保组织中的每个人都有发言权,并且一切都透明地[在链上](/glossary/#onchain)进行。 ## 我们为什么需要去中心化自治组织? {#why-dao} -与他人创办涉及资金和金钱的组织,需要对与合作对象高度信任。 不过,显然很难相信互联网上素不相识的人。 通过去中心化自治组织,你不需要相信组织中的其他人,只需要相信去中心化自治组织的代码就够了,它是 100% 公开透明的,任何人都可以验证。 +与他人创办涉及资金和金钱的组织,需要对合作对象高度信任。 不过,显然很难相信互联网上素不相识的人。 通过去中心化自治组织,你不需要相信组织中的其他人,只需要相信去中心化自治组织的代码就够了,它是 100% 公开透明的,任何人都可以验证。 这为全球合作和协调提供了许多新机会。 -### 对比 {#dao-comparison} +### 比较 {#dao-comparison} | 去中心化自治组织 | 传统组织 | | ------------------------- | ------------------------------ | @@ -37,23 +37,23 @@ summaryPoint3: 一个为特定事业投入资金的安全场所。 | 以去中心化方式自动提供服务(例如慈善基金的分配)。 | 需要人工处理或自动集中控制,易受操纵。 | | 所有活动公开透明。 | 活动通常是私密进行,不向公众开放。 | -### 去中心化自治组织示例 {#dao-examples} +### DAO 示例 {#dao-examples} 为了帮助你更好地理解,这里有一些去中心化自治组织的应用示例: -- **慈善机构** – 可以接受全世界任何人的捐赠,并投票决定要资助的项目。 -- **集体所有权** – 可以购买实体或数字资产,组织成员可以投票决定如何使用它们。 -- **风险投资和赠款** – 可以成立一个风险基金,汇集投资资本并投票进行商业投资。 后续收益可以分配给相应 DAO 成员。 +- **慈善机构** – 您可以接受来自世界各地任何人的捐赠,并投票决定要资助哪些事业。 +- **集体所有权** – 您可以购买实体或数字资产,成员可以投票决定如何使用它们。 +- **风险投资和拨款** – 您可以创建一个风险基金,汇集投资资本并对要支持的风险项目进行投票。 后续收益可以分配给相应 DAO 成员。 ## 去中心化自治组织如何运作? {#how-daos-work} -去中心化自治组织的核心是[智能合约](/glossary/#smart-contract),它定义了组织的规则并持有组织的资产。 合约在以太坊上生效后,除非表决通过,否则任何人都不能修改规则。 任何人都无法超越合约定义的规则和逻辑行事。 由于资产也由智能合约定义,这也意味着未经组织批准任何人都不能使用资金。 所以去中心化组织也不需要中央权威。 相反,组织集体作出决定,而付款会在表决通过后自动获批。 +DAO 的支柱是其[智能合约](/glossary/#smart-contract),它定义了组织的规则并掌管着该团体的资金库。 合约在以太坊上生效后,除非表决通过,否则任何人都不能修改规则。 任何人都无法超越合约定义的规则和逻辑行事。 由于资产也由智能合约定义,这也意味着未经组织批准任何人都不能使用资金。 所以去中心化组织也不需要中央权威。 相反,组织集体作出决定,而付款会在表决通过后自动获批。 之所以能够做到这一点,是因为智能合约在以太坊上生效后,就无法被篡改。 一切都是公开的,你不可能在其他人一无所知的情况下修改代码(去中心化组织定义的规则)。 -## 以太坊与去中心化自治组织 {#ethereum-and-daos} +## 以太坊和 DAO {#ethereum-and-daos} 以太坊为去中心化自治组织提供了坚实基础,原因如下: @@ -62,7 +62,7 @@ summaryPoint3: 一个为特定事业投入资金的安全场所。 - 智能合约可以发送/接收资金。 没有这点,你就需要可信的中间人来管理组织资金。 - 比起竞争,以太坊社区更趋向于合作,这使得各类应用程序和服务系统蓬勃发展。 -## 去中心化自治组织的治理 {#dao-governance} +## DAO 治理 {#dao-governance} 治理去中心化自治组织时要考虑很多因素,比如投票和提案如何运作。 @@ -70,97 +70,99 @@ summaryPoint3: 一个为特定事业投入资金的安全场所。 委托就像是去中心化自治组织的代议制民主。 代币持有者将投票委托给那些自提名并承诺管理协议和随时了解动态的用户。 -#### 知名案例 {#governance-example} +#### 一个著名的例子 {#governance-example} -[以太坊域名服务](https://claim.ens.domains/delegate-ranking) - 以太坊域名服务持有者可以将他们的选票委托给参与的社区成员来代表他们。 +[ENS](https://claim.ens.domains/delegate-ranking) – ENS 持有者可以将其投票委托给活跃的社区成员来代表他们。 ### 自动交易治理 {#governance-example} 在很多去中心化自治组织中,如果达到法定人数的成员投票赞成,交易将自动执行。 -#### 知名案例 {#governance-example} +#### 一个著名的例子 {#governance-example} -[Nouns](https://nouns.wtf) — 在去中心化自治组织 Nouns 中,只要创始人不否决,如果投票达到法定票数并且多数票赞成,那么交易将自动执行。 +[Nouns](https://nouns.wtf) – 在 Nouns DAO 中,只要未被创始人否决,如果达到法定票数且多数票赞成,交易就会自动执行。 -### 多重签名治理 {#governance-example} +### 多签治理 {#governance-example} -虽然去中心化自治组织可能有数千名有投票权的成员,但资金一般会放在一个由 5 到 20 名活跃社区成员共同管理的[钱包](/glossary/#wallet)中,这些成员受组织信任并接受监督(社区知道他们的公开身份)。 投票后,[多重签名](/glossary/#multisig)的签名者执行社区的意愿。 +虽然 DAO 可能有数千名投票成员,但资金可以存放在一个由 5-20 名受信任且通常已公开身份(社区知道其公开身份)的活跃社区成员共享的[钱包](/glossary/#wallet)中。 投票后,[多签](/glossary/#multisig)签名者将执行社区的意愿。 -## 去中心化自治组织相关法律 {#dao-laws} +## DAO 法律 {#dao-laws} 1977 年,怀俄明州发明了有限责任公司制度,保护企业家并对他们的责任范围做出限制。 最近,他们率先制定了《去中心化自治组织法》,确立了去中心化自治组织的法律地位。 目前,怀俄明州、佛蒙特州和维尔京群岛都制定了各自的去中心化自治组织法律。 -### 知名案例 {#law-example} +### 一个著名的例子 {#law-example} -[CityDAO](https://citizen.citydao.io/) — 依照怀俄明州的去中心化自治组织相关法律,CityDAO 购买了黄石国家公园附近的 40 英亩土地。 +[CityDAO](https://citizen.citydao.io/) – CityDAO 利用怀俄明州的 DAO 法律购买了黄石国家公园附近 40 英亩的土地。 -## 去中心化自治组织的成员资格 {#dao-membership} +## DAO 成员资格 {#dao-membership} 去中心化自治组织成员资格分为多种模式。 成员资格可以决定投票方式和去中心化自治组织的其他关键事项。 ### 基于代币的成员资格 {#token-based-membership} -通常完全[无需许可](/glossary/#permissionless),具体取决于使用的代币。 这些治理代币大多可以在[去中心化交易所](/glossary/#dex)进行交易,无需许可。 其余代币要通过提供流动性或其他“工作量证明”才能赚取。 无论何种方式,只要持有代币就可以参与投票。 +通常完全[无需许可](/glossary/#permissionless),具体取决于所使用的代币。 这些治理代币大多可以在[去中心化交易所](/glossary/#dex)上无需许可地交易。 其余代币要通过提供流动性或其他“工作量证明”才能赚取。 无论何种方式,只要持有代币就可以参与投票。 -_通常用来管理各种去中心化协议和/或代币本身。_ +_通常用于治理广泛的去中心化协议和/或代币本身。_ -#### 知名案例 {#token-example} +#### 一个著名的例子 {#token-example} -[MakerDAO](https://makerdao.com) — 去中心化交易所普遍提供 MakerDAO 的代币 MKR,任何人都可以买入,从而获得对 Maker 协议未来的投票权。 +[MakerDAO](https://makerdao.com) – MakerDAO 的代币 MKR 在去中心化交易所广泛可用,任何人都可以购买以获得对 Maker 协议未来的投票权。 ### 基于份额的成员资格 {#share-based-membership} 基于份额的去中心化自治组织在更大程度上需要许可,但仍然相当公开透明。 任何潜在成员都可以提交加入去中心化自治组织的提案,并且通常以代币或工作的形式提供有价值的贡献。 份额代表直接投票权和所有权。 成员可以随时退出组织并带走属于他们的资金份额。 -_通常用于联系更紧密、以人为中心的组织,例如慈善机构、工人团体和投资俱乐部等。 也可以管理协议和代币。_ +_通常用于关系更紧密、以人为本的组织,如慈善机构、工人合作社和投资俱乐部。_ 也可以治理协议和代币。_ -#### 知名案例 {#share-example} +#### 一个著名的例子 {#share-example} -[MolochDAO](http://molochdao.com/) – MolochDAO 致力于为以太坊项目募集资金。 他们需要成员资格提案,以便组织可以评估你是否具有必要的专业知识和资本来对潜在受资助者做出明智判断。 你无法通过在公开市场上购买代币来加入这类去中心化自治组织。 +[MolochDAO](http://molochdao.com/) – MolochDAO 专注于为以太坊项目提供资金。 他们需要成员资格提案,以便组织可以评估你是否具有必要的专业知识和资本来对潜在受资助者做出明智判断。 你无法通过在公开市场上购买代币来加入这类去中心化自治组织。 ### 基于信誉的成员资格 {#reputation-based-membership} -信誉代表参加投票的证明,并授予去中心化自治组织中的投票权。 不同于基于代币或份额的成员资格,基于信誉的去中心化自治组织不会将所有权转让给贡献者。 信誉不能够购买、转让或委托;去中心化自治组织成员必须通过参与获得信誉。 链上投票无需许可,潜在成员可以自由提交加入去中心化自治组织的提案,并要求获得信誉和代币,作为他们所做贡献的奖励。 +信誉代表参加投票的证明,并授予去中心化自治组织中的投票权。 不同于基于代币或份额的成员资格,基于信誉的去中心化自治组织不会将所有权转让给贡献者。 信誉不能够购买、转让或委托;去中心化自治组织成员必须通过参与获得信誉。 链上投票无需许可,因此潜在人员可以自由提交加入去中心化自治组织的提案,并要求获得信誉和代币作为他们所做贡献的奖励。 -_通常用于协议和[去中心化应用程序](/glossary/#dapp)的去中心化开发和管理,但同时非常适合各类组织,例如慈善机构、工人团体、投资俱乐部等。_ +_通常用于协议和[去中心化应用程序](/glossary/#dapp)的去中心化开发和治理,但也同样适用于各种组织,例如慈善机构、工人合作社和投资俱乐部等。_ -#### 知名案例 {#reputation-example} +#### 一个著名的例子 {#reputation-example} -[DXdao](https://DXdao.eth.limo) -- DXdao 是一个全球性的主权团体,自 2019 年以来一直致力于构建和管理去中心化协议和应用程序。 它利用基于信誉的治理和[全息共识](/glossary/#holographic-consensus)来协调和管理资金,这意味着没有人能够影响其未来或治理。 +[DXdao](https://DXdao.eth.limo) – DXdao 是一个全球主权集体,自 2019 年以来一直致力于构建和治理去中心化协议和应用程序。 它利用基于信誉的治理和[全息共识](/glossary/#holographic-consensus)来协调和管理资金,这意味着没有人可以通过购买来影响其未来或治理。 -## 加入/创立去中心化自治组织 {#join-start-a-dao} +## 加入/启动一个 DAO {#join-start-a-dao} -### 加入去中心化自治组织 {#join-a-dao} +### 加入 DAO {#join-a-dao} -- [以太坊社区中的去中心化自治组织](/community/get-involved/#decentralized-autonomous-organizations-daos) -- [DAOHaus 的去中心化自治组织列表](https://app.daohaus.club/explore) -- [Tally.xyz 的去中心化自治组织列表](https://www.tally.xyz) +- [以太坊社区 DAO](/community/get-involved/#decentralized-autonomous-organizations-daos) +- [DAOHaus 的 DAO 列表](https://app.daohaus.club/explore) +- [Tally.xyz 的 DAO 列表](https://www.tally.xyz/explore) +- [DeGov.AI 的 DAO 列表](https://apps.degov.ai/) -### 创立去中心化自治组织 {#start-a-dao} +### 启动 DAO {#start-a-dao} -- [使用 DAOHaus 创立去中心化自治组织](https://app.daohaus.club/summon) -- [从 Tally 开创治理去中心化自治组织](https://www.tally.xyz/add-a-dao) -- [创立由 Aragon 支持的去中心化自治组织](https://aragon.org/product) -- [创立 colony](https://colony.io/) -- [使用 DAOstack 的全息共识机制创建去中心化自治组织](https://alchemy.daostack.io/daos/create) +- [通过 DAOHaus 召唤一个 DAO](https://app.daohaus.club/summon) +- [通过 Tally 启动一个 Governor DAO](https://www.tally.xyz/get-started) +- [创建一个由 Aragon 支持的 DAO](https://aragon.org/product) +- [启动一个 Colony](https://colony.io/) +- [使用 DAOstack 的全息共识创建一个 DAO](https://alchemy.daostack.io/daos/create) +- [使用 DeGov 启动器启动一个 DAO](https://docs.degov.ai/integration/deploy) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -### 去中心化自治组织相关文章 {#dao-articles} +### DAO 文章 {#dao-articles} -- [什么是去中心化自治组织?](https://aragon.org/dao)– [Aragon](https://aragon.org/) -- [去中心化自治组织之家](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/) -- [什么是去中心化自治组织,其宗旨是什么?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/) -- [如何创立由去中心化自治组织提供支持的数字社区](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/) -- [什么是去中心化自治组织?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com) +- [什么是 DAO?](https://aragon.org/dao) – [Aragon](https://aragon.org/) +- [DAO 之家](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/) +- [什么是 DAO,它有什么用?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/) +- [如何启动一个由 DAO 支持的数字社区](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/) +- [什么是 DAO?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com) - [什么是全息共识?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/) -- [《去中心化自治组织不是公司:去中心化在自治组织中很重要》,作者 Vitalik](https://vitalik.eth.limo/general/2022/09/20/daos.html) -- [去中心化自治组织、数据可用性委员会、数据可用性等等:不完整术语指南](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [以太坊博客](https://blog.ethereum.org) +- [《DAO 不是公司:去中心化在自治组织中的重要性》,作者:Vitalik](https://vitalik.eth.limo/general/2022/09/20/daos.html) +- [DAO、DAC、DA 等:不完全术语指南](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [以太坊博客](https://blog.ethereum.org) ### 视频 {#videos} -- [什么是加密货币中的去中心化自治组织?](https://youtu.be/KHm0uUPqmVE) -- [去中心化自治组织能构建一座城市吗?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/) +- [加密世界中的 DAO 是什么?](https://youtu.be/KHm0uUPqmVE) +- [DAO 能建一座城吗?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/) From 095da40af8ef6143ce04bdbe0992073748c298fb Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:33 -0800 Subject: [PATCH 047/581] update(i18n): public/content/translations/zh/nft/index.md --- public/content/translations/zh/nft/index.md | 59 +++++++++++---------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/public/content/translations/zh/nft/index.md b/public/content/translations/zh/nft/index.md index c4afc7d8d67..094bb4ecf62 100644 --- a/public/content/translations/zh/nft/index.md +++ b/public/content/translations/zh/nft/index.md @@ -15,7 +15,7 @@ summaryPoint3: 由以太坊区块链上的智能合约提供支持 ## 什么是非同质化代币? {#what-are-nfts} -每个非同质化代币都是**独一无二的**。 每个非同质化代币都有不同的属性(非同质化),并且可证明其稀缺性。 这一点不同于[以太币](/glossary/#ether)和 USDC 等其他基于以太坊的代币,在这类代币中,每个代币都是相同的且具有相同的属性(“同质化”)。 你不会关心钱包中的具体某一张钞票(或以太币),因为它们完全相同且具有同样的价值。 然而,你_需要_关心你拥有具体哪一个非同质化代币,因为它们都有区分于其他非同质化代币的独特属性(“非同质化”)。 +NFT 是**每个都独一无二**的代币。 每个非同质化代币都有不同的属性(非同质化),并且可证明其稀缺性。 这与 [ETH](/glossary/#ether) 或 USDC 等其他基于以太坊的代币不同,后者的每个代币都完全相同,属性也一样(即“同质化”)。 你不会关心钱包中的具体某一张钞票(或以太币),因为它们完全相同且具有同样的价值。 然而,你_确实_关心你具体拥有哪个 NFT,因为它们都有使其与众不同的独特属性(“非同质化”)。 每个非同质化代币的独特性使其能够实现艺术品、收藏品甚至房地产等资产的代币化,一个特定的独特非同质化代币可以代表一个特定的独特实体或数字物品。 资产的所有权可以在以太坊[区块链](/glossary/#blockchain)上公开验证。 @@ -23,20 +23,20 @@ summaryPoint3: 由以太坊区块链上的智能合约提供支持 ## 资产互联网 {#internet-of-assets} -非同质化代币和以太坊解决了当前互联网上存在的一些问题。 随着数字化程度的提升,需要以一种不受中心化组织控制的方式复制实体物品的属性,如稀缺性、独特性和所有权证明。 例如,利用非同质化代币,你可以在所有以太坊应用程序中拥有一个音乐 mp3 文件的所有权,而不必局限于某一家公司的特定音乐应用程序(如 Spotify 或 Apple Music)。 你可以拥有一个社交媒体账号,你自己可以出售或交换它,但平台提供商**不能任意收回**。 +非同质化代币和以太坊解决了当前互联网上存在的一些问题。 随着数字化程度的提升,需要以一种不受中心化组织控制的方式复制实体物品的属性,如稀缺性、独特性和所有权证明。 例如,利用非同质化代币,你可以在所有以太坊应用程序中拥有一个音乐 mp3 文件的所有权,而不必局限于某一家公司的特定音乐应用程序(如 Spotify 或 Apple Music)。 你可以拥有一个可以出售或交换的社交媒体账号,但平台提供商**不能随意将其从你手中夺走**。 非同质化代币互联网与我们今天大多数人使用的互联网的对比如下…… -### 对比 {#nft-comparison} +### 比较 {#nft-comparison} -| 非同质化代币互联网 | 当今互联网 | -| ---------------------------------------------------------------------------------- | ----------------------------------------- | -| **你拥有自己的资产!** 只有你能出售或交换它们。 | **你租用某个组织的资产,**它可以被收回。 | -| 非同质化代币在**数字世界里是独一无二的**,没有两个相同的非同质化代币。 | **复制品通常无法与原件区分**。 | -| 非同质化代币的所有权储存在区块链上,任何人都可以**公开验证**。 | 数字物品所有权记录的访问权限**由机构控制**— 你必须相信他们的话。 | -| 非同质化代币是以太坊上的[智能合约](/glossary/#smart-contract)。 这意味着它们**可以方便地在以太坊的其他智能合约**和应用程序中使用! | 拥有数字物品的公司通常**需要自己的“围墙花园”基础设施**。 | -| 内容**创作者可以在任何地方出售他们的作品**,并可以进入全球市场。 | 创建人依靠所用平台的基础设施和分布。 这些通常受使用条款和**地理限制**的制约。 | -| 非同质化代币创建者**可以保留自己作品的所有权**,并直接在非同质化代币合约中设置版税。 | 音乐**流媒体服务**这样的平台扣留大部分销售利润。 | +| 非同质化代币互联网 | 当今互联网 | +| ------------------------------------------------------------------------------- | ----------------------------------------- | +| \*\*你拥有自己的资产!\*\*只有你能出售或交换它们。 | **你租用某个组织的资产**,并且该资产可以被收回。 | +| NFT 是**数字世界里独一无二的**,没有两个 NFT 是相同的。 | **复制品通常无法与原件区分**。 | +| NFT 的所有权存储在区块链上,任何人都可以**公开验证**。 | 数字项目所有权记录的访问权限**由机构控制**——你必须相信他们的话。 | +| NFT 是以太坊上的[智能合约](/glossary/#smart-contract)。 这意味着它们可以**轻松地用于以太坊上的其他智能合约**和应用程序! | 拥有数字物品的公司通常**需要自己的"围墙花园"基础设施**。 | +| 内容**创建人可以在任何地方出售他们的作品**,并且可以进入全球市场。 | 创建人依靠所用平台的基础设施和分布。 这些通常受使用条款和**地理限制**的制约。 | +| NFT 创建人**可以保留其作品的所有权**,并将版税直接编程到 NFT 合约中。 | 诸如音乐**流媒体服务等平台保留了大部分销售利润**。 | ## 非同质化代币有哪些用武之地? {#nft-use-cases} @@ -51,29 +51,29 @@ summaryPoint3: 由以太坊区块链上的智能合约提供支持 - 限制内容访问权限 - 发放凭据 - 分布式互联网域名 -- 在[去中心化金融](/glossary/#defi)中作为抵押品 +- 作为[去中心化金融](/glossary/#defi)中的抵押品 -假设你是一位艺术家,希望使用非同质化代币分享自己的作品,同时不想失去对作品的控制,也不想中间商分走利润。 你可以创建一个新合约,指定非同质化代币的数量、属性和特定艺术品的链接。 作为艺术家,**你可以在智能合约中设置你应该收取的版税**(例如,每次转让非同质化代币时,将销售价格的 5% 转给合约所有人)。 因为你拥有部署合约的[钱包](/glossary/#wallet),所以你始终可以证明是你是非同质化代币的创建者。 你的买家也可以轻松地证明他们拥有代表你的系列艺术品的**真正的非同质化代币**,因为他们的钱包[地址](/glossary/#address)与你的智能合约中的一个代币相关联。 他们可以在整个以太坊生态系统中使用该非同质化代币,因为其真实性能得到保证。 +假设你是一位艺术家,希望使用非同质化代币分享自己的作品,同时不想失去对作品的控制,也不想中间商分走利润。 你可以创建一个新合约,指定非同质化代币的数量、属性和特定艺术品的链接。 作为艺术家,**你可以将应付的版税编程到智能合约中**(例如,每次转让 NFT 时,将售价的 5% 转给合约所有者)。 你也可以随时证明你创建了这些 NFT,因为你拥有部署该合约的[钱包](/glossary/#wallet)。 你的买家可以轻松证明他们从你的收藏中拥有了一个**真正的 NFT**,因为他们的钱包[地址](/glossary/#address)与你智能合约中的一个代币相关联。 他们可以在整个以太坊生态系统中使用该非同质化代币,因为其真实性能得到保证。
探索、购买或创建自己的非同质化代币艺术品/收藏品...
- 探索非同质化代币艺术品 + 探索 NFT 艺术品
-再以体育赛事的门票为例。 就像**赛事组织方可以选择出售多少门票一样**,非同质化代币的创建者可以决定创建多少份复制品。 有时候,它们是完全相同的复制品,如 5000 张普通门票。 有时候,会制作一些非常相似但略有不同的门票,如指定座位的门票。 这些门票可以在用户之间点对点买卖,而无需支付票务处理费用,买家始终可以通过检查合约地址来确保门票的真实性。 +再以体育赛事的门票为例。 就像**活动组织者可以选择出售多少张门票**一样,NFT 的创建人可以决定存在多少个复制品。 有时候,它们是完全相同的复制品,如 5000 张普通门票。 有时候,会制作一些非常相似但略有不同的门票,如指定座位的门票。 这些门票可以在用户之间点对点买卖,而无需支付票务处理费用,买家始终可以通过检查合约地址来确保门票的真实性。 -在 ethereum.org 上,**非同质化代币用于证明人们对我们的 Github 存储库做出了有意义的贡献**(对网站进行了编程、撰写或修改了文章...)、翻译了我们的内容或参加了我们的社区电话会议,我们甚至拥有了自己的非同质化代币域名。 如果你对 ethereum.org 做出了贡献,可以认领 [POAP](/glossary/#poap) 徽章非同质化代币。 一些加密货币相关活动使用 POAP 徽章作为门票。 [关于贡献的更多信息](/contributing/#poap)。 +在 ethereum.org 上,**NFT 用于证明人们对我们的 Github 代码库做出了有意义的贡献**(为网站编程、撰写或修改文章……)、翻译了我们的内容或参加了我们的社区会议,我们甚至还有自己的 NFT 域名。 如果你为 ethereum.org 做出贡献,你可以申领一个 [POAP](/glossary/#poap) NFT。 一些加密货币相关活动使用 POAP 徽章作为门票。 [关于贡献的更多信息](/contributing/#poap)。 ![ethereum.org POAP 徽章](./poap.png) -本网站也有一个由非同质化代币支持的备用域名:**ethereum.eth**。 我们的 `.org` 地址由域名系统 (DNS) 提供商集中管理,而 ethereum`.eth` 则通过以太坊域名服务 (ENS) 在以太坊上注册。 此域名由我们拥有和管理。 [查看我们的以太坊域名服务记录](https://app.ens.domains/name/ethereum.eth) +本网站还有一个由 NFT 提供支持的备用域名:**ethereum.eth**。 我们的 `.org` 地址由域名系统 (DNS) 提供商集中管理,而 `ethereum.eth` 则通过以太坊域名服务 (ENS) 在以太坊上注册。 此域名由我们拥有和管理。 [查看我们的 ENS 记录](https://app.ens.domains/name/ethereum.eth) -[关于以太坊域名服务的更多信息](https://app.ens.domains) +[关于 ENS 的更多信息](https://app.ens.domains) @@ -83,31 +83,32 @@ summaryPoint3: 由以太坊区块链上的智能合约提供支持 非同质化代币智能合约可以做一些重要事情: -- **创建非同质化代币:**它可以创建新的非同质化代币。 -- **分配所有权:**通过将非同质化代币链接到特定的以太坊地址来跟踪谁拥有哪些非同质化代币。 -- **为每个非同质化代币提供 ID:**每个非同质化代币都有一个独一无二的编号。 此外,通常还会附加一些信息(元数据),描述非同质化代币所代表的内容。 +- \*\*创建 NFT:\*\*它可以创建新的 NFT。 +- \*\*分配所有权:\*\*它通过将 NFT 链接到特定的以太坊地址来跟踪谁拥有哪个 NFT。 +- \*\*为每个 NFT 提供 ID:\*\*每个 NFT 都有一个使其唯一的编号。 此外,通常还会附加一些信息(元数据),描述非同质化代币所代表的内容。 当有人“创建”或“铸造”非同质化代币时,本质上是告诉智能合约赋予他们特定非同质化代币的所有权。 该信息安全且公开地存储在区块链中。 -此外,合约的创建人可以添加额外的规则。 他们可能会限制某种非同质化代币的创建数量,或者决定在非同质化代币易手时他们应该获得少量版税。 +此外,合约的创建人可以添加额外的规则。 他们可能会限制某种 NFT 的创建数量,或决定在该 NFT 易手时收取少量版税。 -### 非同质化代币安全性 {#nft-security} +### NFT 安全性 {#nft-security} -以太坊的安全性来自[权益证明](/glossary/#pos)。 该机制旨在通过经济手段遏制恶意行为,使以太坊防篡改。 这便是非同质化代币的由来。 一旦包含你的非同质化代币交易的[区块](/glossary/#block)[最终确定](/glossary/#finality),攻击者需要花费数百万个以太币才能更改它。 运行以太坊软件的任何人都能立即检测到对非同质化代币的不诚实篡改,并且不良行为者将受到经济处罚并被驱逐出网络。 +以太坊的安全性来自[权益证明](/glossary/#pos)。 该机制旨在通过经济手段遏制恶意行为,使以太坊防篡改。 这便是非同质化代币的由来。 一旦包含你的 NFT 交易的[区块](/glossary/#block)被[最终确定](/glossary/#finality),攻击者将需要花费数百万的 ETH 才能更改它。 运行以太坊软件的任何人都能立即检测到对非同质化代币的不诚实篡改,并且不良行为者将受到经济处罚并被驱逐出网络。 非同质化代币的安全问题通常与网络钓鱼诈骗、智能合约漏洞或用户错误(例如无意中暴露私钥)有关,因此非同质化代币所有者务必保障钱包的安全性。 - 有关安全性的更多信息 + 关于安全性的更多信息 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [非同质化代币初学者指南](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie,2020 年 1 月_ -- [EtherscanNFT 跟踪器](https://etherscan.io/nft-top-contracts) +- [NFT 入门指南](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie,2020 年 1 月_ +- [Etherscan NFT 追踪器](https://etherscan.io/nft-top-contracts) +- [Blockscout NFT 追踪器](https://eth.blockscout.com/tokens?type=ERC-721,ERC-1155,ERC-404) - [ERC-721 代币标准](/developers/docs/standards/tokens/erc-721/) - [ERC-1155 代币标准](/developers/docs/standards/tokens/erc-1155/) -- [热门非同质化代币应用和工具](https://www.ethereum-ecosystem.com/blockchains/ethereum/nfts) +- [热门 NFT 应用和工具](https://www.ethereum-ecosystem.com/blockchains/ethereum/nfts) ## 其他资源 {#other-resources} From 26175c69860f35cfb67a627be92d24e2e58c933d Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:35 -0800 Subject: [PATCH 048/581] update(i18n): src/intl/zh/table.json From cb9cc465f2c866a64de9559b92c9404b3d9d5b4c Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:38 -0800 Subject: [PATCH 049/581] update(i18n): public/content/translations/zh/social-networks/index.md --- .../translations/zh/social-networks/index.md | 96 +++++++++++++------ 1 file changed, 65 insertions(+), 31 deletions(-) diff --git a/public/content/translations/zh/social-networks/index.md b/public/content/translations/zh/social-networks/index.md index 0fded29e111..835ef3257c1 100644 --- a/public/content/translations/zh/social-networks/index.md +++ b/public/content/translations/zh/social-networks/index.md @@ -15,7 +15,7 @@ summaryPoint3: 代币和非同质化代币创造了一种将内容货币化的 ## 什么是去中心化社交网络? {#what-are-decentralized-social-networks} -去中心化社交网络是[基于区块链](/glossary/#blockchain)的平台,它允许用户交换信息并向受众发布和分发内容。 由于这些应用程序在区块链上运行,它们能够去中心化并抵制审查和不当控制。 +去中心化社交网络是基于[区块链](/glossary/#blockchain)的平台,允许用户交换信息以及向受众发布和分发内容。 由于这些应用程序在区块链上运行,它们能够去中心化并抵制审查和不当控制。 许多去中心化的社交网络已成为现有社交媒体服务的替代品,例如 Facebook、LinkedIn、Twitter 和 Medium。 但基于区块链的社交网络有许多领先于传统社交平台的功能。 @@ -23,29 +23,29 @@ summaryPoint3: 代币和非同质化代币创造了一种将内容货币化的 ### 去中心化的社交网络是如何工作的? {#decentralized-social-networks-overview} -去中心化社交网络是一类[去中心化应用程序 (dapp)](/apps/) — 由部署在区块链上的[智能合约](/glossary/#smart-contract)驱动的应用程序。 合约代码充当这些应用程序的后端并定义它们的业务逻辑。 +去中心化社交网络是一类[去中心化应用程序 (dapps)](/apps/)——由部署在区块链上的[智能合约](/glossary/#smart-contract)驱动的应用程序。 合约代码充当这些应用程序的后端并定义它们的业务逻辑。 -传统社交媒体平台依靠数据库来存储用户信息、程序代码和其他形式的数据。 但这会产生单点故障并带来重大风险。 例如,2021 年 10 月,Facebook 的服务器[离线了数个小时](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact),切断了用户与平台的连接,这件事引起了极差的反响。 +传统社交媒体平台依靠数据库来存储用户信息、程序代码和其他形式的数据。 但这会产生单点故障并带来重大风险。 例如,在 2021 年 10 月,Facebook 的服务器曾[离线数小时](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact)而闹得沸沸扬扬,导致用户无法访问平台。 -去中心化社交网络存在于由世界各地数千个节点组成的[对等网络](/glossary/#peer-to-peer-network)上。 即使某些节点发生故障,网络也将不间断地运行,使应用程序能够抵御故障和中断。 +去中心化社交网络存在于一个由全球数千个节点组成的[对等网络](/glossary/#peer-to-peer-network)上。 即使某些节点发生故障,网络也将不间断地运行,使应用程序能够抵御故障和中断。 -构建于以太坊之上的社交网络使用类似[星际文件系统 (IPFS)](https://ipfs.io/) 之类的去中心化存储系统,可以保护用户信息免遭利用和恶意使用。 没有人会将你的个人信息出售给广告商,黑客也无法窃取你的机密信息。 +通过使用[星际文件系统 (IPFS)](https://ipfs.io/) 等去中心化存储系统,基于以太坊构建的社交网络可以保护用户信息免遭剥削和恶意使用。 没有人会将你的个人信息出售给广告商,黑客也无法窃取你的机密信息。 许多基于区块链的社交平台都有原生代币,可以在没有广告收入的情况下实现货币化。 用户可以购买这些代币来访问某些功能、在应用程序内购物或打赏他们最喜欢的内容创作者。 ## 去中心化社交网络的好处 {#benefits} -1. 去中心化社交网络可抵御审查,并对所有人开放。 这意味着**用户不能被随意禁止**、封杀或限制。 +1. 去中心化社交网络可抵御审查,并对所有人开放。 这意味着**用户不能被任意封禁**、踢出平台或限制。 -2. 去中心化社交网络**建立在开源理念上**,并使应用程序的源代码可供公众检查。 通过去除传统社交媒体中常见的不透明算法,基于区块链的社交网络可以使用户和平台创建者的利益保持一致。 +2. 去中心化社交网络**建立在开源理念的基础上**,并使应用程序的源代码可供公众查看。 通过去除传统社交媒体中常见的不透明算法,基于区块链的社交网络可以使用户和平台创建者的利益保持一致。 -3. 去中心化社交网络淘汰了“中间人”。 **内容创作者对其创作的内容拥有直接所有权**,他们直接与关注者、粉丝、买家和其他各方互动,双方之间仅有智能合约。 +3. 去中心化社交网络淘汰了“中间人”。 内容**创作者对其内容拥有直接所有权**,他们可以直接与关注者、粉丝、买家和其他各方互动,双方之间仅有智能合约。 -4. 由于去中心化应用程序在由全球节点对等网络提供支持的以太坊网络上运行,去中心化社交网络**不易受到服务器停机和中断的影响**。 +4. 由于去中心化应用程序在由全球对等节点网络提供支持的以太坊网络上运行,去中心化社交网络**受服务器停机和中断的影响较小**。 -5. 去中心化社交平台通过[非同质化代币 (NFT)](/glossary/#nft)、应用程序内加密货币支付等,为内容创作者提供了**改进的货币化框架**。 +5. 去中心化社交平台通过[非同质化代币 (NFT)](/glossary/#nft)、应用内加密支付等方式,为内容创作者提供了**改进的货币化**框架。 -6. 去中心化社交网络为用户提供了**高度的隐私和匿名性**。 例如,个人可以使用[以太坊域名服务](/glossary/#ens)配置文件或[钱包](/glossary/#wallet)登录基于以太坊的社交网络,而无需共享个人身份信息 (PII),例如姓名、电子邮件地址等。 +6. 去中心化社交网络为用户提供了**高度的隐私和匿名性**。 例如,个人可以使用 [ENS](/glossary/#ens) 个人资料或[钱包](/glossary/#wallet)登录基于以太坊的社交网络,而无需共享姓名、电子邮件地址等个人可识别信息 (PII)。 7. 去中心化社交网络依赖于去中心化存储,而不是中心化数据库。在保护用户数据方面,前者更加优秀。 @@ -55,51 +55,85 @@ summaryPoint3: 代币和非同质化代币创造了一种将内容货币化的 ### Mirror {#mirror} -[Mirror](https://mirror.xyz/) 是一个支持 web3 的写作平台,旨在实现去中心化并被用户所有。 用户只需连接钱包即可在 Mirror 上免费读写。 用户还可以收集写作作品并订阅他们喜欢的作者。 +[Mirror](https://mirror.xyz/) 是一个支持 web3 的写作平台,旨在实现去中心化和用户所有。 用户只需连接钱包即可在 Mirror 上免费读写。 用户还可以收集写作作品并订阅他们喜欢的作者。 -在 Mirror 上发布的帖子会永久存储在去中心化存储平台 Arweave 上,并且可以作为铸造为可收集的[非同质化代币 (NFT)](/nft/),称为写作 NFT。 创作者可以完全免费地创建写作非同质化代币,并且收集在以太坊[二层网络](/glossary/#layer-2)上进行 — 这使得交易便宜、快速且环保。 +在 Mirror 上发布的帖子会永久存储在去中心化存储平台 Arweave 上,并且可以铸造成可收藏的[非同质化代币 (NFT)](/nft/),即“写作 NFT”。 作者创作写作 NFT 是完全免费的,并且在以太坊 [L2](/glossary/#layer-2) 上进行收集 — 这使得交易便宜、快速且环保。 ### MINDS {#minds} [MINDS](https://www.minds.com/) 是最常用的去中心化社交网络之一。 它的运作方式与 Facebook 类似,并且已经吸引了数百万用户。 -用户使用平台原生的 [ERC-20](/glossary/#erc-20) 代币 $MIND 购买物品。 用户还可以通过发布热门内容、为生态系统做出贡献以及将其他人推荐给平台来赚取 $MIND 代币。 +用户使用该平台原生的 [ERC-20](/glossary/#erc-20) 代币 $MIND 来购买商品。 用户还可以通过发布热门内容、为生态系统做出贡献以及将其他人推荐给平台来赚取 $MIND 代币。 + +### Farcaster {#farcaster} + +[Farcaster](https://farcaster.xyz/) 是一个类似于 X 和 Reddit 的“足够去中心化”的社交网络,允许用户分享和发现“casts”。 它构建在 Optimism L2 网络上,以保持交易的相对低成本。 ## 使用去中心化社交网络 {#use-decentralized-social-networks} -- **[Status.im](https://status.im/)** - _Status 是一个安全的消息收发应用程序,使用开源、对等协议和端到端加密来保护你的消息免受第三方侵害。_ -- **[Mirror.xyz](https://mirror.xyz/)** - _Mirror 是一个基于以太坊的去中心化、用户所有发布平台,供用户众筹创意、将内容货币化并创建高价值社区。_ -- **[Lens Protocol](https://lens.xyz/)** - _Lens Protocol 是一个可组合的去中心化社交图谱,可帮助创作者在去中心化互联网数字花园中的任何地方都拥有自己的内容。_ -- **[Farcaster](https://farcaster.xyz/)** - _Farcaster 是一个足够分散的社交网络。 它是一个开放的协议,可以支持许多客户端,就像电子邮件。_ +- **[Status.app](https://status.app/)** - _Status 是一款安全的消息应用程序,它使用开源的对等协议和端到端加密来保护您的消息不受第三方侵害。_ +- **[Mirror.xyz](https://mirror.xyz/)** - _Mirror 是一个基于以太坊的去中心化、用户所有的发布平台,供用户众筹创意、将内容货币化并创建高价值社区。_ +- **[Lens Protocol](https://lens.xyz/)** - _Lens Protocol 是一个可组合的去中心化社交图谱,可帮助创作者在去中心化互联网的数字花园中的任何地方,都拥有其内容的所有权。_ +- **[Farcaster](https://farcaster.xyz/)** - _Farcaster 是一个足够去中心化的社交网络。 _它是一个开放协议,可以支持许多客户端,就像电子邮件一样。_ +- **[Ethereum Follow Protocol](https://efp.app/)** - _Ethereum Follow Protocol 是一个为以太坊账户设计的完全去中心化的链上社交图谱,它推动了模块化以太坊身份堆栈的愿景,并对 ENS 和 SIWE 进行了补充。_ +- **[Ethereum Comments Protocol](https://www.ethcomments.xyz/)** - _以太坊上的一种新型、可编程的社交内容原语,可将你的想法发布在链上。_ ## 以太坊上的 Web2 社交网络 {#web2-social-networks-and-ethereum} -[Web3](/glossary/#web3) 原生社交平台并不是唯一试图将区块链技术融入社交媒体的平台。 许多中心化平台也计划将以太坊集成到他们的基础结构中: +[Web3](/glossary/#web3) 原生社交平台并不是唯一试图将区块链技术融入社交媒体的平台。 许多中心化平台也正在探索或尝试将以太坊整合到其基础设施中: + +### Brave 浏览器 {#brave} + +- Brave 已将基于以太坊构建的 ERC-20 代币 **[基本注意力代币 (BAT)](https://basicattentiontoken.org/)** 集成到其浏览器生态系统中,旨在彻底改变数字广告和对内容创作者的支持。 + +- \*\*[Brave 奖励计划](https://brave.com/brave-rewards/)\*\*允许用户通过观看尊重隐私的广告来赚取 BAT,然后根据关注时间自动向 YouTube、Twitter 和 GitHub 等各种平台上的网站和内容创作者捐款。 + +- 内容创作者可以注册成为 **[Brave 认证创作者](https://creators.brave.com/)**,直接在其以太坊钱包中接收这些捐款,从而在传统网络平台和基于区块链的货币化之间架起一座桥梁。 + +- BAT 代币独立存在于以太坊区块链上,允许用户在赚取后将其转移到个人钱包或交易所。 + +### Audius 音乐平台 {#audius} + +- **[Audius](https://audius.co/)** 是一个音乐流媒体平台,使用以太坊区块链技术将艺术家与粉丝直接联系起来。 + +- 该平台采用混合去中心化架构,内容存储在 IPFS 上,同时利用区块链来管理所有权和 **[AUDIO 代币](https://eth.blockscout.com/token/0x18aaa7115705e8be94bffebde57af9bfc265b998)**。 + +- Audius **[与 TikTok 建立了合作伙伴关系](https://audius.co/tiktok)**,将 Web3 功能带给主流受众,并允许艺术家通过区块链技术将其内容货币化。 + +- 该平台的技术细节可在其\*\*[白皮书](https://whitepaper.audius.co/)\*\*中找到,其中说明了他们是如何在以太坊基础设施之上进行构建的。 + +### Sorare 梦幻体育 {#sorare} + +- **[Sorare](https://sorare.com/)** 是一个\*\*[基于以太坊构建的梦幻体育平台](https://sorare.com/help/a/4402888626577/what-is-a-sorare-wallet)\*\*,允许用户收集、交易和使用官方 NFT 球员卡进行游戏。 + +- 球员卡是存在于以太坊区块链上可验证的 NFT,该平台的智能合约可以在 **[Etherscan](https://eth.blockscout.com/address/0x629a673a8242c2ac4b7b8c5d8735fbeac21a6205?tab=contract)** 上查看。 + +- Sorare 将传统的梦幻体育游戏玩法与数字资产的区块链所有权相结合,为主流体育迷带来了\*\*[以太坊注资](https://sorare.com/help/a/10969733392797/what-network-should-i-use-to-fund-my-eth-wallet)\*\*功能。 -### Reddit {#reddit} +### Twitter/X (加密货币小费) {#twitter} -Reddit 提供[回赠式社区积分](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users),即 ERC-20 代币,用户可以通过发布优质内容或为在线社区 (subreddit) 做出贡献来赚取它们。 你可以在 subreddit 中兑换这些代币以获得独有的特权和福利。 对于此项目,Reddit 正与 Arbitrum 进行合作,后者是一个旨在扩展以太坊交易的[二层](/glossary/#layer-2)网络。 +**[Twitter](https://x.com)**(现为 X)已通过多种方式融合区块链技术,以增强创作者的货币化和数字身份验证: -该程序已经上线,r/CryptoCurrency subreddit [运行其名为“Moons”的社区积分版本](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki)。 根据官方描述,Moons“奖励发布者、评论者和版主对 subreddit 的贡献。” 因为这些代币在区块链上进行交易(代币会直接进入用户钱包),代币与 Reddit 无关,因此其他人无法获取用户的代币。 +- **加密货币小费**:该平台集成了\*\*[以太坊小费](https://help.x.com/en/using-x/tips)\*\*功能,使用户能够通过 Strike 等基于以太坊的钱包发送付款。 -除了使用社区积分来解锁特殊功能外,用户还可以在交易所用它们换取法币。 此外,用户拥有的社区积分决定了他们对社区中决策过程的影响力。 +通过集成区块链功能,X 正在弥合 Web2 社交体验与去中心化数字所有权之间的差距。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} ### 文章 {#articles} -- [去中心化社交媒体:web3 社交堆栈指南](https://www.coinbase.com/blog/decentralizing-social-media-a-guide-to-the-web3-social-stack) - _Coinbase Ventures_ -- [社交网络是去中心化的下一个大机遇](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _Ben Goertzel_ -- [Web3 可能实现去中心化的社区推动社交网络](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) — _Sumit Ghosh_ -- [区块链社交媒体发展形势概述](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Gemini Cryptopedia_ +- [社交媒体去中心化:web3 社交堆栈指南](https://www.coinbase.com/blog/decentralizing-social-media-a-guide-to-the-web3-social-stack) - _Coinbase Ventures_ +- [社交网络是下一个巨大的去中心化机遇](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _Ben Goertzel_ +- [Web3 带来了去中心化、社区驱动的社交网络前景](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) — _Sumit Ghosh_ +- [区块链社交媒体格局概览](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Gemini Cryptopedia_ - [区块链如何解决社交媒体的隐私问题](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) — _Prableen Bajpai_ -- [社交网络的充分去中心化](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks) - _Varun Srinivasan_ +- [社交网络的充分去中心化](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks) — _Varun Srinivasan_ ### 视频 {#videos} -- [去中心化社交媒体阐述](https://www.youtube.com/watch?v=UdT2lpcGvcQ) — _Coinmarketcap_ +- [去中心化社交媒体详解](https://www.youtube.com/watch?v=UdT2lpcGvcQ) — _Coinmarketcap_ - [DeSo 区块链希望将社交媒体去中心化](https://www.youtube.com/watch?v=SG2HUiVp0rE) — _Bloomberg Technology_ -- [去中心化社交媒体,以及 Balaji Srinivasan、Vitalik Buterin、Juan Benet 的未来](https://www.youtube.com/watch?v=DTxE9KV3YrE) — _ETHGlobal_ +- [去中心化社交媒体的未来,与 Balaji Srinivasan、Vitalik Buterin、Juan Benet 对话](https://www.youtube.com/watch?v=DTxE9KV3YrE) — _ETHGlobal_ ### 社区 {#communities} From 027b7eddffc2c4d4fc5474c9788ca624d0a801df Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:41 -0800 Subject: [PATCH 050/581] update(i18n): public/content/translations/zh/refi/index.md --- public/content/translations/zh/refi/index.md | 44 ++++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/public/content/translations/zh/refi/index.md b/public/content/translations/zh/refi/index.md index 6759decae1a..035710acb6d 100644 --- a/public/content/translations/zh/refi/index.md +++ b/public/content/translations/zh/refi/index.md @@ -14,25 +14,25 @@ summaryPoint3: 一种可以大幅扩展生态效益资产的工具,例如经 ## 什么是再生金融? {#what-is-refi} -**再生金融 (ReFi) **是一套建立在[区块链](/glossary/#blockchain)之上的工具和理念,旨在创建与攫取型或剥削型经济不同的再生型经济。 最终,攫取型体系在耗尽所有可用资源后崩溃;没有再生机制,体系缺乏恢复能力。 再生金融的运作基于一个假设,即货币价值的创造必须同向我们的星球和社区不可持续地攫取资源脱钩。 +**再生金融 (ReFi)** 是一套建立在[区块链](/glossary/#blockchain)之上的工具和理念,旨在创建与攫取型或剥削型经济不同的再生型经济。 最终,攫取型体系在耗尽所有可用资源后崩溃;没有再生机制,体系缺乏恢复能力。 再生金融的运作基于一个假设,即货币价值的创造必须同向我们的星球和社区不可持续地攫取资源脱钩。 然而,再生金融旨在通过建立再生循环来解决环境、公共或社会问题。 这些体系为参与者创造价值,同时使生态系统和社区受益。 -再生金融的基础之一是由 Capital Institute(资本研究院)的 John Fullerton 开创的再生经济学概念。 他提出了[ 8 项相互关联的原则,](https://capitalinstitute.org/8-principles-regenerative-economy/)作为保持体系健康的基础: +再生金融的基础之一是由 Capital Institute(资本研究院)的 John Fullerton 开创的再生经济学概念。 他提出了[八项相互关联的原则](https://capitalinstitute.org/8-principles-regenerative-economy/),这些原则是系统性健康的基础: -![8 项相互关联的原则](refi-regenerative-economy-diagram.png) +![八项相互关联的原则](refi-regenerative-economy-diagram.png) -再生金融项目借助[智能合约](/glossary/#smart-contract)和[去中心化金融 (DeFi)](/glossary/#defi) 应用程序来实现这些原则,以激励再生行为(例如恢复退化的生态系统)并推动气候变化和生物多样性丧失等全球问题上的大规模合作。 +再生金融 (ReFi) 项目借助[智能合约](/glossary/#smart-contract)和[去中心化金融 (DeFi)](/glossary/#defi) 应用程序来实现这些原则,以激励再生行为(例如恢复退化的生态系统),并促进就气候变化和生物多样性丧失等全球问题展开大规模合作。 -再生金融还与[去中心化科学 (DeSci)](/desci/) 重叠,后者使用以太坊作为资助、创作、审查、增加、存储和传播科学知识的平台。 去中心化科学工具可用于制定可验证的标准和实践,以实施和监测再生活动,如植树,清理海洋中的塑料或恢复退化的生态系统。 +再生金融还与[去中心化科学 (DeSci)](/desci/) 运动重叠,后者使用以太坊作为平台来资助、创建、审查、记入、存储和传播科学知识。 去中心化科学工具可用于制定可验证的标准和实践,以实施和监测再生活动,如植树,清理海洋中的塑料或恢复退化的生态系统。 -## 碳信用代币化 {#tokenization-of-carbon-credits} +## 碳信用的代币化 {#tokenization-of-carbon-credits} -**[自愿碳市场 (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** 是一种资助机制,用于资助对碳排放产生积极影响的项目,例如可以减少持续进行的排放,也可以清理已经排放到大气中的温室气体。 这些项目在经过验证后会获得一种称为“碳信用”的资产,碳信用可以出售给希望支持气候行动的个人和组织。 +**[自愿碳市场 (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** 是一种资助机制,用于资助对碳排放产生可验证的积极影响的项目,既可以减少持续进行的排放,也可以清除已经排放到大气中的温室气体。 这些项目在经过验证后会获得一种称为“碳信用”的资产,碳信用可以出售给希望支持气候行动的个人和组织。 -除自愿碳市场外,还有几个政府批准的碳市场(“合规市场”),旨在于某个司法管辖区(例如国家或地区)内通过法律或法规建立碳价格,控制要分发的许可证的供应。 合规市场激励其司法管辖区内的污染者减少排放,但无法清理已经排放的温室气体。 +除了自愿碳市场 (VCM),还有几个政府强制的碳市场(“合规市场”),旨在于某个司法管辖区(例如国家或地区)内通过法律或法规建立碳价格,控制要分发的许可证的供应。 合规市场激励其司法管辖区内的污染者减少排放,但无法清理已经排放的温室气体。 尽管近几十年来一直在发展,但自愿碳市场一直受到各种问题的困扰: @@ -42,32 +42,32 @@ summaryPoint3: 一种可以大幅扩展生态效益资产的工具,例如经 4. 极慢的交易速度 5. 缺乏可扩展性 -从自愿碳市场过渡到基于区块链的新型**数字碳市场 (DCM) **也许是一次升级现有碳信用验证、交易和使用技术的机会。 区块链允许可公开验证的数据,为广泛的用户提供访问权限并拥有更多流动性。 +将自愿碳市场 (VCM) 过渡到基于区块链的新型**数字碳市场 (DCM)** 也许是一次升级现有碳信用验证、交易和使用技术的机会。 区块链允许可公开验证的数据,为广泛的用户提供访问权限并拥有更多流动性。 再生金融项目利用区块链技术来缓解传统市场中的诸多问题: -- **流动性集中在少数几个可以由任何人自由交易的流动性池中。** 大型组织和个人用户都可以在不需要手动搜索卖家/买家、支付参与费用或事先注册的情况下使用这些流动性池。 +- **流动性集中在少数几个可由任何人自由交易的流动性池中**。 大型组织和个人用户都可以在不需要手动搜索卖家/买家、支付参与费用或事先注册的情况下使用这些流动性池。 - **所有交易都记录在公共区块链上**。 一旦碳信用进入数字碳市场,由于交易活动引起的每个碳信用的路径始终都是有迹可查。 -- **交易的速度几乎是即时的。** 通过传统市场获得大量碳信用可能需要数天或数周,但在数字碳市场上仅需要几秒钟。 -- **交易活动在没有中介的情况下进行**,无需支付高额费用。 与传统碳信用相比,数字碳信用可以显著降低费用。 -- **数字碳市场具有可扩展性**,可以满足个人和跨国公司的需求。 +- **交易速度几乎是即时的**。 通过传统市场获得大量碳信用可能需要数天或数周,但在数字碳市场上仅需要几秒钟。 +- **交易活动在没有中介的情况下进行**,因而避免了高额费用。 与传统碳信用相比,数字碳信用可以显著降低费用。 +- **数字碳市场 (DCM) 是可扩展的**,能够同时满足个人和跨国公司的需求。 -### 数字碳市场的关键构成部分 {#key-components-dcm} +### 数字碳市场 (DCM) 的关键组成部分 {#key-components-dcm} 四大主要版块构成了数字碳市场的当前格局: -1. 诸如 [Verra](https://verra.org/project/vcs-program/registry-system/) 和 [Gold Standard](https://www.goldstandard.org/) 这类注册机构确保创建碳信用的项目是可靠的。 它们还运营着数字碳信用的源头数据库,碳信用可以在数据库中转移或使用(清退)。 +1. [Verra](https://verra.org/project/vcs-program/registry-system/) 和 [Gold Standard](https://www.goldstandard.org/) 等注册机构确保创建碳信用的项目是可靠的。 它们还运营着数字碳信用的源头数据库,碳信用可以在数据库中转移或使用(清退)。 新一轮的创新项目正在区块链上构建,试图打破该领域的现有局面。 -2. 碳桥又称 代币转换器,它提供了一种技术,可以表示碳信用,或将碳信用从传统注册机构转移到数字碳市场。 重要的碳桥示例包括 [Toucan 协议](https://toucan.earth/)、[C3](https://c3.app/) 以及 [Moss.Earth](https://moss.earth/)。 +2. 碳桥又称 代币转换器,它提供了一种技术,可以表示碳信用,或将碳信用从传统注册机构转移到数字碳市场。 著名的例子包括 [Toucan Protocol](https://toucan.earth/)、[C3](https://c3.app/) 和 [Moss.Earth](https://moss.earth/)。 3. 综合服务向最终用户提供避免和/或消除碳排放的信用额度,这样他们就可以认领信用额度带来的环境效益,并与全世界分享他们对气候行动的支持。 -像 [Klima Infinity](https://www.klimadao.finance/infinity) 和 [Senken](https://senken.io/) 等一些服务提供由第三方依据已制定的标准(如 Verra)开发和发布的各种项目;而另一些服务(如 [Nori](https://nori.com/))仅提供依据它们自己的碳信用标准开发的特定项目,这些项目由它们自己发布并有自己的专用市场。 +有些项目(例如 [Klima Infinity](https://www.klimadao.finance/infinity) 和 [Senken](https://senken.io/))提供由第三方根据 Verra 等既定标准开发和发行的各种项目;而其他项目(例如 [Nori](https://nori.com/))仅提供根据其自己的碳信用标准开发的特定项目,这些项目由其自己发行,并拥有自己的专用市场。 4. 有助于碳市场整条供应链的影响和效率提升的底层保障和基础设施。 [KlimaDAO](http://klimadao.finance/) 将流动性作为公共物品提供(允许任何人以透明的价格购买或出售碳信用),通过奖励激励碳市场吞吐量的增加和碳信用的清退,并提供用户友好的可互操作工具,以访问有关各种代币化碳信用的数据以及获取和清退这些碳信用。 -## 再生金融在碳市场以外的应用 {#refi-beyond} +## 碳市场之外的再生金融 {#refi-beyond} 尽管目前普遍重点强调碳市场,特别是该领域内从自愿碳市场到数字碳市场的过渡,但“再生金融”一词并不严格局限于碳。 除碳信用以外,还可以开发和代币化其他环保资产,这意味着其他负外部效应也可以在未来经济体系的基础层内定价。 此外,这种经济模式的再生方面可以应用于其他领域,例如通过 [Gitcoin](https://gitcoin.co/) 等二次方融资平台为公共物品提供资金。 基于开放式参与和资源公平分配理念的组织让每个人都能为开源软件项目以及教育、环境和社区驱动的项目募集资金。 @@ -75,7 +75,7 @@ summaryPoint3: 一种可以大幅扩展生态效益资产的工具,例如经 ## 关于再生金融的延伸阅读 -- [碳货币及其在经济体系中的地位的高层概览](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency) -- [小说《The Ministry for the Future》(未来部)描写了一种锚定碳的货币在应对气候变化中发挥的作用。](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future) -- [扩大自愿碳市场工作组 (TSVCM) 的详细报告](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf) -- [CoinMarketCap 术语表中有关再生金融的条目,由Kevin Owocki 和 Evan Miyazono 撰写](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi) +- [关于碳货币及其在经济中地位的宏观概述](https://www.klimadao.finance/resources/the-vision-of-a-carbon-currency) +- [《未来部》(The Ministry for the Future),一部描述碳本位货币在应对气候变化中作用的小说](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future) +- [扩大自愿碳市场工作组 (Taskforce for Scaling Voluntary Carbon Markets) 的详细报告](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf) +- [Kevin Owocki 和 Evan Miyazono 在 CoinMarketCap 词汇表中关于再生金融 (ReFi) 的条目](https://coinmarketcap.com/academy/glossary/regenerative-finance-refi) From 4b7a3101c2a49f68764341808b67d5d911e12d7b Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:44 -0800 Subject: [PATCH 051/581] update(i18n): public/content/translations/zh/web3/index.md --- public/content/translations/zh/web3/index.md | 78 ++++++++++---------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/public/content/translations/zh/web3/index.md b/public/content/translations/zh/web3/index.md index 55999eaf1a1..79e0e5042ff 100644 --- a/public/content/translations/zh/web3/index.md +++ b/public/content/translations/zh/web3/index.md @@ -12,11 +12,12 @@ lang: zh 中心化网络已经帮助数十亿人融入了互联网,并在其上创建了稳定、可靠的基础设施。 与此同时,少数中心化巨头几乎垄断了互联网,甚至可以为所欲为。 -Web3 是摆脱这一困境的方案。 不同于科技巨头垄断的传统互联网,Web3 采用去中心化,由所有用户构建、运营和拥有。 Web3 将权力赋予个人而非公司。 在我们讨论 Web3 之前,先来看看我们是如何走到这一步的。 +Web3 是摆脱这一困境的方案。 不同于科技巨头垄断的传统互联网,Web3 采用去中心化,由所有用户构建、运营和拥有。 Web3 将权力赋予个人而非公司。 +在我们讨论 Web3 之前,先来看看我们是如何走到这一步的。 -## 早期的网络 {#early-internet} +## 早期网络 {#early-internet} 大多数人认为互联网是现代生活的一个持续支柱—自发明出来后就一直存在。 然而,我们今天大多数人所熟知的互联网与最初的想象有很大不同。 为了便于理解,可以将过去短暂的互联网历史分为两个时期—Web 1.0 和 Web 2.0。 @@ -26,34 +27,34 @@ Web3 是摆脱这一困境的方案。 不同于科技巨头垄断的传统互 Berners-Lee 创造的第一个万维网雏形,现在被称为“Web 1.0”,大约在 1990 年至 2004 年之间形成。 Web 1.0 主要是由公司拥有的静态网站,用户之间的互动几乎为零 - 个人很少创造内容,导致它被称为只读网络。 -![客户端服务器架构,代表 Web 1.0](./web1.png) +![代表 Web 1.0 的客户端-服务器架构](./web1.png) -### Web 2.0:能读能写(2004 年 - 至今) {#web2} +### Web 2.0:读写(2004 年至今) {#web2} 随着社交媒体平台的出现,Web 2.0 时期于 2004 年开启。 网络不再是只读的,它演变成读写网络。 互联网公司除了向用户提供内容外,还开始提供平台来共享用户生产的内容,并参与用户间的交互。 随着越来越多的人上网,少数互联网巨头开始掌控网络上海量的流量和价值。 Web 2.0 还催生了广告驱动的盈利模式。 虽然用户可以创作内容,但他们并不拥有内容或通过将内容变现来获益。 -![客户端服务器架构,代表 Web 2.0](./web2.png) +![代表 Web 2.0 的客户端-服务器架构](./web2.png) -## Web 3.0:能读 - 能写 - 能拥有 {#web3} +## Web 3.0:读-写-拥有 {#web3} -2014 年以太坊推出后不久,[以太坊](/what-is-ethereum/)联合创始人 Gavin Wood 就提出了“Web 3.0”的前提。 Gavin 为许多早期加密技术采用者所面临的问题,即互联网需要过多的信任,提供了一种解决方案。 也就是说,今天人们所知道和使用的大部分网络服务都依赖于对少数私人公司的信任,期待他们能以公众的最佳利益行事。 +“Web 3.0”的概念由 [以太坊](/what-is-ethereum/) 联合创始人 Gavin Wood 在 2014 年以太坊发布后不久提出。 Gavin 为许多早期加密技术采用者所面临的问题,即互联网需要过多的信任,提供了一种解决方案。 也就是说,今天人们所知道和使用的大部分网络服务都依赖于对少数私人公司的信任,期待他们能以公众的最佳利益行事。 -![去中心化节点架构,代表 Web3](./web3.png) +![代表 Web3 的去中心化节点架构](./web3.png) ### 什么是 Web3? {#what-is-web3} -Web3 已成为一个包罗万象的术语,代表了一个新的、更好的互联网愿景。 Web3 的核心是通过区块链、加密货币和非同质化代币将权力以所有权的形式归还用户。 [Twitter 上 2020 年的一篇帖子](https://twitter.com/himgajria/status/1266415636789334016)一语中的:Web1 是只读的,Web2 能读/能写,未来的 Web3 能读/能写/能拥有。 +Web3 已成为一个包罗万象的术语,代表了一个新的、更好的互联网愿景。 Web3 的核心是通过区块链、加密货币和非同质化代币将权力以所有权的形式归还用户。 [Twitter 上 2020 年的一篇帖子](https://twitter.com/himgajria/status/1266415636789334016)说得最好:Web1 是只读的,Web2 是读写的,Web3 将是读-写-拥有的。 -#### Web3 的核心思想 {#core-ideas} +#### Web3 的核心理念 {#core-ideas} 尽管很难对 Web3 做出严格的定义,但它是在几项核心原则的指引下创建的。 -- **Web3 是去中心化的:**大部分互联网不是由中心化实体控制和拥有的,而是由构建者和用户分配所有权。 -- **Web3 无需许可:**每个人都有参与 Web3 的平等权限,没有人被排除在外。 -- **Web3 具有原生支付功能:**它使用加密货币进行线上消费和汇款,而不是依赖传统银行或第三方支付机构过时的基础设施。 -- **Web3 去信任:**它通过激励措施和经济机制运转,而不是依赖受信任的第三方。 +- **Web3 是去中心化的:** 互联网的大部分不再由中心化实体控制和拥有,所有权分配给其构建者和用户。 +- **Web3 是无需许可的:** 每个人都能平等地参与 Web3,没有人会被排除在外。 +- **Web3 具有原生支付功能:** 它使用加密货币进行线上消费和汇款,而不是依赖于传统银行和支付处理商的过时基础设施。 +- **Web3 是无需信任的:** 它通过激励和经济机制运行,而不是依赖于受信任的第三方。 ### 为什么 Web3 很重要? {#why-is-web3-important} @@ -63,19 +64,19 @@ Web3 已成为一个包罗万象的术语,代表了一个新的、更好的互 Web3 以前所未有的方式赋予你数字资产的所有权。 例如,假设你正在玩一个 Web2 游戏。 如果你购买游戏内物品,它会直接与你的帐户绑定。 如果游戏创建者删除你的帐户,你将丢失这些物品。 或者如果你停止玩游戏,你将失去投资到游戏内物品的价值。 -Web3 允许通过[非同质化代币 (NFT)](/glossary/#nft) 直接拥有所有权。 任何人甚至是游戏创作者,都没有权力剥夺你的所有权。 而且,如果你停止玩这个游戏,你可以在公开市场上出售或交易你的游戏内物品并收回它们的价值。 +Web3 允许通过[非同质化代币 (NFT)](/glossary/#nft) 直接拥有所有权。 任何人甚至是游戏创作者,都没有权力剥夺你的所有权。 而且,如果你停止玩这个游戏,你可以在公开市场上出售或交易你的游戏内物品并收回它们的价值。 探索[链上游戏](/gaming/),了解它的实际运作方式。
了解更多有关非同质化代币的更多信息
- 关于非同质化代币的更多信息 + 更多关于 NFT 的信息
-#### 抗审查 {#censorship-resistance} +#### 抗审查性 {#censorship-resistance} 平台和内容创作者之间的权力关系严重失衡。 @@ -89,7 +90,7 @@ Web 2.0 需要内容创作者信任平台不会更改规则,但抗审查则是 在 Web3 中,除了拥有你的数据之外,通过使用类似于公司股票的代币,你还可以作为集体中的一员拥有这个平台。 去中心化自治组织让你可以协调平台的分散化所有权,以及对平台的未来做出决策。 -去中心化自治组织在技术上被定义为事先商定的[智能合约](/glossary/#smart-contract),可以自动做出关于资源池(代币)的去中心化决策。 拥有代币的用户对资源的使用方式进行投票,代码自动执行投票结果。 +从技术上讲,DAO 被定义为约定好的[智能合约](/glossary/#smart-contract),可对资源池(代币)自动执行去中心化决策。 拥有代币的用户对资源的使用方式进行投票,代码自动执行投票结果。 然而,许多 Web3 社区都被定义为去中心化自治组织。 这些社区都通过代码实现了不同程度的去中心化和自动化。 目前,我们仍在探索去中心化自治组织是什么以及它们在未来会如何发展。 @@ -98,7 +99,7 @@ Web 2.0 需要内容创作者信任平台不会更改规则,但抗审查则是
了解更多有关去中心化自治组织的信息
- 关于去中心化自治组织的更多信息 + 更多关于 DAO 的信息
@@ -107,14 +108,15 @@ Web 2.0 需要内容创作者信任平台不会更改规则,但抗审查则是 通常,你需要为使用的每个平台创建一个帐户。 例如,你可能有 Twitter 帐户、YouTube 帐户和 Reddit 帐户。 想要更改你的显示名称或个人资料图片? 你必须在每个帐户中执行此操作。 在某些情况下,你可以使用社交媒体帐户登录,但这会带来一个常见的问题—审查。 只需点一下,这些平台就可以封锁你的整个线上生活。 更糟糕的是,许多平台要求你给他们提供你的个人识别信息才能创建帐户。 -Web3 允许你使用以太坊地址和[以太坊域名服务 (ENS)](/glossary/#ens) 配置文件控制你的数字身份,从而解决了这些问题。 使用以太坊地址可以提供跨平台单点登录,这种登录安全、抗审查并且匿名。 +Web3 允许您通过以太坊地址和[以太坊域名服务 (ENS)](/glossary/#ens) 个人资料来控制您的数字身份,从而解决了这些问题。 使用以太坊地址可以提供跨平台单点登录,这种登录安全、抗审查并且匿名。 -### 原生支付功能 {#native-payments} +### 原生支付 {#native-payments} -Web2 的支付基础设施依赖于银行和第三方支付机构,这就把没有银行帐户或碰巧生活在某些“不好”国家/地区的人排除在外。 Web3 使用诸如[以太币](/glossary/#ether)之类的代币直接在浏览器中汇款,不需要受信任的第三方。 +Web2 的支付基础设施依赖于银行和第三方支付机构,这就把没有银行帐户或碰巧生活在某些“不好”国家/地区的人排除在外。 +Web3 使用像 [ETH](/glossary/#ether) 这样的代币直接在浏览器中汇款,且无需受信任的第三方。 - 有关以太币的更多信息 + 更多关于以太币的信息 ## Web3 的局限性 {#web3-limitations} @@ -123,17 +125,17 @@ Web2 的支付基础设施依赖于银行和第三方支付机构,这就把没 ### 可访问性 {#accessibility} -如今,人人都可以使用重要的 Web3 功能,例如使用以太坊登录,而且不会有任何费用。 但是,相对较高的交易成本仍然让许多人望而却步。 由于高昂的交易费用,Web3 不大可能在不太富裕的发展中国家使用。 在以太坊,正在通过[路线图](/roadmap/)和[二层网络扩容解决方案](/glossary/#layer-2)解决这些难题。 技术现成可用,但我们需要提高技术在二层网络的采用程度,才能让每个人都能使用 Web3。 +如今,人人都可以使用重要的 Web3 功能,例如使用以太坊登录,而且不会有任何费用。 但是,相对较高的交易成本仍然让许多人望而却步。 由于高昂的交易费用,Web3 不大可能在不太富裕的发展中国家使用。 在以太坊上,这些挑战正通过[路线图](/roadmap/)和[二层网络扩容解决方案](/glossary/#layer-2)来解决。 技术现成可用,但我们需要提高技术在二层网络的采用程度,才能让每个人都能使用 Web3。 ### 用户体验 {#user-experience} -目前使用 Web3 的技术门槛太高了。 用户必须了解安全问题,通晓复杂的技术文档并浏览晦涩的用户界面。 [钱包提供商](/wallets/find-wallet/)正在努力着重解决这个问题,但在 Web3 大规模采用之前还有很长的路要走。 +目前使用 Web3 的技术门槛太高了。 用户必须了解安全问题,通晓复杂的技术文档并浏览晦涩的用户界面。 特别是[钱包提供商](/wallets/find-wallet/),正在努力解决这个问题,但在 Web3 被大规模采用之前,还需要取得更多进展。 ### 教育 {#education} -Web3 引入了新的范式,这些范式要求学习不同于 Web2.0 上使用的心理模型。 随着 Web1.0 在 90 年代后期兴起,类似的教育活动也出现了。万维网的支持者使用一系列教育技术来教育公众,从简单的比喻(信息高速公路、浏览器、网上冲浪)到[电视播放](https://www.youtube.com/watch?v=SzQLI7BxfYI)等等不一而足。 Web3 并不难但却不同。 让 Web2 用户了解这些 Web3 范式的教育计划对其成功至关重要。 +Web3 引入了新的范式,这些范式要求学习不同于 Web2.0 上使用的心理模型。 在 1990 年代末 Web1.0 普及之时,也曾有过类似的教育推广活动;万维网的支持者使用了一系列教育方法来教导公众,从简单的比喻(信息高速公路、浏览器、网上冲浪)到[电视广播](https://www.youtube.com/watch?v=SzQLI7BxfYI)等。 Web3 并不难但却不同。 让 Web2 用户了解这些 Web3 范式的教育计划对其成功至关重要。 -Ethereum.org 通过我们的[翻译计划](/contributing/translation-program/)推动 Web3 教育,旨在将重要的以太坊内容翻译成尽可能多的语言。 +Ethereum.org 通过我们的[翻译计划](/contributing/translation-program/)为 Web3 教育做出贡献,旨在将重要的以太坊内容翻译成尽可能多的语言。 ### 中心化基础设施 {#centralized-infrastructure} @@ -145,23 +147,23 @@ Web3 是一个年轻且不断发展的生态系统。 Gavin Wood 在 2014 年创 我们才刚刚开始用 Web3 创建更美好的互联网,但随着我们持续改进它的基础设施,互联网的未来看起来一片光明。 -## 我如何参与 {#get-involved} +## 如何参与 {#get-involved} - [获取钱包](/wallets/) - [寻找社区](/community/) -- [探索 Web3 应用程序](/apps/) -- [加入去中心化自治组织](/dao/) -- [基于 Web3 构建](/developers/) +- [探索 Web3 应用](/apps/) +- [加入 DAO](/dao/) +- [在 Web3 上构建](/developers/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -Web3 没有严格的定义。 不同的社区参与者对其有不同的看法。 例如: +Web3 没有严格的定义。 不同的社区参与者对其有不同的看法。 以下是其中一部分: -- [什么是 Web3? 解析未来的去中心化互联网](https://www.freecodecamp.org/news/what-is-web3) – _Nader Dabit_ -- [理解 Web 3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _ Josh Stark_ -- [为什么 Web3 很重要](https://future.a16z.com/why-web3-matters/) — _Chris Dixon_ +- [什么是 Web3? 详解未来的去中心化互联网](https://www.freecodecamp.org/news/what-is-web3) – _Nader Dabit_ +- [理解 Web 3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _Josh Stark_ +- [为什么 Web3 很重要](https://a16zcrypto.com/posts/article/why-web3-matters/) — _Chris Dixon_ - [为什么去中心化很重要](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) - _Chris Dixon_ -- [Web3 概况](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_ -- [Web3 之辩论](https://www.notboring.co/p/the-web3-debate) – _Packy McCormick_ +- [Web3 格局](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_ +- [Web3 之辩](https://www.notboring.co/p/the-web3-debate) – _Packy McCormick_ From 65a9df55df5ebd2b25ef49b6d074c9a119d9a9d5 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:47 -0800 Subject: [PATCH 052/581] update(i18n): public/content/translations/zh/eips/index.md --- public/content/translations/zh/eips/index.md | 41 ++++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/public/content/translations/zh/eips/index.md b/public/content/translations/zh/eips/index.md index 7ee560e0fb4..194c3d45b6d 100644 --- a/public/content/translations/zh/eips/index.md +++ b/public/content/translations/zh/eips/index.md @@ -4,25 +4,25 @@ description: 了解以太坊改进提案所需的基本信息 lang: zh --- -# 以太坊改进提案 (EIP) 介绍 {#introduction-to-ethereum-improvement-proposals} +# 以太坊改进提议 (EIP) 简介 {#introduction-to-ethereum-improvement-proposals} ## 什么是 EIP? {#what-are-eips} -[以太坊改进提案 (EIP)](https://eips.ethereum.org/)是为以太坊潜在新功能或流程提出建议的标准。 EIP 包含提议改进的技术规范,并作为社区的“真相来源”。 在 EIP 的过程中,将会讨论和制定以太坊的网络升级和应用标准。 +[以太坊改进提议 (EIP)](https://eips.ethereum.org/) 是为以太坊指定潜在新功能或流程的标准。 EIP 包含提议改进的技术规范,并作为社区的“真相来源”。 在 EIP 的过程中,将会讨论和制定以太坊的网络升级和应用标准。 -以太坊社区中的任何人都可以创造一个 EIP。 以太坊改进提案编写准则在 [EIP 1](https://eips.ethereum.org/EIPS/eip-1) 中提供。 以太坊改进提案应主要包括简明技术规范,并提供一些激励措施。 以太坊改进提案的创作者负责在社区内建立共识并记录不同意见。 从历史上看,大多数以太坊改进提案的创作者通常是应用程序或协议开发者,因为提交高水平的以太坊改进提案需要很强的技术能力。 +以太坊社区中的任何人都可以创造一个 EIP。 编写 EIP 的指南包含在 [EIP-1](https://eips.ethereum.org/EIPS/eip-1) 中。 以太坊改进提案应主要包括简明技术规范,并提供一些激励措施。 以太坊改进提案的创作者负责在社区内建立共识并记录不同意见。 从历史上看,大多数以太坊改进提案的创作者通常是应用程序或协议开发者,因为提交高水平的以太坊改进提案需要很强的技术能力。 ## 为什么 EIP 很重要? {#why-do-eips-matter} -EIP 作为一个中心角色,记载以太坊的变化并且记载在以太坊中。 它们是人们提议、辩论和适应变化的途径。 有[各种不同种类的以太坊改进提案](https://eips.ethereum.org/EIPS/eip-1#eip-types),其中包括涉及底层协议更改,影响共识并需要网络升级的核心以太坊改进提案,例如 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559),还有应用程序标准相关的以太坊意见征求,例如 [EIP-20](https://eips.ethereum.org/EIPS/eip-20) 和 [EIP-721](https://eips.ethereum.org/EIPS/eip-721)。 +EIP 作为一个中心角色,记载以太坊的变化并且记载在以太坊中。 它们是人们提出、讨论和采纳变更的途径。 EIP 有[多种不同类型](https://eips.ethereum.org/EIPS/eip-1#eip-types),包括用于影响共识且需要进行网络升级(例如 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559))的低级别协议变更的核心 EIP,以及用于应用程序标准(例如 [EIP-20](https://eips.ethereum.org/EIPS/eip-20) 和 [EIP-721](https://eips.ethereum.org/EIPS/eip-721))的 ERC。 -每个网络升级都包含一组 EIP,需要网络上每个 [以太坊客户端](/learn/#clients-and-nodes)来执行。 这就意味着要想在以太坊主网上与其他客户端保持共识,客户端开发者需要确保他们已经全部实现了必需的以太坊改进提案。 +每次网络升级都包含一组 EIP,网络上的每个[以太坊客户端](/learn/#clients-and-nodes)都需要实现这些 EIP。 这就意味着要想在以太坊主网上与其他客户端保持共识,客户端开发者需要确保他们已经全部实现了必需的以太坊改进提案。 在提供变更技术规格的同时,EIP 是以太坊社区治理的基本单位。任何人都可以自由提议,然后由社区不同的参与者讨论,决定是否将其发展为通用标准或者加入到网络升级中。 因为非核心以太坊改进提案不必被所有应用程序采用(例如,可以创建未实现 EIP-20 的同质化代币),而核心以太坊改进提案必须要广泛采用(因为所有节点都必须升级才能一直属于同一网络),因此与非核心以太坊改进提案相比,核心以太坊改进提案需要在社区内达成更广泛的共识。 -## EIP 历史 {#history-of-eips} +## EIP 的历史 {#history-of-eips} -[Ethereum Improvement Proposals (EIP) GitHub 存储库](https://github.com/ethereum/EIPs) 于 2015 年 10 月创建。 EIP 进程基于[比特币改进提议 (BIP)](https://github.com/bitcoin/bips) 进程。它本身基于 [Python 增强提议 (PEP)](https://www.python.org/dev/peps/) 进程。 +[以太坊改进提议 (EIP) GitHub 代码库](https://github.com/ethereum/EIPs)创建于 2015 年 10 月。 EIP 流程基于[比特币改进提议 (BIP)](https://github.com/bitcoin/bips) 流程,而 BIP 流程本身又基于[Python 增强提案 (PEP)](https://www.python.org/dev/peps/) 流程。 以太坊改进提案编辑人员的任务是审查以太坊改进提案的技术可靠性、格式问题,并校正拼写、语法和代码风格。 Martin Becze、Vitalik Buterin、Gavin Wood 和其他一些人是 2015 年至 2016 年末最初的 EIP 编辑者。 @@ -44,33 +44,32 @@ EIP 作为一个中心角色,记载以太坊的变化并且记载在以太坊 - Nick Savers (@nicksavers) - Vitalik Buterin (@vbuterin) -如果你想成为以太坊改进提案编辑人员,请查看 [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069)。 +若想成为 EIP 编辑,请查阅 [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069)。 -以太坊改进提案编辑人员决定一个提议何时可以成为以太坊改进提案,并帮助以太坊改进提案创作者们推进他们的提议。 以太坊改进提案编辑人员和社区之间的会议由[以太坊牧猫人组织](https://www.ethereumcatherders.com/)协助组织(请参阅 [EIPIP](https://github.com/ethereum-cat-herders/EIPIP))。 +以太坊改进提案编辑人员决定一个提议何时可以成为以太坊改进提案,并帮助以太坊改进提案创作者们推进他们的提议。 [Ethereum Cat Herders](https://www.ethereumcatherders.com/) 帮助组织 EIP 编辑与社区之间的会议(参见 [EIPIP](https://github.com/ethereum-cat-herders/EIPIP))。 -完整的标准化流程和图表在 [EIP-1](https://eips.ethereum.org/EIPS/eip-1) 中描述 +[EIP-1](https://eips.ethereum.org/EIPS/eip-1) 中描述了完整的标准化流程及图表。 ## 了解更多 {#learn-more} -如果你有兴趣详细了解以太坊改进提案,请查看[以太坊改进提案网站](https://eips.ethereum.org/)和[ EIP-1](https://eips.ethereum.org/EIPS/eip-1)。 下面是一些有用的链接: +若有兴趣阅读更多关于 EIP 的信息,请查看 [EIP 网站](https://eips.ethereum.org/)和 [EIP-1](https://eips.ethereum.org/EIPS/eip-1)。 下面是一些有用的链接: -- [以太坊改进提案列表](https://eips.ethereum.org/all) -- [所以太坊改进提案类型说明](https://eips.ethereum.org/EIPS/eip-1#eip-types) -- [所有以太坊改进提案状态说明](https://eips.ethereum.org/EIPS/eip-1#eip-process) +- [所有以太坊改进提议的列表](https://eips.ethereum.org/all) +- [所有 EIP 类型的说明](https://eips.ethereum.org/EIPS/eip-1#eip-types) +- [所有 EIP 状态的说明](https://eips.ethereum.org/EIPS/eip-1#eip-process) ### 社区教育项目 {#community-projects} -- [PEEPanEIP](https://www.youtube.com/playlist?list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F) — *PEEPanEIP 是一系列教学视频,讨论以太坊改进提案 (EIP) 和即将到来的升级中的关键特性。* -- [EIPs For Nerds](https://ethereum2077.substack.com/t/eip-research) — *EIPs For Nerds 针对各种以太坊改进提案 (EIP)(包括核心以太坊改进提案以及应用程序/基础设施层以太坊改进提案 (ERC))提供 ELI5 风格的全面概述,以教育读者并围绕以太坊协议的提议改进达成共识。* -- [EIPs.wtf](https://www.eips.wtf/) — *EIPs.wtf 提供以太坊改进提议 (EIP) 的额外信息,包括它们的状态、实现细节、相关拉取请求,以及社区反馈。* -- [EIP.Fun](https://eipfun.substack.com/) — *EIP.Fun 提供关于以太坊改进提议 (EIP)、以太坊改进提议会议更新等等的最新消息。* -- [EIPs Insight](https://eipsinsight.com/) — *EIPs Insight 根据从不同来源收集的信息,表示以太坊改进提议 (EIP) 流程和统计数据的状态。* +- [PEEPanEIP](https://www.youtube.com/playlist?list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F) — _PEEPanEIP 是一个教育视频系列,讨论以太坊改进提议 (EIP) 和即将进行的升级的关键特性。_ +- [EIPs.wtf](https://www.eips.wtf/) — _EIPs.wtf 为以太坊改进提议 (EIP) 提供额外信息,包括其状态、实现详情、相关拉取请求和社区反馈。_ +- [EIP.Fun](https://eipfun.substack.com/) — _EIP.Fun 提供有关以太坊改进提议 (EIP) 的最新消息、EIP 会议的最新动态等。_ +- [EIPs Insight](https://eipsinsight.com/) — _EIPs Insight 根据从不同资源收集的信息,展示以太坊改进提议 (EIP) 流程的状态和统计数据。_ ## 参与 {#participate} -任何人都可以创建以太坊改进提案。 提交提议之前,请务必阅读[ EIP-1](https://eips.ethereum.org/EIPS/eip-1),其中概述了以太坊改进提案流程以及如何编写以太坊改进提案,而且在[以太坊魔术师](https://ethereum-magicians.org/)论坛上征求反馈意见并首先与社区讨论提议,然后再提交提议草案。 +任何人都可以创建以太坊改进提案。 在提交提案前,必须阅读 [EIP-1](https://eips.ethereum.org/EIPS/eip-1)(其中概述了 EIP 流程以及如何编写 EIP),并在 [Ethereum Magicians](https://ethereum-magicians.org/) 论坛上征求反馈。提案草案在提交前会先在该论坛上与社区进行讨论。 -## 引用 {#references} +## 参考文献 {#references} From f1fa864c2df7105c74ee741247e2143250b911c9 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:49 -0800 Subject: [PATCH 053/581] update(i18n): public/content/translations/zh/community/support/index.md --- .../zh/community/support/index.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/public/content/translations/zh/community/support/index.md b/public/content/translations/zh/community/support/index.md index a0b54ff06b3..c957bd9ecbb 100644 --- a/public/content/translations/zh/community/support/index.md +++ b/public/content/translations/zh/community/support/index.md @@ -10,10 +10,10 @@ lang: zh 你正在寻求以太坊官方支持吗? 你应该知道的第一件事是以太坊是去中心化的。 这意味着以太坊不属于任何中心化组织、实体或个人,因此没有官方支持渠道。 -了解以太坊的去中心化特点非常重要,因为**任何声称自己是以太坊官方支持人员的人都可能在试图诈骗你!**防范诈骗的最好方式是自学并认真对待安全问题。 +了解以太坊的去中心化特点非常重要,因为\*\*任何声称自己是以太坊官方支持人员的人都可能在试图诈骗你!\*\*防范诈骗的最好方式是自学并认真对待安全问题。 - 以太坊安全和预防欺诈措施 + 以太坊安全和预防诈骗 @@ -22,9 +22,9 @@ lang: zh 尽管缺乏官方支持,但以太坊生态系统中的许多团体、社区和项目都乐于提供帮助,并且你可以在此页面上找到很多有用的信息和资源。 还有问题吗? 加入 [ethereum.org Discord](https://discord.gg/ethereum-org),我们会尽力提供帮助。 -## 常见问题 {#faq} +## 常见问题{#faq} -### 我把以太币发到了错误的钱包中 {#wrong-wallet} +### 我把 ETH 发送到错误的钱包了 {#wrong-wallet} 以太坊上发送的交易是不可逆的。 如果你将以太币发送到错误的钱包,很遗憾,没有办法追回这些资金。 以太坊不属于任何中心化组织、实体或个人,这意味着没有人可以逆转交易。 因此,在发送交易之前,一定要仔细检查你的交易,这一点至关重要。 @@ -32,23 +32,23 @@ lang: zh 以太坊赠品是用来窃取你以太币的骗局。 不要被看起来好得令人难以置信的优惠所诱惑 — 如果你将以太币发送到赠品地址,你不但收不到赠品,还将无法追回你的资金。 -[关于预防诈骗的更多信息](/security/#common-scams) +[更多关于预防诈骗的内容](/security/#common-scams) ### 我的交易卡住了 {#stuck-transaction} 如果你提交的交易费低于网络需求,以太坊上的交易有时会被卡住。 许多钱包提供了一个选项,即以更高的交易费重新提交同一项交易,使该交易得以处理。 或者,你可以发送交易到你自己的地址,并使用与待定交易相同的随机数,以取消待定交易。 -[如何在 MetaMask 上加速或取消待定交易](https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-speed-up-or-cancel-a-pending-transaction) +[如何在 MetaMask 上加速或取消待处理的交易](https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-speed-up-or-cancel-a-pending-transaction) -[如何取消待定以太坊交易](https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/) +[如何取消待处理的以太坊交易](https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/) ### 我如何在以太坊挖矿? {#mining-ethereum} -以太坊不再支持挖矿。 在以太坊从[工作量证明](/glossary/#pow)过渡到[权益证明](/glossary/#pos)后,挖矿就终止了。 现在,以太坊使用验证者而不是矿工。 任何人都可以[质押](/glossary/#staking)以太币并运行验证者软件保护网络,从而获取质押奖励。 +以太坊不再支持挖矿。 在以太坊从[工作量证明](/glossary/#pow)过渡到[权益证明](/glossary/#pos)后,挖矿就终止了。 现在,以太坊使用验证者而不是矿工。 任何人都可以[质押](/glossary/#staking) ETH,并通过运行验证者软件来保障网络安全,从而获得质押奖励。 ### 我如何成为质押者/运行验证者? {#how-to-stake} -要成为验证者,你必须在以太坊存款合约中质押 32 个以太币并搭建一个验证节点。 更多信息见[质押界面](/staking)和[质押启动版](https://launchpad.ethereum.org/)。 +要成为验证者,你必须在以太坊存款合约中质押 32 个以太币并搭建一个验证节点。 更多信息可在我们的[质押页面](/staking)和[质押启动板](https://launchpad.ethereum.org/)上找到。 ## 构建去中心化应用程序 {#building-support} @@ -56,7 +56,7 @@ lang: zh - [Alchemy University](https://university.alchemy.com/#starter_code) - [CryptoDevs discord](https://discord.com/invite/5W5tVb3) -- [以太坊堆栈交易所](https://ethereum.stackexchange.com/) +- [Ethereum StackExchange](https://ethereum.stackexchange.com/) - [Web3 University](https://www.web3.university/) - [LearnWeb3](https://discord.com/invite/learnweb3) @@ -71,7 +71,7 @@ lang: zh - [Solidity](https://gitter.im/ethereum/solidity) - [ethers.js](https://discord.gg/6jyGVDK6Jx) - [web3.js](https://discord.gg/GsABYQu4sC) -- [安全帽](https://discord.gg/xtrMGhmbfZ) +- [Hardhat](https://discord.gg/xtrMGhmbfZ) - [Alchemy](http://alchemy.com/discord) - [Tenderly](https://discord.gg/fBvDJYR) @@ -101,4 +101,4 @@ lang: zh - [Lodestar](https://discord.gg/aMxzVcr) - [Grandine](https://discord.gg/H9XCdUSyZd) -你还可以[在此处了解如何运行节点](/developers/docs/nodes-and-clients/run-a-node/)。 +你也可以[在此处学习如何运行节点](/developers/docs/nodes-and-clients/run-a-node/)。 From 12b714ee743ab4f3a9ab375201507b1e17b4ace8 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:52 -0800 Subject: [PATCH 054/581] update(i18n): public/content/translations/zh/about/index.md --- public/content/translations/zh/about/index.md | 63 ++++++++++--------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/public/content/translations/zh/about/index.md b/public/content/translations/zh/about/index.md index 517d9852e7d..143f94fea29 100644 --- a/public/content/translations/zh/about/index.md +++ b/public/content/translations/zh/about/index.md @@ -8,7 +8,7 @@ lang: zh ethereum.org 是一个为以太坊社区打造的公共且开源的网站,任何人都可以贡献其中。 我们有一支小型核心团队致力于维护和开发该网站,有全球数以千计的社区成员为其做贡献。 -**ethereum.org 的人员永远不会主动联系你。 请不要回应。** +**ethereum.org 的任何人绝不会主动联系您。 请勿回应。** ## 关于名称的说明 {#a-note-on-names} @@ -18,23 +18,23 @@ ethereum.org 是一个为以太坊社区打造的公共且开源的网站,任 以太坊是一个公共网络、一条区块链也是一种开源协议 -- 一个全球化社区运营、治理、管理并拥有以太坊,数以万计的开发者、节点运营者、以太币持有者和以太坊用户都是该社区的成员。 -[有关以太坊的更多信息](/what-is-ethereum/) +[更多关于以太坊的信息](/what-is-ethereum/) -[有关以太坊治理的更多信息](/governance/) +[更多关于以太坊治理的信息](/governance/) ### 以太币 (ETH) {#ether-or-eth} 以太币(名称代码为 ETH)是能在太坊上交易的原生货币。 使用以太坊网络需要支付以太币(以交易费的形式)。 以太币还用来质押,保护以太坊网络的安全。 当人们谈论以太坊的价格时,指的是以太币这种资产。 -[有关以太币的更多信息](/what-is-ether/) +[更多关于 ETH 的信息](/what-is-ether/) -[有关质押以太币的更多信息](/staking/) +[更多关于质押 ETH 的信息](/staking/) ### 以太坊基金会 {#ethereum-foundation} 以太坊基金会是一个非营利性组织,最初通过以太币众筹融资,致力于为以太坊网络及其生态系统提供支持。 -[有关以太坊基金会的更多信息](/foundation/) +[更多关于以太坊基金会的信息](/foundation/) ### ethereum.org {#ethereum-org} @@ -44,7 +44,7 @@ ethereum.org 是一个面向以太坊社区的开源公共网站和教育资源 ## 我们的使命 {#our-mission} -**ethereum.org 的使命是成为最好的门户网站,服务不断发展的以太坊社区。** +**ethereum.org 的使命是成为服务于以太坊不断壮大的社区的最佳门户。** 我们努力打造一个通俗易懂的教育资源,涵盖与以太坊相关的所有主题,帮助新用户熟悉以太坊及其关键概念。 我们希望: @@ -57,14 +57,14 @@ ethereum.org 是一个面向以太坊社区的开源公共网站和教育资源 为了达成这一使命,在 ethereum.org 网站上,我们的团队将专注于两个主要目标: -### 1. 改善 ethereum.org 访问者的用户体验 {#visitors} +### 1. 改善 ethereum.org 访客的用户体验 {#visitors} - 拓展、改进、并随时更新内容 - 通过本地化及网页开发最佳做法,提高可用性和可访问性 - 通过问卷调查、小测验和 web3 集成等功能提升用户参与度。 - 保持网站简洁高效 -### 2. 发展,巩固,并赋能贡献者社区 {#community} +### 2. 发展、壮大并赋能我们的贡献者社区 {#community} - 增加网站贡献者总数 - 通过吸引、认可和奖励提高贡献者的留存率。 @@ -76,54 +76,59 @@ ethereum.org 是一个面向以太坊社区的开源公共网站和教育资源 我们有一些核心原则,可指引我们完成使命。 -### 1. ethereum.org 是以太坊的门户网站 🌏 {#core-principles-1} +### 1. ethereum.org 是通往以太坊的门户 🌏 {#core-principles-1} -我们希望激发用户的兴趣并回答他们的问题。 因此,我们的门户网站需要汇集信息、“奇迹的瞬间”和指向优秀社区资源的链接。 我们网站内容的目标是作为“入门通道”,而不是取代现存的大量资源。 我们致力于支持和整合社区开发的资源,提高它们的可见度,并使它们更易被发现。 [以太坊社区](/community/)就是核心:我们不仅仅服务于该社区,更要与之合作并吸取反馈意见。 该网站不仅仅面向当前的以太坊社区,更是面向我们心中所希望的社区。 我们必须记住,我们的社区是全球性的,包含使用多种语言、来自许多区域和文化的人。 +我们希望激发用户的兴趣并回答他们的问题。 因此,我们的门户网站需要汇集信息、“奇迹的瞬间”和指向优秀社区资源的链接。 我们网站内容的目标是作为“入门通道”,而不是取代现存的大量资源。 我们致力于支持和整合社区开发的资源,提高它们的可见度,并使它们更易被发现。 +[以太坊社区](/community/)是这一切的核心:我们不仅需要服务社区,还需要与他们合作并采纳他们的反馈。 该网站不仅仅面向当前的以太坊社区,更是面向我们心中所希望的社区。 我们必须记住,我们的社区是全球性的,包含使用多种语言、来自许多区域和文化的人。 ### 2. ethereum.org 在不断发展 🛠 {#core-principles-2} -以太坊和社区一直在不断发展,ethereum.org 也将如此。 这就是该网站采用简洁的设计体系和模块化结构的原因。 当我们进一步了解人们如何使用该网站以及社区对该网站的需求时,我们会进行反复改进。 我们是一个开源的贡献者社群,所以你可以提出建议或帮助我们解决问题。 [了解贡献](/contributing/) +以太坊和社区一直在不断发展,ethereum.org 也将如此。 因此,本网站拥有一个简单的设计系统和模块化结构。 当我们进一步了解人们如何使用该网站以及社区对该网站的需求时,我们会进行反复改进。 +我们是一个开源的贡献者社群,所以你可以提出建议或帮助我们解决问题。 +[了解如何贡献](/contributing/) -### 3. ethereum.org 不是普通的商品网站 🦄 {#core-principles-3} +### 3. ethereum.org 不是一个典型的产品网站 🦄 {#core-principles-3} -以太坊是一个庞然大物:它包括社区、技术、思想和意识形态等等。 这意味着网站需要处理许多不同的用户历程,从“需要特定工具的开发者”到“刚刚购买了一些以太币却不知道钱包是什么的新手”,不一而足。 “哪个网站是了解和学习区块链平台的最佳网站?”,这仍然是一个有争论的问题,但我们是先驱。 构建它仍需要不断地试验。 +以太坊是一个庞然大物:它包括社区、技术、思想和意识形态等等。 +这意味着网站需要处理许多不同的用户历程,从“需要特定工具的开发者”到“刚刚购买了一些以太币却不知道钱包是什么的新手”,不一而足。 +“哪个网站是了解和学习区块链平台的最佳网站?”,这仍然是一个有争论的问题,但我们是先驱。 构建它仍需要不断地试验。 ## 产品路线图 {#roadmap} -为了使我们的工作更易于了解,并促进更多的社区合作,ethereum.org 核心团队发布了一份 [Shape Up(规划-构建)周期](https://www.productplan.com/glossary/shape-up-method/)路线图概览。 +为了让我们的工作更易于访问并促进更多的社区协作,ethereum.org 核心团队会发布我们 [Shape Up(塑形)周期](https://www.productplan.com/glossary/shape-up-method/)路线图目标的概览。 -[查看我们的 2025 年第 1 周期产品路线图](https://github.com/ethereum/ethereum-org-website/issues/14726) +[查看我们的 2025 年第一周期产品路线图](https://github.com/ethereum/ethereum-org-website/issues/14726) -**这看起来怎么样?**我们始终感谢为我们的路线图提供的反馈 - 如有改进之处,请告诉我们! 我们欢迎社区里的任何人提出想法和建议。 +\*\*您觉得如何?\*\*我们随时欢迎您对我们的路线图提出反馈 — 如果您认为有什么我们应该改进的地方,请告诉我们! 我们欢迎社区里的任何人提出想法和建议。 -**想要参与吗?**[了解更多关于做贡献的信息](/contributing/),[在 Twitter 上联系我们](https://twitter.com/ethdotorg)或加入我们在 [ Discord 服务器](https://discord.gg/ethereum-org)上的社区讨论。 +**想参与进来吗?**[详细了解如何贡献](/contributing/)、[在 Twitter 上联系我们](https://x.com/ethdotorg),或在[我们的 Discord 服务器](https://discord.gg/ethereum-org)中加入社区讨论。 ## 设计原则 {#design-principles} -我们采用了一套[设计原则](/contributing/design-principles/),指导该网站的内容与设计决策。 +我们采用一套[设计原则](/contributing/design-principles/)来指导网站上的内容和设计决策。 -## 设计体系 {#design-system} +## 设计系统 {#design-system} -我们创建并发布了一个[设计体系](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System?node-id=0%3A1&t=QBt9RkhpPqzE3Aa6-1),用来加快功能上线的速度,并让社区成员参与 ethereum.org 的开放设计。 +我们构建并发布了一个[设计系统](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System?node-id=0%3A1&t=QBt9RkhpPqzE3Aa6-1),以便更快地发布功能,并让社区成员参与 ethereum.org 的开放式设计。 -想要参与吗?[在 Figma 中关注](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System) [GitHub 问题](https://github.com/ethereum/ethereum-org-website/issues/6284) 并加入我们在 [#design Discord 频道](https://discord.gg/ethereum-org)中的讨论。 +想要参与吗?在 [Figma 中跟进](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System),关注 [GitHub 问题](https://github.com/ethereum/ethereum-org-website/issues/6284),并加入我们 [#design Discord 频道](https://discord.gg/ethereum-org) 的对话。 -## 风格指南 {#style-guide} +## 样式指南 {#style-guide} -我们有一个[风格指南](/contributing/style-guide/)来规范写作内容,从而使贡献过程更加顺畅。 +我们有一份[样式指南](/contributing/style-guide/),用于规范内容编写的某些方面,以使贡献过程更加顺畅。 -如果你想要[对该网站做贡献](/contributing/),请务必先阅读[我们的原则](/contributing/design-principles/)以及[我们的风格指南](/contributing/style-guide/)。 +如果您想[为本网站做贡献](/contributing/),请务必阅读[我们的原则](/contributing/design-principles/)和[我们的样式指南](/contributing/style-guide/)。 欢迎大家针对我们的设计原则、设计体系和风格指南,提出反馈意见。 请记住,ethereum.org 来自社区,服务社区。 ## 许可证 {#license} -除非另有说明,ethereum.org 网站是开源的,并基于 [MIT 许可证](https://github.com/ethereum/ethereum-org-website/blob/dev/LICENSE)构建。 更多关于 ethereum.org [使用条款](/terms-of-use/)的信息。 +除非另有说明,否则 ethereum.org 网站是开源的,并遵循 [MIT 许可证](https://github.com/ethereum/ethereum-org-website/blob/dev/LICENSE)。 更多关于 ethereum.org 的[使用条款](/terms-of-use/)。 -## 正在招聘 {#open-jobs} +## 招聘职位 {#open-jobs} 虽然该网站是开源的并且任何人都可以改进它,但我们确实有一个专职团队,负责 ethereum.org 和以太坊基金会的其他 Web 项目。 -我们会在这里发布空缺的职位。 如果在这里看不到适合你的角色,请访问[我们的 Discord 服务器](https://discord.gg/ethereum-org),告诉我们你的合作意向! +我们会在这里发布空缺的职位。 如果您在这里没有看到适合您的职位,请前往[我们的 Discord 服务器](https://discord.gg/ethereum-org),告诉我们您希望如何与我们合作! -你想找除了 ethereum.org 团队以外的工作? [查看其他与以太坊相关的工作](/community/get-involved/#ethereum-jobs/)。 +你想找除了 ethereum.org 团队以外的工作? [查看其他以太坊相关工作](/community/get-involved/#ethereum-jobs/) From 2b0cce14471ff817fb8ecd2f715eb8bbdf29378d Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:55 -0800 Subject: [PATCH 055/581] update(i18n): public/content/translations/zh/desci/index.md --- public/content/translations/zh/desci/index.md | 130 +++++++++--------- 1 file changed, 66 insertions(+), 64 deletions(-) diff --git a/public/content/translations/zh/desci/index.md b/public/content/translations/zh/desci/index.md index 5fcdd41bfa9..3183470ecaa 100644 --- a/public/content/translations/zh/desci/index.md +++ b/public/content/translations/zh/desci/index.md @@ -14,75 +14,76 @@ summaryPoint3: 它以开放科学运动为基础。 ## 什么是去中心化科学 (DeSci)? {#what-is-desci} -去中心化科学 (DeSci) 是一项运动,旨在使用 [Web3](/glossary/#web3) 堆栈构建用于公平、平等地资助、创作、审查、确认、存储和传播科学知识的公共基础设施。 +去中心化科学 (DeSci) 是一项旨在使用 [Web3](/glossary/#web3) 技术栈,为科学知识的资助、创造、评审、认可、存储和传播建立公平公正的公共基础设施的运动。 去中心化科学旨在创建一个生态系统,激励科学家公开分享他们的研究,并因其工作获得荣誉,同时允许任何人轻松了解研究并为研究做出贡献。 去中心化科学的理念是,每个人都应能接触科学知识,同时科学研究的过程应该透明化。 去中心化科学正在创建一个更加去中心化和分布式的科学研究模式,让它能够更加抵制中心机构的审查和控制。 去中心化科学希望通过去中心化获取资金、科学工具和交流的通道,创造一个让新的和非传统的想法能蓬勃发展的环境。 -去中心化科学允许更加多样化的资助来源(从[去中心化自治组织](/glossary/#dao)、[二次捐赠](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531)到众筹等等),让数据和方法更加容易获得,并为可复现性提供激励。 +去中心化科学允许更多样化的资金来源(从 [DAO](/glossary/#dao)、[二次捐赠](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) 到众筹等等),让数据和方法更容易获取,并为可复现性提供激励。 ### Juan Benet - 去中心化科学运动 -## 去中心化科学如何改善科学 {#desci-improves-science} +## DeSci 如何改进科学 {#desci-improves-science} 一份关于科学关键问题的不完整清单以及去中心化科学如何帮助解决这些问题 -| **去中心化科学** | **传统科学** | -| ------------------------------------------------- | -------------------------------------- | -| 资金的分配由**公众决定**,使用类似于二次捐赠或去中心化自治组织等机制。 | 小型、封闭的**中心化群体**控制资金的分配。 | -| 你可以与**全球**同行在充满活力的团队中合作。 | 资助组织和你所在的机构会**限制**你的合作。 | -| 资助决定在线上作出并且是**透明的**。 探索新的资助机制。 | 资助决定需要很长时间才能作出,**透明度也有限**。 资助机制很少。 | -| 通过使用 [Web3](/glossary/#web3) 技术,共享实验室服务变得更加简单和透明。 | 共享实验室资源往往是**缓慢和不透明的**。 | -| 可以开发**新的发表模型**,使用 Web3 基元实现信任、透明和全民访问。 | 通过已有的途径发表,这些途径往往被认为**效率低下并且存在偏见的和剥削**。 | -| 你可以**通过同行评审工作赢得代币和声誉**。 | **你的同行评审工作是没有报酬的**,营利性出版商从中获益。 | -| **你自己拥有你创作内容的知识产权**,并根据透明性条款分发。 | **你所在的机构拥有你产出内容的知识产权**。 知识产权的获取不是透明的。 | -| 通过将所有步骤都放在链上,**分享所有的研究**,包括未成功的尝试所产生的数据。 | **发表偏见**意味着研究人员更有可能分享那些取得成功结果的实验。 | +| **去中心化科学** | **传统科学** | +| ------------------------------------------------------ | ----------------------------------- | +| 资金的分配**由公众决定**,使用的是二次捐赠或 DAO 等机制。 | 小型的、封闭的**中心化团体**控制着资金的分配。 | +| 你可以在充满活力的团队中与**来自全球各地**的同行协作。 | 资助组织和你所在的机构会**限制**你的协作。 | +| 资金决策在线上做出,并且过程**透明**。 探索新的资助机制。 | 资助决策周转时间长,且**透明度有限**。 资助机制很少。 | +| 使用 [Web3](/glossary/#web3) 技术,共享实验室服务变得更容易、更透明。 | 共享实验室资源通常**缓慢且不透明**。 | +| 可以开发**新的发表模型**,使用 Web3 基元实现信任、透明和普遍访问。 | 你通过公认**低效、有偏见和具剥削性**的既定渠道发表。 | +| 你可以通过**同行评审工作赚取代币和声誉**。 | 你的**同行评审工作是无偿的**,使营利性出版商受益。 | +| **你拥有自己产生的知识产权 (IP)**,并根据透明的条款进行分发。 | **你所在的机构拥有你产生的知识产权**。 知识产权的获取不是透明的。 | +| 通过将所有步骤都上链,**分享所有研究**,包括不成功的研究数据。 | **发表偏见**意味着研究人员更倾向于分享取得成功结果的实验。 | -## 以太坊与去中心化科学 {#ethereum-and-desci} +## 以太坊和 DeSci {#ethereum-and-desci} 一个去中心化的科学系统将需要强大的安全性、最小的货币和交易成本,以及一个丰富的应用开发生态系统。 以太坊提供构建去中心化科学技术所需的一切。 -## 去中心化科学使用案例 {#use-cases} +## DeSci 用例 {#use-cases} 去中心化科学正在构建一些科学工具,让传统的学术界能够进入数字世界。 以下是一些 Web3 在科学社区的使用案例。 ### 出版 {#publishing} -科学出版是一个比较出名的问题,它由出版社进行管理,依靠科学家、评审人和编辑者这些免费劳动力来产生论文,然后收取高额的出版费。 普通大众通常已经通过税收间接支付了工作成果和出版费用,但仍需要再次向出版商付费来获取同一个工作成果。 发表个人科学论文的总费用通常是五位数 ($USD),这违背了科学知识作为[公共物品](/glossary/#public-goods)的总体概念,同时一小部分出版商获取了巨大的利益。 +科学出版是一个比较出名的问题,它由出版社进行管理,依靠科学家、评审人和编辑者这些免费劳动力来产生论文,然后收取高额的出版费。 普通大众通常已经通过税收间接支付了工作成果和出版费用,但仍需要再次向出版商付费来获取同一个工作成果。 发表单篇科学论文的总费用通常高达五位数(美元),这破坏了科学知识作为[公共物品](/glossary/#public-goods)的整体概念,同时为一小部分出版商创造了巨额利润。 -免费和公开的平台以预打印服务器的形式存在,[比如 ArXiv](https://arxiv.org/)。 然而,这些平台缺乏质量控制、[反女巫机制](/glossary/#anti-sybil),通常没有追踪文章水平的指标,这意味着他们仅仅只是在提交给传统出版商之前宣传一下作品。 在 SciHub 上也可以免费获取公开发表的论文,但这不是合法的,并且通常是在出版商已经拿到付款和作品已被严格的版权法所保护之后。 因此,要使论文和数据可访问且具有内在合法性机制和激励模式,就需要填补巨大的空白。 创造这种系统的工具就在 Web3 中。 +免费和开放获取的平台以预印本服务器的形式存在,[例如 ArXiv](https://arxiv.org/)。 然而,这些平台缺乏质量控制和[抗女巫机制](/glossary/#anti-sybil),并且通常不跟踪文章级别的指标,这意味着它们通常只用于在提交给传统出版商之前宣传作品。 在 SciHub 上也可以免费获取公开发表的论文,但这不是合法的,并且通常是在出版商已经拿到付款和作品已被严格的版权法所保护之后。 因此,要使论文和数据可访问且具有内在合法性机制和激励模式,就需要填补巨大的空白。 创造这种系统的工具就在 Web3 中。 -### 可复现性与可复制性 {#reproducibility-and-replicability} +### 可复现性和可复制性 {#reproducibility-and-replicability} 可复现性和可复制性是高质量科学发现的基础。 - 同一团队使用同一种方法能连续多次获得可复现的结果。 - 不同的团队在同样的实验条件下能获得可复制的结果。 -新的 Web3 原生工具能确保可复现性和可复制性是发现的基础。 我们可以将高质量的科学纳入学术界的技术结构。 Web3 提供了为每个分析组件创建[认证](/glossary/#attestation)的能力:原始数据、计算引擎和应用结果。 共识系统的美妙之处在于,当创建一个可信网络来维护这些组件时,每一个网络参与者都将负责复现计算和验证结果。 +新的 Web3 原生工具能确保可复现性和可复制性是发现的基础。 我们可以将高质量的科学纳入学术界的技术结构。 Web3 能够为每个分析组件(原始数据、计算引擎和应用结果)创建[证明](/glossary/#attestation)。 共识系统的美妙之处在于,当创建一个可信网络来维护这些组件时,每一个网络参与者都将负责复现计算和验证结果。 -### 资金赞助 {#funding} +### 资金 {#funding} -目前资助科学的标准模式是,个人或科学家团队向资助机构提出书面申请。 一个由受信任的个人组成的小组对申请进行评分,然后对候选人进行面试,最后再向一小部分申请提供资金。 除了从申请到获得资助的时间有时**长达数年**外,这种模式还特别容易受到审查小组的**偏见、个人利益和政治因素**的影响。 +目前资助科学的标准模式是,个人或科学家团队向资助机构提出书面申请。 一个由受信任的个人组成的小组对申请进行评分,然后对候选人进行面试,最后再向一小部分申请提供资金。 这种模式除了造成瓶颈,导致从申请到获得资助有时需要**等待数年**之外,还众所周知地极易**受到评审小组的偏见、私利和政治的影响**。 研究表明捐赠评审小组往往无法选出高质量的申请,因为同一个提案在不同的评审小组会得到完全不同的结果。 随着资金越来越少,资金集中到了更少的高级研究人员手中,他们的项目更加的保守。 这种效果创造了一个过度竞争的资金环境,助长了不正当的激励机制,并且扼杀了创新。 -通过对由去中心化自治组织和 Web3 开发的不同激励模型进行广泛试验,Web3 有可能打破这一不合理的资金模式。 [可溯源的公益资助](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c)、[二次方融资](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531)、[去中心化自治组织治理](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead)和[代币化的激励结构](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design)是一些可以彻底改变科学资助的 Web3 工具。 +通过对由去中心化自治组织和 Web3 开发的不同激励模型进行广泛试验,Web3 有可能打破这一不合理的资金模式。 [追溯性公共物品募资](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c)、[二次方募资](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531)、[DAO 治理](https://www.antler.co/blog/daos-and-web3-governance-the-promise-implications-and-challenges-ahead)和[代币化激励结构](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design)都是 Web3 工具,可以彻底改变科学募资。 ### 知识产权所有权和发展 {#ip-ownership} -知识产权 (IP) 是传统科学中的一个大问题:从被卡在大学里或未能在生物技术领域使用,到众所周知的难以估值。 然而,Web3 利用[非同质化代币 (NFT)](/glossary/#nft) 在数字资产(例如科学数据或文章)的所有权方面表现卓越。 +知识产权 (IP) 是传统科学中的一个大问题:从被卡在大学里或未能在生物技术领域使用,到众所周知的难以估值。 然而,Web3 使用[非同质化代币 (NFT)](/glossary/#nft) 在数字资产(如科学数据或文章)所有权方面表现得格外好。 就像非同质化代币可以将未来交易的受益转回给原创作者一样,你可以建立透明的价值归属链,以此奖励研究人员、管理机构(比如去中心化自治组织),甚至是数据收集对象。 -[知识产权-非同质化代币](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6)就像一把钥匙,可以打开进行中的研究实验的去中心化数据存储库,还可以插入了同质化代币和[去中心化金融](/glossary/#defi)这些金融领域(从分片化到借贷池和价值评估)。 它也允许一些原生链上实体直接在链上进行研究,比如[VitaDAO](https://www.vitadao.com/) 等去中心化自治组织。 不可转让的[“灵魂绑定”代币](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)的出现,也可能在去中心化科学中发挥重要作用,它允许个人证明与其以太坊地址关联的经验和凭证。 +[IP-NFTs](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) 还可以充当正在进行的研究实验的去中心化数据存储库的密钥,并接入 NFT 和 [DeFi](/glossary/#defi) 金融化(从碎片化到借贷池和价值评估)。 它还允许像 [VitaDAO](https://www.vitadao.com/) 这样的原生链上实体(例如 DAO)直接在链上进行研究。 +不可转让的[“灵魂绑定”代币](https://vitalik.eth.limo/general/2022/01/26/soulbound.html)的出现也可能在 DeSci 中发挥重要作用,它允许个人证明与其以太坊地址相关联的经验和凭证。 ### 数据存储、访问和架构 {#data-storage} 使用 Web3 模式能够更容易地获取科学数据,同时分布式存储也能让研究在灾难性事件中幸存。 -起点必须是这样的一个系统:它可以被任何持有正确的可核验凭证的去中心化身份访问。 这确保敏感数据只能被信任方安全复制,从而让数据得到冗余、抵抗审查、复现结果,甚至提供多方合作和向数据集添加新数据的能力。 类似于[计算机到数据](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol)的机密计算方法,提供了另外一种原始数据复制的访问机制,给大多数敏感数据创造了一个可信的研究环境。 可信的研究环境已经[被英国国民医疗服务系统所引用](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb)。作为一种面向未来的数据隐私与合作的解决方案,这种环境通过创造良好的生态系统,使用标准化的环境来共享代码和实践,让研究者安全地使用数据。 +起点必须是这样的一个系统:它可以被任何持有正确的可核验凭证的去中心化身份访问。 这确保敏感数据只能被信任方安全复制,从而让数据得到冗余、抵抗审查、复现结果,甚至提供多方合作和向数据集添加新数据的能力。 [计算到数据](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol)等机密计算方法为原始数据复制提供了替代访问机制,为最敏感的数据创建了可信研究环境。 可信研究环境已[被英国国家医疗服务体系 (NHS) 引用](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb),被视为一种面向未来的数据隐私和协作解决方案,它通过创建一个生态系统,让研究人员可以使用标准化的环境共享代码和实践,从而在现场安全地处理数据。 灵活的 Web3 数据解决方案支持上述场景,也为真正开放的科学奠定基础。研究者在 Web3 中可以创造公共利益,无需访问权限和费用。 Web3 的公共数据解决方案,比如星际文件系统、Arweave和菲乐币,也专门为去中心化做了优化。 例如 dClimate,让所有人获取气候和天气数据,包括来自气象站和气候预测模型的数据。 @@ -90,48 +91,49 @@ summaryPoint3: 它以开放科学运动为基础。 探索项目并加入去中心化科学社区。 -- [DeSci.Global:全球事件和会议日历](https://desci.global) -- [科学电报区块链](https://t.me/BlockchainForScience) -- [Molecule:资助和为你的研究项目筹资](https://www.molecule.xyz/) -- [VitaDAO:通过赞助的研究协议获取资金用于长寿研究](https://www.vitadao.com/) -- [ResearchHub:发表科学成果及与同行对话](https://www.researchhub.com/) -- [dClimate 应用程序接口:查询由去中心化社区收集的气候数据](https://www.dclimate.net/) -- [去中心化科学基金:去中心化出版工具构建者](https://descifoundation.org/) -- [DeSci.World:用户浏览和参与去中心化科学的一站式商店](https://desci.world) -- [OceanDAO:由去中心化自治组织管理的数据相关科学的拨款](https://oceanprotocol.com/) +- [DeSci.Global:全球活动和聚会日历](https://desci.global) +- [科学区块链电报群](https://t.me/BlockchainForScience) +- [Molecule:资助你的研究项目或为其筹集资金](https://www.molecule.xyz/) +- [VitaDAO:通过赞助研究协议为长寿研究获得资金](https://www.vitadao.com/) +- [ResearchHub:发布科学成果并与同行交流](https://www.researchhub.com/) +- [dClimate API:查询由去中心化社区收集的气候数据](https://www.dclimate.net/) +- [DeSci 基金会:DeSci 出版工具构建者](https://descifoundation.org/) +- [DeSci.World:供用户查看和参与去中心化科学的一站式平台](https://desci.world) +- [OceanDAO:由 DAO 治理的、面向数据相关科学的资金](https://oceanprotocol.com/) - [Opscientia:开放的去中心化科学工作流程](https://opsci.io/research/) -- [Bio.xyz:为给你的生物技术去中心化自治组织或去中心化科学项目筹资](https://www.bio.xyz/) -- [Fleming Protocol:推动协作式生物医学发现的开源数据经济](http://flemingprotocol.io/) -- [Active Inference Institute](https://www.activeinference.org/) -- [IdeaMarkets:实现去中心化科学的诚信](https://ideamarket.io/) -- [DeSci Labs](https://www.desci.com/) -- [ValleyDAO:一个开放的全球化社区,为合成生物学研究提供资金和转译支持](https://www.valleydao.bio) -- [Cerebrum DAO:寻找和培育促进大脑健康和避免神经变性的解决方案](https://www.cerebrumdao.com/) -- [CryoDAO:资助低温保存领域的登月研究](https://www.cryodao.org) - -我们欢迎提出新项目加入到列表中 - 开始前,请查看我们的[上架政策](/contributing/adding-desci-projects/)! - -## 延伸阅读 {#further-reading} - -- [DeSci Wiki 由 Jocelynn Pearl 和 Ultrarare 提供](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#) -- [由 Jocelynn Pearl 为 a16z 自建媒体网站 Future 写的一份去中心化生物技术指南](https://future.a16z.com/a-guide-to-decentralized-biotech/) -- [去中心化科学实例](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/) -- [去中心化科学指南](https://future.com/what-is-decentralized-science-aka-desci/) +- [Bio.xyz:为你的生物技术 DAO 或 DeSci 项目获得资金](https://www.bio.xyz/) +- [Fleming Protocol:促进协作性生物医学发现的开源数据经济](http://flemingprotocol.io/) +- [主动推理研究所](https://www.activeinference.org/) +- [IdeaMarkets:实现去中心化科学信誉](https://ideamarket.io/) +- [DeSci 实验室](https://www.desci.com/) +- [ValleyDAO:一个为合成生物学研究提供资金和转化支持的开放性全球社区](https://www.valleydao.bio) +- [Cerebrum DAO:寻找和培育解决方案,以促进大脑健康和预防神经退行性病变](https://www.cerebrumdao.com/) +- [CryoDAO:资助人体冷冻领域的“登月”研究](https://www.cryodao.org) +- [Elata:对精神科药物的未来发表意见](https://www.elata.bio/) + +我们欢迎大家推荐要列出的新项目——请查看我们的[收录政策](/contributing/adding-desci-projects/)以开始! + +## 扩展阅读{#further-reading} + +- [DeSci Wiki,作者 Jocelynn Pearl 和 Ultrarare](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#) +- [Jocelynn Pearl 为 a16z future 撰写的去中心化生物技术指南](https://future.a16z.com/a-guide-to-decentralized-biotech/) +- [DeSci 的理由](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/) +- [DeSci 指南](https://future.com/what-is-decentralized-science-aka-desci/) - [去中心化科学资源](https://www.vincentweisser.com/desci) -- [Molecule 的生物制药知识产权-非同质化代币 - 技术描述](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description) -- [Jon Starr 的《构建去信任科学系统》](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673) -- [Paul Kohlhaas - 去中心化科学:去中心化科学的未来(播客)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a) -- [去中心化科学的主动推理本体论:从情境意义建构到认知共享](https://zenodo.org/record/6320575) -- [Samuel Akinosho 的《去中心化科学:研究的未来》](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec) -- [Nadia 的《科学基金(结语:去中心化科学和新的加密原语)》](https://nadia.xyz/science-funding) +- [Molecule 的生物制药 IP-NFT——技术说明](https://www.molecule.xyz/blog/molecules-biopharma-ip-nfts-a-technical-description) +- [Jon Starr 撰写的“构建免信任科学系统”](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673) +- [Paul Kohlhaas - DeSci:去中心化科学的未来(播客)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a) +- [去中心化科学的主动推理本体论:从情境化意义建构到认知共享](https://zenodo.org/record/6320575) +- [Samuel Akinosho 撰写的“DeSci:研究的未来”](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec) +- [Nadia 撰写的“科学募资”(结语:DeSci 和新的加密原语)](https://nadia.xyz/science-funding) - [去中心化正在颠覆药物开发](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f) -- [什么是去中心化科学 (DeSci)?](https://usadailytimes.com/2022/09/12/what-is-desci-decentralized-science/) +- [什么是 DeSci——去中心化科学?](https://usadailytimes.com/2022/09/12/what-is-desci-decentralized-science/) -### 相关视频 {#videos} +### 视频 {#videos} - [什么是去中心化科学?](https://www.youtube.com/watch?v=-DeMklVWNdA) -- [Vitalik Buterin 和科学家 Aubrey de Grey 之间关于长寿研究和加密技术的交集的对话](https://www.youtube.com/watch?v=x9TSJK1widA) -- [科学出版业存在不合理现象。 Web3 能解决这个问题吗?](https://www.youtube.com/watch?v=WkvzYgCvWj8) -- [Juan Benet - 去中心化科学、独立实验室以及大规模数据科学](https://www.youtube.com/watch?v=zkXM9H90g_E) -- [Sebastian Brunemeier - 去中心化科学如何改变生物医学研究和风险资本](https://www.youtube.com/watch?v=qB4Tc3FcVbM) -- [Paige Donner - 使用 Web3 和区块链打造开放科学的工具](https://www.youtube.com/watch?v=nC-2QWQ-lgw&t=17s) +- [Vitalik Buterin 与科学家 Aubrey de Grey 关于长寿研究和加密技术交叉点的对话](https://www.youtube.com/watch?v=x9TSJK1widA) +- [科学出版已然崩坏。](https://www.youtube.com/watch?v=WkvzYgCvWj8) Web3 能修复它吗?](https://www.youtube.com/watch?v=WkvzYgCvWj8) +- [Juan Benet - DeSci、独立实验室和大规模数据科学](https://www.youtube.com/watch?v=zkXM9H90g_E) +- [Sebastian Brunemeier - DeSci 如何改变生物医学研究和风险投资](https://www.youtube.com/watch?v=qB4Tc3FcVbM) +- [Paige Donner - 用 Web3 和区块链为开放科学赋能](https://www.youtube.com/watch?v=nC-2QWQ-lgw&t=17s) From 7a66b4b191684cdfc4825ea53966f2a31688c46e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:58 -0800 Subject: [PATCH 056/581] update(i18n): public/content/translations/zh/real-world-assets/index.md --- .../translations/zh/real-world-assets/index.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/public/content/translations/zh/real-world-assets/index.md b/public/content/translations/zh/real-world-assets/index.md index 37656124055..2e0cabaa398 100644 --- a/public/content/translations/zh/real-world-assets/index.md +++ b/public/content/translations/zh/real-world-assets/index.md @@ -25,6 +25,17 @@ summaryPoint3: 连接传统金融和区块链生态系统。 RWA 代币没有任何内在价值。 它们反映的是所代表的物品的价值,因此代币的价值会随着物品的价值而变化。 +## RWA 有哪些优势? {#rwas-benefits} + + + + + + + + + + ## RWA 如何运作? {#how-rwas-work} 让我们看一下 RWA 生态系统中的几个例子:房地产、传统金融产品和艺术品。 @@ -79,4 +90,4 @@ Courtyard 还提供一种版税机制。 每次售出卡片时,代币化该卡 - [智能合约如何与区块链协同运作](https://www.britannica.com/money/how-smart-contracts-work)——大英百科全书 - [现实世界资产代币化如何改变去中心化金融?](https://medium.com/coinmonks/how-tokenized-real-world-assets-are-transforming-defi-4e040f28732a)——Medium - [什么是加密货币的 RWA? 阐述其在区块链中的作用](https://www.bitdegree.org/crypto/tutorials/what-is-rwa-in-crypto)——BitDegree -- [按市值排名的当今热门现实世界资产(RWA)代币](https://www.forbes.com/digital-assets/categories/real-world-assets-rwa/)——福布斯 \ No newline at end of file +- [按市值排名的当今热门现实世界资产(RWA)代币](https://www.forbes.com/digital-assets/categories/real-world-assets-rwa/)——福布斯 From 60b7fbacdd2a72d2dd3a66b46d6e7aabaaca6c00 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:09:59 -0800 Subject: [PATCH 057/581] update(i18n): public/content/translations/zh/gaming/index.md --- .../content/translations/zh/gaming/index.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 public/content/translations/zh/gaming/index.md diff --git a/public/content/translations/zh/gaming/index.md b/public/content/translations/zh/gaming/index.md new file mode 100644 index 00000000000..1756be778da --- /dev/null +++ b/public/content/translations/zh/gaming/index.md @@ -0,0 +1,70 @@ +--- +title: 链上游戏 +lang: zh +template: use-cases +image: /images/robot-help-bar.png +sidebarDepth: 2 +summaryPoint1: 游戏规则和状态可由区块链强制执行,而非工作室的服务器 +summaryPoint2: 任何人都可以构建模组、机器人或全新的游戏,并接入相同的链上数据 +summaryPoint3: 专用的 L2(如 Redstone)和框架(如 MUD)可大幅降低成本,足以支持实时游戏 +buttons: + - content: 了解更多 + toId: how-gaming-on-ethereum-works + - content: 探索应用程序 + toId: popular-games-built-on-ethereum + isSecondary: false +--- + +## 以太坊游戏运作原理 {#how-gaming-on-ethereum-works} + +以太坊游戏有多种形式,有的游戏将区块链用于特定功能,有的游戏则将整个游戏世界都放在链上。 许多游戏利用以太坊将游戏内资产作为 NFT(非同质化代币)进行管理。 这让玩家能够真正拥有独特的数字物品,这些物品可以在单个游戏开发者生态系统之外公开交易、出售或赠送。 虽然这些资产为玩家提供了新的自主形式,但核心游戏逻辑通常仍在中心化服务器上。 + +完全链上游戏是指其基本机制以及通常整个游戏世界都由以太坊区块链(或其二层网络)上的智能合约直接管理的游戏。 这确保了无与伦比的透明度。 没有中心化服务器,没有中介——只有透明的、玩家驱动的体验和经济。 + +- 玩家以 NFT 的形式拥有自己的资产。 +- 物品可以自由交易、赠送或出售。 +- 区块链确保资产永久可访问。 + +## 游戏现状 {#the-current-state-of-gaming} + +- **游戏频繁关服:** 仅 2023 年,就有 [超过 60 款游戏关服](https://tech4gamers.com/game-studios-shut-down-2023/),11 家游戏工作室完全关闭,玩家的游戏内投资化为乌有。 链上游戏的逻辑和资产位于去中心化网络上,只要区块链存在,它们就可以一直存在,从而提供更高程度的持久性。 +- **对锁定资产的沮丧:** [51% 的玩家感到沮丧](https://www.starknet.io/blog/blockchain-gaming/),因为他们无法赠送或转售购买的游戏内物品,23% 的玩家对从游戏内购买中收回资金的难度感到恼火。 玩家投入大量时间和金钱来获取游戏内物品,结果却发现自己并不真正拥有这些物品。 以太坊的 NFT 标准提供了可验证的数字所有权,确保玩家可以控制自己的资产。 +- **高消费无回报:** [玩家一生中在虚拟物品上的平均花费为 \$6,425](https://www.starknet.io/blog/blockchain-gaming/),每月花费 \$8.74,每年花费 \$104。 链上所有权将这笔支出从沉没成本转变为对数字资产的投资,这种资产可以像实体收藏品一样出售、交易或赠送。 + +## 基于以太坊的热门游戏 {#popular-games-built-on-ethereum} + +开发者正在探索新的方法,让游戏更具吸引力,超越简单的奖励机制,深化基于技能的游戏玩法。 + + + +## 边玩边赚 (P2E) {#play-to-earn-p2e} + +通过边玩边赚 (P2E) 游戏,你可以赚取具有现实世界价值的游戏内资产。 与依赖不可持续奖励的早期 P2E 模式不同,新游戏更注重长期价值。 例如,[Wolf Game](https://gam3s.gg/wolf-game/) 将策略性游戏玩法与真实的数字资产所有权相结合。 玩家管理虚拟的绵羊和狼,赚取游戏内货币 WOOL,WOOL 可以交易或出售。 + + + +## 互操作性和跨链游戏 {#interoperability-and-cross-chain-play} + +对于游戏而言,以太坊最强大的功能之一是其对互操作性和可组合性的原生支持。 传统游戏在“围墙花园”中运行,将游戏内资产和进度锁定在单个游戏中。 在以太坊上构建的游戏内资产,甚至核心游戏逻辑,都有可能在不同的应用程序和链之间进行交互,而不会牺牲安全性。 虽然这仍然是一个发展中的生态系统,但一些基于以太坊的游戏网络已经具备互操作性,并允许游戏内物品 (NFT) 在多个游戏中使用。 + +例如,在 Illuvium 中,[玩家可以收集名为 Illuvials 的生物](https://gam3s.gg/news/illuvium-three-web3-games/),这些生物就是 NFT。 这些 Illuvials 可以在 Illuvium 宇宙中的各种游戏中使用。 在 Illuvium Overworld 中捕获的 Illuvial 也可以在 Illuvium Arena 中用于战斗。 + +另一个例子是 Galaxy Fight Club。 在这款游戏中,[玩家可以使用不同的 NFT 收藏品](https://gam3s.gg/galaxy-fight-club/) 参与战斗,这意味着来自不同项目的 NFT 可以在游戏中使用。 + +## 可扩展性和燃料费改进 {#scalability-and-gas-fee-improvements} + +对链上游戏的一个旧批评是,区块链过于复杂和缓慢,无法为玩家提供他们期望的体验。 但随着以太坊的成熟,出现了可显著降低成本并提升链上游戏性能的解决方案,使得互动和快节奏的体验成为可能。 + +这些进步主要通过以下方式实现: + +- **免燃料费交易:** 一些平台和协议,包括那些利用 Immutable X 的平台和协议,提供了进行交易(如交易或铸造 NFT)而用户无需支付费用的能力,进一步简化了玩家体验。 +- **扩容解决方案:** 像 Arbitrum、zkSync 和 Starknet 这样的以太坊 L2 正在积极培育链上游戏生态系统,因为它们具有高吞吐量和低成本的特点。 +- **[MUD 生态系统](https://mud.dev/):** MUD 优化了基于以太坊的应用程序开发工具包,用于链上游戏开发,为复杂的游戏逻辑提供更高效的状态管理。 + +## 开始以太坊游戏 {#get-started-with-ethereum-gaming} + +进入以太坊游戏比你想象的要容易。 只需几个步骤,你就可以开始玩游戏并享受你的进步: + +1. **设置加密钱包:** 你需要一个钱包来管理你的数字资产,并与去中心化应用程序进行交互。 [选择一个钱包](/wallets/find-wallet/) +2. **为你的钱包注资:** 获取一些以太币 (ETH) 或与你计划使用的二层网络相关的代币。 +3. **探索游戏:** 在 [Orden](https://orden.gg/)、[ChainPlay](https://chainplay.gg/chain/ethereum/)、[Gam3s.GG](https://gam3s.gg/)、[DappRadar](https://dappradar.com/rankings/protocol/ethereum/category/games)、[OpenSea](https://opensea.io/) 和 [PlayToEarn.net](https://playtoearn.com/blockchaingames) 等平台上发现游戏。 From 7887761dbb8b9a8763f9490541f1880dff248291 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:07 -0800 Subject: [PATCH 058/581] update(i18n): public/content/translations/zh/bridges/index.md --- .../content/translations/zh/bridges/index.md | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/public/content/translations/zh/bridges/index.md b/public/content/translations/zh/bridges/index.md index daede620964..11c5a03a7c1 100644 --- a/public/content/translations/zh/bridges/index.md +++ b/public/content/translations/zh/bridges/index.md @@ -4,42 +4,42 @@ description: 桥梁使用户能够跨不同的区块链转移他们的资金 lang: zh --- -# 区块链桥 {#prerequisites} +# 区块链链桥 {#prerequisites} -_Web3 已经发展成为一个由一层网络区块链和二层网络扩展解决方案组成的生态系统,每个解决方案都具有独特的功能和权衡。 随着区块链协议数量的增加,跨链转移资产的需求也随之增加。 为了满足这一需求,我们需要桥接。_ +_Web3 已经发展成为一个由 L1 区块链和 L2 扩容解决方案组成的生态系统,每个解决方案都具有独特的功能和权衡取舍。_ 随着区块链协议数量的增加,跨链转移资产的需求也随之增加。为了满足这一需求,我们需要链桥。_ ## 什么是桥梁? {#what-are-bridges} -区块链桥就像我们在真实世界所知道的桥梁一样。 就像真实桥梁连结两个物理位置一样,区块链桥梁连接两个区块链生态系统。 **链桥传输信息和资产,促进了区块链之间的通信**。 +区块链桥就像我们在真实世界所知道的桥梁一样。 就像真实桥梁连结两个物理位置一样,区块链桥梁连接两个区块链生态系统。 **链桥通过信息和资产的转移来促进区块链之间的通信**。 我们来看一个例子: 你来自美国,正计划去欧洲旅行。 你有美元,但你需要欧元来消费。 要将你的美元兑换成欧元,你可以使用货币兑换并支付少量费用。 -但是,如果你想进行类似的兑换以使用一条不同的[区块链](/glossary/#blockchain),你要怎么做呢? 假设你想用以太坊主网上的[以太币](/glossary/#ether)兑换 [Arbitrum](https://arbitrum.io/) 上的以太币。 就像我们为欧元进行的货币兑换一样,我们需要一种机制将我们的以太币从以太坊转移到 Arbitrum。 桥梁使这种交易成为可能。 在本例中,[Arbitrum 有一个原生桥梁](https://bridge.arbitrum.io/),可以将以太币从主网转移到 Arbitrum。 +但是,如果你想使用不同的[区块链](/glossary/#blockchain)进行类似的兑换,你会怎么做? 假设你想将以太坊主网上的 [ETH](/glossary/#ether) 兑换成 [Arbitrum](https://arbitrum.io/) 上的 ETH。 就像我们为欧元进行的货币兑换一样,我们需要一种机制将我们的以太币从以太坊转移到 Arbitrum。 桥梁使这种交易成为可能。 在这种情况下,[Arbitrum 有一个原生链桥](https://portal.arbitrum.io/bridge),可以将 ETH 从主网转移到 Arbitrum 上。 ## 我们为什么需要桥梁? {#why-do-we-need-bridges} -所有区块链都有其局限性。 为了使以太坊实现扩容并满足需求,就必须进行[卷叠](/glossary/#rollups)。 或者,像 Solana 和 Avalanche 这样的一层网络具有不同的设计,以实现更高的吞吐量,但代价是去中心化。 +所有区块链都有其局限性。 为了让以太坊扩容并满足需求,就需要 [Rollup](/glossary/#rollups)。 或者,像 Solana 和 Avalanche 这样的一层网络具有不同的设计,以实现更高的吞吐量,但代价是去中心化。 -然而,所有区块链开发都是在孤立环境中进行的,因此具有不同的规则和[共识](/glossary/#consensus)机制。 这意味着它们无法进行原生通信,代币也无法在区块链之间自由移动。 +然而,所有区块链都是在隔离环境中开发的,并且具有不同的规则和[共识](/glossary/#consensus)机制。 这意味着它们无法进行原生通信,代币也无法在区块链之间自由移动。 桥梁的存在为了连接区块链,以便在它们之间进行信息和代币传输。 -**链桥的作用**: +**链桥能够实现**: - 跨链传输资产和信息。 -- 使[去中心化应用程序](/glossary/#dapp)可以利用各种区块链的优势 — 从而增强功能(因为协议现在有更多的创新设计空间)。 +- 让[去中心化应用程序](/glossary/#dapp)能够利用各个区块链的优势——从而增强其能力(因为协议现在有了更多的创新设计空间)。 - 使用户能够访问新平台并利用不同链的优势。 - 使来自不同区块链生态系统的开发人员相互协作并为用户构建新平台。 -[如何将代币桥接到二层网络](/guides/how-to-use-a-bridge/) +[如何将代币跨链至二层网络](/guides/how-to-use-a-bridge/) -## 桥梁用例 {#bridge-use-cases} +## 链桥用例 {#bridge-use-cases} 以下是你可以使用桥梁的一些场景: @@ -57,20 +57,20 @@ _Web3 已经发展成为一个由一层网络区块链和二层网络扩展解 ### 拥有原生加密资产 {#own-native} -如果你只有以太坊网络资产但想拥有原生比特币, 你可以先兑换得到以太坊上的 BTC - WBTC(Wrapped Bitcoin), 然而,包装比特币是以太坊网络的原生 [ERC-20](/glossary/#erc-20) 代币,这意味着它是比特币的以太坊版本,而不是比特币区块链上的原始资产。 然后你可以通过跨链桥,将资产从以太坊网络跨到比特币网络, 即将 WBTC 转换为原生 BTC。 或者,你可能拥有比特币,并且想在以太坊的[去中心化金融](/glossary/#defi)协议中使用它。 用于以太坊网络的 DeFi 协议中。 +如果你只有以太坊网络资产但想拥有原生比特币, 你可以先兑换得到以太坊上的 BTC - WBTC(Wrapped Bitcoin), 然而,WBTC 是以太坊网络原生的 [ERC-20](/glossary/#erc-20) 代币,这意味着它是比特币的以太坊版本,而不是比特币区块链上的原始资产。 然后你可以通过跨链桥,将资产从以太坊网络跨到比特币网络, 即将 WBTC 转换为原生 BTC。 或者,你可能拥有 BTC,并希望在以太坊 [DeFi](/glossary/#defi) 协议中使用它。 用于以太坊网络的 DeFi 协议中。 - 你还可以使用[中心化交易所](/get-eth/)完成上述所有操作。 但是,除非你的资金已经在交易所,否则将涉及多个步骤,而且你最好使用桥梁。 + 你还可以使用[中心化交易所](/get-eth)完成上述所有操作。 但是,除非你的资金已经在交易所,否则将涉及多个步骤,而且你最好使用桥梁。 -## 桥的类型 {#types-of-bridge} +## 链桥的类型 {#types-of-bridge} 桥梁具有各种设计和复杂程度。 一般来说,桥梁分为两类:需信任桥梁和去信任桥梁。 @@ -78,12 +78,12 @@ _Web3 已经发展成为一个由一层网络区块链和二层网络扩展解 | ------------------------------------- | -------------------------------------------------------- | | 需信任桥梁依赖于中心实体或系统的运作。 | 去信任桥梁使用智能合约和算法运行。 | | 他们对资金的保管和桥梁的安全性有信任假设。 用户大多依赖桥梁运营商的声誉。 | 这种桥梁免于信任,即桥梁的安全性与底层区块链的安全性相同。 | -| 用户需要放弃对其加密资产的控制。 | 借助[智能合约](/glossary/#smart-contract),去信任链桥使用户能够始终控制他们的资金。 | +| 用户需要放弃对其加密资产的控制。 | 通过[智能合约](/glossary/#smart-contract),去信任链桥让用户能够继续掌控自己的资金。 | 简而言之,我们可以说需信任桥梁具有信任假设,而去信任桥梁对信任的依赖非常小,因此不会在基础域之外出现新的信任假设。 上述术语的解释如下: -- **去信任**:与底层域具有同等的安全性。 如 [Arjun Bhuptani 在本文中所述。](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) -- **信任假设**:通过在系统中添加外部验证者来摆脱底层域的安全性,从加密经济学的角度来说,这降低了安全性。 +- **去信任**:拥有与底层域同等的安全性。 正如 [Arjun Bhuptani 在这篇文章中所述。](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) +- **信任假设:** 通过在系统中添加外部验证者来摆脱底层域的安全性,从加密经济学的角度来说,这降低了安全性。 为了更好地理解这两种方法之间的主要区别,我们来举个例子: @@ -104,22 +104,22 @@ _Web3 已经发展成为一个由一层网络区块链和二层网络扩展解 使用链桥可以将资产转移到不同区块链。 下面是一些可以帮助你找到并使用链桥的资源: -- **[L2BEAT 链桥摘要](https://l2beat.com/bridges/summary) & [L2BEAT 链桥风险分析](https://l2beat.com/bridges/summary)**:各种链桥的全面汇总,包括有关市场份额、链桥类型和目的地区块链的详细信息。 L2BEAT 还对链桥进行风险分析,帮助用户在选择链桥时做出明智的决策。 -- **[DefiLlama 链桥摘要](https://defillama.com/bridges/Ethereum)**:跨以太坊网络的链桥交易量摘要。 +- **[L2BEAT 链桥摘要](https://l2beat.com/bridges/summary)和[L2BEAT 链桥风险分析](https://l2beat.com/bridges/summary)**:各种链桥的全面摘要,包括有关市场份额、链桥类型和目标链的详细信息。 L2BEAT 还对链桥进行风险分析,帮助用户在选择链桥时做出明智的决策。 +- **[DefiLlama 链桥摘要](https://defillama.com/bridges/Ethereum)**:以太坊各个网络的链桥交易量摘要。 -## 使用桥梁的风险 {#bridge-risk} +## 使用链桥的风险 {#bridge-risk} 桥梁正处于开发的早期阶段, 很可能尚未发现最佳桥梁设计。 与任何类型的桥梁互动都有风险: -- **智能合约风险 —** 代码中的错误可能导致用户资金丢失的风险 -- **技术风险 —** 软件故障、代码错误、人为错误、垃圾邮件和恶意攻击可能会扰乱用户操作 +- \*\*智能合约风险——\*\*代码漏洞可能导致用户资金损失的风险。 +- \*\*技术风险——\*\*软件故障、有漏洞的代码、人为失误、垃圾信息和恶意攻击都可能干扰用户操作。 此外,由于需信任桥梁增加了信任假设,因此会带来额外的风险,例如: -- **审查风险 —** 桥梁运营商理论上可以阻止用户使用桥梁转移资产 -- **保管风险 —** 桥梁运营商可以串通盗取用户资金 +- \*\*审查风险——\*\*理论上,链桥运营商可以阻止用户使用链桥转移资产。 +- \*\*托管风险——\*\*链桥运营商可以合谋盗取用户资金。 如果出现以下情况,用户的资金将面临风险: @@ -129,16 +129,17 @@ _Web3 已经发展成为一个由一层网络区块链和二层网络扩展解 - 桥梁运营商对需信任桥梁有恶意 - 桥梁被非法侵入 -最近的一次黑客攻击是 Solana 的虫洞桥,[在黑客攻击期间被窃取了 12 万 包装以太币(3.25 亿美元)](https://rekt.news/wormhole-rekt/)。 [区块链中的许多顶级黑客攻击都涉及到桥梁](https://rekt.news/leaderboard/)。 +最近的一次黑客攻击事件是 Solana 的 Wormhole 链桥,[在这次攻击中,12 万 wETH(价值 3.25 亿美元)被盗](https://rekt.news/wormhole-rekt/)。 [区块链领域很多大型黑客攻击事件都与链桥有关](https://rekt.news/leaderboard/)。 -桥梁对于让用户加入以太坊二层网络至关重要,甚至对于想要探索不同生态系统的用户也至关重要。 然而,鉴于与桥梁交互所涉及的风险,用户必须了解桥梁正在做出的权衡取舍。 这些是一些确保[跨链安全的策略](https://blog.debridge.finance/10-strategies-for-cross-chain-security-8ed5f5879946)。 +桥梁对于让用户加入以太坊二层网络至关重要,甚至对于想要探索不同生态系统的用户也至关重要。 然而,鉴于与桥梁交互所涉及的风险,用户必须了解桥梁正在做出的权衡取舍。 以下是一些[跨链安全策略](https://debridge.com/learn/blog/10-strategies-for-cross-chain-security/)。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} + - [EIP-5164:跨链执行](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) - _2022 年 6 月 18 日 - Brendan Asselstine_ -- [二层网络桥梁风险框架](https://gov.l2beat.com/t/l2bridge-risk-framework/31) - _2022 年 7 月 5日 - Bartek Kiepuszewski_ -- [“为什么未来将出现多链,而不会是跨链。”](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) - _2022 年 1 月 8 日 - Vitalik Buterin_ -- [利用共享安全实现安全的跨链互操作性:Lagrange 状态委员会及其扩展](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - _2024 年 6 月 12 日 - Emmanuel Awosika_ +- [L2 链桥风险框架](https://gov.l2beat.com/t/l2bridge-risk-framework/31) - _2022 年 7 月 5 日 - Bartek Kiepuszewski_ +- [\"为什么未来将是多链,但不会是跨链。\"](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) - _2022 年 1 月 8 日 - Vitalik Buterin_ +- [利用共享安全实现安全的跨链互操作性:Lagrange 状态委员会及其他](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - _2024 年 6 月 12 日 - Emmanuel Awosika_ - [Rollup 互操作性解决方案的现状](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - _2024 年 6 月 20 日 - Alex Hook_ From e41e2fea03a72ba0df5c0188247ba638eee9703f Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:10 -0800 Subject: [PATCH 059/581] update(i18n): public/content/translations/zh/privacy/index.md --- .../content/translations/zh/privacy/index.md | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 public/content/translations/zh/privacy/index.md diff --git a/public/content/translations/zh/privacy/index.md b/public/content/translations/zh/privacy/index.md new file mode 100644 index 00000000000..d1c0aeba238 --- /dev/null +++ b/public/content/translations/zh/privacy/index.md @@ -0,0 +1,97 @@ +--- +title: 以太坊上的隐私 +description: 在以太坊上保护隐私的工具和技术 +lang: zh +--- + +# 以太坊上的隐私 {#introduction} + +隐私不仅对个人安全至关重要,它也是自由的基石和[去中心化](https://vitalik.eth.limo/general/2025/04/14/privacy.html)的关键保障。 隐私赋予人们自由表达、与他人交易和自由组织社区的能力。 但与所有区块链一样,以太坊的公共账本让隐私保护变得充满挑战。 + +以太坊在设计上是透明的。 每项链上操作对任何查看者都是可见的。 虽然以太坊通过将您的活动与[公钥](/decentralized-identity/#public-key-cryptography)而非真实世界的身份相关联来提供假名性,但活动模式仍可能被分析,从而泄露敏感信息并识别用户。 + +将隐私保护工具内置于以太坊可以帮助个人、组织和机构在限制不必要信息暴露的情况下安全地进行交互。 这使得生态系统更安全、更实用,适用于更广泛的用例。 + +## 写入隐私 {#privacy-of-writes} + +默认情况下,在以太坊上写入的每笔交易都是公开且永久的。 这不仅包括发送 ETH,还包括注册 ENS 名称、收集 POAP 或交易 NFT。 支付、投票或身份验证等日常行为可能会将您的信息泄露给无关方。 有几种工具和技术可以帮助提高这些操作的私密性: + +### 混合协议(或“混币器”){#mixing-protocols} + +混币器将多个用户的交易放入一个共享“池”中,然后让人们稍后提款到一个新地址,从而打破发送方和接收方之间的联系。 由于存款和取款混在一起,观察者很难将它们关联起来。 + +_示例:[PrivacyPools](https://docs.privacypools.com/)、[Tornado Cash](https://tornado.cash/)_ + +### 屏蔽池 {#shielded-pools} + +屏蔽池与混币器类似,但它们允许用户在池内私密地持有和转移资金。 屏蔽池不仅混淆存款和取款之间的联系,还维持一个持续的私密状态,通常用零知识证明来保障安全。 这使得构建私密转账、私密余额等成为可能。 + +_示例:[Railgun](https://www.railgun.org/)、[Aztec](https://aztec.network/)、Nightfall_ + +### 隐身地址 {#stealth-addresses} + +一个[隐身地址](https://vitalik.eth.limo/general/2023/01/20/stealth.html)就像给每个发件人一个独特的、一次性的邮政信箱, 只有您才能打开。 每当有人向您发送加密货币时,它都会进入一个新地址,所以其他人无法看出所有这些付款都属于您。 这能让您的支付历史保持私密且更难追踪。 + +_示例:[UmbraCash](https://app.umbra.cash/faq)、[FluidKey](https://www.fluidkey.com/)_ + +### 其他用例 {#other-use-cases} + +其他探索私密写入的项目包括 [PlasmaFold](https://pse.dev/projects/plasma-fold)(私密支付)以及像 [MACI](https://pse.dev/projects/maci) 和 [Semaphore](https://pse.dev/projects/semaphore)(私密投票)这样的系统。 + +这些工具扩展了在以太坊上进行私密写入的选项,但每种工具都有其权衡之处。 一些方法仍处于实验阶段,一些会增加成本或复杂性,而像混币器这样的一些工具可能会根据其使用方式面临法律或监管审查。 + +## 读取隐私 {#privacy-of-reads} + +在以太坊上读取或检查任何信息(例如,你的钱包余额)通常需要通过你的钱包提供商、节点提供商或区块浏览器等服务进行。 因为您依赖他们为您读取区块链,他们也能看到您的请求以及 IP 地址或位置等元数据。 如果您持续查看同一个帐户,这些信息就可能被拼凑起来,从而将您的身份与您的活动关联起来。 + +运行自己的以太坊节点可以防止这种情况,但对于大多数用户来说,存储和同步整个区块链的成本高昂且不切实际,尤其是在移动设备上。 + +一些探索私密读取的项目包括[私密信息检索](https://hackmd.io/@brech1/ethereum-privacy-pir?utm_source=preview-mode&utm_medium=rec) (PIR,在不透露您查询内容的情况下获取数据)、[zkID](https://hackmd.io/@brech1/ethereum-privacy-pir?utm_source=preview-mode&utm_medium=rec)(使用零知识证明进行私密身份检查)、[vOPRF](https://pse.dev/projects/voprf)(在 Web3 中假名使用 Web2 帐户)、[vFHE](https://pse.dev/blog/zero-to-start-applied-fully-homomorphic-encryption-fhe-part-1)(对加密数据进行计算)和 [MachinaIO](https://pse.dev/projects/machina-io)(在保留功能的同时隐藏程序细节)。 + +## 证明隐私 {#privacy-of-proving} + +隐私保护证明是您可以在以太坊上使用的工具,可以在不泄露不必要细节的情况下证明某事为真。 例如,您可以: + +- 证明您已年满 18 岁,而无需分享您的完整出生日期 +- 证明您拥有一个 NFT 或代币,而无需泄露您的整个钱包 +- 证明您有资格获得会员资格、奖励或投票,而无需暴露其他个人数据 + +实现这些功能的大多数工具都依赖于零知识证明等加密技术,但挑战在于如何使它们足够高效,以便在日常设备上运行、可移植到任何平台且安全。 + +一些探索证明隐私的项目包括[客户端证明](https://pse.dev/projects/client-side-proving)(ZK 证明系统)、[TLSNotary](https://tlsnotary.org/)(网络上任何数据的真实性证明)、[Mopro](https://pse.dev/projects/mopro)(移动客户端证明)、[私密证明委托](https://pse.dev/projects/private-proof-delegation)(避免信任假设的委托框架)和 [Noir](https://noir-lang.org/)(用于私密和可验证计算的语言)。 + +## 隐私术语表 {#privacy-glossary} + +**匿名**:交互时永久删除数据中的所有标识符,使信息无法追溯到个人 + +**加密**:一种对数据进行加扰处理,只有拥有正确密钥的人才能读取数据的过程 + +**[全同态加密](https://pse.dev/blog/zero-to-start-applied-fully-homomorphic-encryption-fhe-part-1) (FHE)**:一种直接在加密数据上执行计算,而无需对其进行解密的方法 + +**[不可区分混淆](https://pse.dev/projects/machina-io) (iO)**:一种隐私技术,使程序或数据在保持可用的同时变得难以理解 + +**[多方计算](https://pse.dev/blog/secure-multi-party-computation) (MPC)**:允许多方在不暴露各自私密输入的情况下共同计算结果的方法 + +**可编程密码学**:灵活、由规则驱动的密码学,可在软件中定制,以控制数据共享、验证或披露的方式和时间 + +**假名**:使用唯一的代码或数字(如以太坊地址)来代替个人标识符 + +**选择性披露**:只分享必要信息的能力(例如,在不泄露整个钱包历史记录的情况下,证明你拥有某个 NFT) + +**不可关联性**:确保区块链上的不同操作无法关联到同一个地址 + +**可验证性**:确保他人可以确认一项声明为真,例如在以太坊上验证交易或证明 + +**可验证委托**:将任务(例如生成证明)分配给另一方(例如,移动钱包使用服务器进行繁重的密码学计算),同时仍然能够验证任务是否正确完成 + +**[零知识证明](/zero-knowledge-proofs/#why-zero-knowledge-proofs-are-important) (ZKP)**:一种加密协议,能让某人在不泄露基础数据的情况下证明信息为真 + +**ZK Rollup**:一种扩容系统,它在链下批量处理交易并在链上提交有效性证明——默认情况下不是私密的,但它们通过降低成本来支持高效的隐私系统(如屏蔽池) + +## 资源{#resources} + +- [以太坊隐私管理者](https://pse.dev/) (PSE) 是以太坊基金会的一个研发实验室,专注于生态系统的隐私保护 +- [Web3PrivacyNow](https://web3privacy.info/),一个由个人、项目和志同道合的组织组成的网络,致力于保护和促进线上人权 +- [WalletBeat](https://beta.walletbeat.eth.limo/wallet/summary/),一个以太坊钱包评级网站,旨在提供一份全面的钱包列表,内容涵盖其功能、实践以及对某些标准的支持。 +- [Zk-kit](https://zkkit.pse.dev/):一套可在不同项目和零知识协议中重用的程序库(算法、实用函数和数据结构)。 +- [隐私应用程序](/apps/categories/privacy/) - 发现一系列在以太坊上运行的精选隐私应用程序。 From 70f166468e485d39a0e589af8021694535d45e64 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:13 -0800 Subject: [PATCH 060/581] update(i18n): src/intl/zh/page-apps.json --- src/intl/zh/page-apps.json | 340 +++++++------------------------------ 1 file changed, 64 insertions(+), 276 deletions(-) diff --git a/src/intl/zh/page-apps.json b/src/intl/zh/page-apps.json index a3fc31a2e13..c59ccae9799 100644 --- a/src/intl/zh/page-apps.json +++ b/src/intl/zh/page-apps.json @@ -1,284 +1,72 @@ { - "page-apps-1inch-logo-alt": "1inch徽标", - "page-apps-aave-logo-alt": "Aave徽标", - "page-apps-add-button": "建议去中心化应用程序", - "page-apps-add-title": "添加去中心化应用程序", - "page-apps-ankr-logo-alt": "Ankr 徽标", - "page-apps-api3-logo-alt": "API3 徽标", - "page-apps-arweave-logo-alt": "ARweave 徽标", - "page-apps-audius-logo-alt": "Audius徽标", - "page-apps-axie-infinity-logo-alt": "Axie Infinity徽标", - "page-apps-balancer-logo-alt": "Balancer 徽标", - "page-apps-brave-logo-alt": "Brave徽标", - "page-apps-beginner-friendly-description": "一些去中心化应用程序适合新手。在下面探索更多去中心化应用程序。", - "page-apps-beginner-friendly-header": "适合初学者", - "page-apps-category-arts": "艺术与时尚", - "page-apps-category-browsers": "浏览器", - "page-apps-category-code-marketplaces": "代码市场", - "page-apps-category-collectibles": "数字收藏品", - "page-apps-category-competitive": "Web3 游戏", - "page-apps-category-computing": "开发者工具", - "page-apps-category-dex": "交易所", - "page-apps-category-investments": "投资基金", - "page-apps-category-lending": "贷款与借贷", - "page-apps-category-lottery": "众筹", - "page-apps-category-marketplaces": "市场", - "page-apps-category-music": "音乐", - "page-apps-category-payments": "支付", - "page-apps-category-insurance": "保险", - "page-apps-category-portfolios": "投资组合管理", - "page-apps-category-trading": "预测市场", - "page-apps-category-utilities": "实用工具", - "page-apps-category-worlds": "虚拟世界", - "page-apps-category-demand-aggregator": "需求聚合器", - "page-apps-category-derivatives": "衍生品", - "page-apps-category-liquid-staking": "流动性质押", - "page-apps-category-bridges": "链桥", - "page-apps-category-experiences": "经验分享", - "page-apps-category-guilds": "Yield guilds 游戏公会", - "page-apps-category-avatar": "头像", - "page-apps-choose-category": "选择分类", - "page-apps-category-social": "社交媒体", - "page-apps-category-content": "内容", - "page-apps-category-community": "社区", - "page-apps-category-messaging": "消息", - "page-apps-category-identity": "身份", - "page-apps-collectibles-benefits-1-description": "当艺术作品在以太坊上被数字化为代币(Token)之后,这件艺术作品的所有权将会被大家有目共睹,你可以追踪这件艺术作品从创作者到现持有人的全部历程。这样可以防止山寨。", - "page-apps-collectibles-benefits-1-title": "所有权是可验证的", - "page-apps-collectibles-benefits-2-description": "消费者(利用以太坊)来购买在线音乐或购买艺术品对艺术家来说将会更加的公平。通过以太坊可以减少不必要的中间商。而且,即使需要中间商,他们的成本也不会高,因为平台不需要支付网络基础设施的费用。", - "page-apps-collectibles-benefits-2-title": "对创作者更公平", - "page-apps-collectibles-benefits-3-description": "代币化的收藏品是与你的以太坊地址绑定的,而不是平台。所以你可以在任何以太坊市场上出售游戏内物品等东西,而不仅仅是在游戏本身。", - "page-apps-collectibles-benefits-3-title": "收藏品与你同行", - "page-apps-collectibles-benefits-4-description": "工具和产品已经存在,你可以将你的艺术作品代币化,并进行销售!你的代币可以在任何和所有的以太坊收藏品平台上销售。", - "page-apps-collectibles-benefits-4-title": "已有的基础设施", - "page-apps-collectibles-benefits-description": "这些应用专注于数字所有权,增加创作者的收入潜力,并发明新的方式来投资你喜爱的创作者及其作品。", - "page-apps-collectibles-benefits-title": "分散式收藏品和流媒体", - "page-apps-collectibles-button": "艺术品和收藏品", - "page-apps-collectibles-description": "这些应用专注于数字所有权,增加创作者的收入潜力,并发明新的方式来投资你喜爱的创作者及其作品。", - "page-apps-collectibles-title": "去中心化艺术品和收藏品", - "page-apps-compound-logo-alt": "Compound徽标", - "page-apps-convex-logo-alt": "Convex 标志", - "page-apps-cryptopunks-logo-alt": "CryptoPunks徽标", - "page-apps-cryptovoxels-logo-alt": "Cryptovoxels徽标", - "page-apps-cyberconnect-logo-alt": "CyberConnect 徽标", - "page-apps-dapp-description-1inch": "通过聚合最优价格,帮助你避免高的滑点。", - "page-apps-dapp-description-aave": "借出你的代币赚取利息,并可随时提取。", - "page-apps-dapp-description-ankr": "一系列完全存在于区块链上的不同的 Web3 基础设施产品,用于构建、获利、游戏等。", - "page-apps-dapp-description-api3": "第一方价格参考数据源,允许 10 个网络上的去中心化应用程序(和计数)连接到实时资产价格数据,包括加密货币和外汇价格。", - "page-apps-dapp-description-arweave": "一次性预付费用即可永久、持续地存储数据。", - "page-apps-dapp-description-async-art": "创建、收集和交易#可编程艺术--数字画作被分割成 \"层\",你可以用它来影响整体图像。每个主图层和图层都是一个ERC721令牌。", - "page-apps-dapp-description-audius": "去中心化的流媒体平台。听众=创作者的钱,而不是标签。", - "page-apps-dapp-description-axie-infinity": "交易和战斗的生物称为Axies。边玩边赚 - 可在手机上使用", - "page-apps-dapp-description-balancer": "Balancer 是一个自动化投资组合管理和交易平台。", - "page-apps-dapp-description-brave": "通过浏览赚取代币,用代币支持你喜欢的创作者。", + "page-apps-all-apps": "所有应用程序", "page-apps-dapp-description-cent": "通过发布 NFT 赚钱的社交网络。", - "page-apps-dapp-description-compound": "借出你的代币赚取利息,并可随时提取。", - "page-apps-dapp-description-convex": "Convex 可以让 Curve 流动性提供商在不锁定 CRV 的情况下赚取交易费用,并申请增强版 CRV。", - "page-apps-dapp-description-cryptopunks": "购买、竞价和提供punk for sale--这是以太坊上第一批代币收藏品之一。", - "page-apps-dapp-description-cryptovoxels": "创建艺术画廊,建立商店,购买土地--一个以太坊虚拟世界。", - "page-apps-dapp-description-cyberconnect": "去中心化社交图谱协议,帮助引发去中心化应用程序网络效应并构建个性化社交体验", - "page-apps-dapp-description-dark-forest": "在一个无限的、程序生成的、密码学指定的宇宙中征服行星。", "page-apps-dapp-description-decentraland": "在你可以探索的虚拟世界中收集、交易虚拟土地。", "page-apps-dapp-description-ens": "用户友好的以太坊地址和去中心化网站的名称。", - "page-apps-dapp-description-foundation": "投资独特版本的数字艺术品,并与其他买家交易作品。", "page-apps-dapp-description-gitcoin": "在开源软件上工作,赚取加密货币。", - "page-apps-dapp-description-gitcoin-grants": "为以太坊社区项目进行众筹,并扩大捐献。", - "page-apps-dapp-description-gm": "集聊天、论坛和语音于一身的一体化平台,真正与创作者分享收入", "page-apps-dapp-description-gods-unchained": "策略性的交易卡游戏。通过玩,赚取卡,你可以在现实生活中出售。", - "page-apps-dapp-description-golem": "访问共享计算能力或租用自己的资源。", - "page-apps-dapp-description-graph": "一种用于查询以太坊和星际文件系统等网络的索引协议。", - "page-apps-dapp-description-ipfs": "一种点对点超媒体协议,旨在通过使网络可升级、有弹性、更开放来保存和发展人类的知识。", - "page-apps-dapp-description-radicle": "没有中间商的安全点对点代码协作。", - "page-apps-dapp-description-kiwinews": "发现有趣的以太坊新闻,文章,以及构建者为其他构建者策划的产品。与开发者、创始人、投资者伙伴们讨论。", - "page-apps-dapp-description-lido": "简便安全的数字资产质押。", - "page-apps-dapp-description-marble-cards": "创建和交易独特的基于URL的数字卡。", - "page-apps-dapp-description-matcha": "搜索多个交易所,帮你找到最佳价格。", - "page-apps-dapp-description-meeds": "去中心化工作时代的 Web3 社区中心。公平、透明地奖励重要的贡献。", - "page-apps-dapp-description-mirror": "Mirror 基于 Web3 构建面向 Web3 的强大发布平台,拓展了在线写作的界限", - "page-apps-dapp-description-multichain": "Web3 的终极路由器,是一种为任意跨链交互而开发的基础设施。", - "page-apps-dapp-description-nifty-gateway": "在区块链上购买顶级艺术家、运动员、品牌和创作者的作品。", - "page-apps-dapp-description-summerfi": "用以太坊稳定币 Dai 进行交易、借贷和储蓄。", - "page-apps-dapp-description-opensea": "购买、出售、发现和交易限量版商品。", - "page-apps-dapp-description-opera": "从你的浏览器向商家、其他用户和应用程序发送加密货币。", - "page-apps-dapp-description-osuvox": "区块链上的 3D 头像", - "page-apps-dapp-description-poap": "收集证明你处于不同的虚拟或真人事件的 NFT。使用它们加入抽奖、投票、合作或用作谈资。", - "page-apps-dapp-description-polymarket": "在结果上下注。在信息市场上交易。", - "page-apps-dapp-description-pooltogether": "你不会输的彩票。每周都有奖。", - "page-apps-dapp-description-index-coop": "一个加密指数基金,让你的组合获取高价值去中心化金融代币的曝光度。", - "page-apps-dapp-description-nexus-mutual": "无保险公司投保。免受智能合约漏洞和黑客的影响。", - "page-apps-dapp-description-etherisc": "去中心化的保险模板,任何人都可以用其来建立自己的保险赔付范围。", - "page-apps-dapp-description-zapper": "追踪你的投资组合,从同一个界面使用一系列去中心化金融产品。", - "page-apps-dapp-description-zerion": "管理你的投资组合,简单地评估市场上的每一项去中心化金融资产。", - "page-apps-dapp-description-rotki": "开源投资组合跟踪、分析、会计和税务报告工具,会尊重你的隐私。", - "page-apps-dapp-description-krystal": "一个可访问所有你最欢的去中心化金融服务的一站式平台。", - "page-apps-dapp-description-rarible": "创建、出售和购买代币化的收藏品。", - "page-apps-dapp-description-request-finance": "针对发票、工资单和费用的金融工具套装。", - "page-apps-dapp-description-sablier": "实时流转资金。", - "page-apps-dapp-description-spatial": "创建自己的自定义头像和 3D 世界", - "page-apps-dapp-description-spruce": "开源堆栈将身份和数据控制权交还给用户。", - "page-apps-dapp-description-status": "旨在实现信息的自由流动,保护进行私密安全对话的权利,并促进个人主权。", - "page-apps-dapp-description-superrare": "直接从艺术家或在二级市场购买数字艺术作品。", - "page-apps-dapp-description-synthetix": "Synthetix 是一个用于发行和交易合成资产的协议", - "page-apps-dapp-description-uniswap": "简单地交换代币或提供代币换取%的奖励。", - "page-apps-dapp-description-xmtp": "在区块链帐户之间发送消息,包括私信、警报、公告等。", - "page-apps-dapp-description-yearn": "Yearn Finance 是一个收益聚合器。它为个人、DAO 和其他协议提供了一种存入数字资产并获得收益的方式。", - "page-apps-docklink-dapps": "去中心化应用程序简介", - "page-apps-docklink-smart-contracts": "智能合约", - "page-apps-dark-forest-logo-alt": "Dark Forest徽标", - "page-apps-decentraland-logo-alt": "Decentraland徽标", - "page-apps-index-coop-logo-alt": "Index Coop 徽标", - "page-apps-nexus-mutual-logo-alt": "Nexus Mutual 徽标", - "page-apps-etherisc-logo-alt": "Etherisc 徽标", - "page-apps-zapper-logo-alt": "Zapper 徽标", - "page-apps-zerion-logo-alt": "Zerion 徽标", - "page-apps-rotki-logo-alt": "Rotki 徽标", - "page-apps-krystal-logo-alt": "Krystal 徽标", - "page-apps-synthetix-logo-alt": "Synthetix 标志", - "page-apps-desc": "找一个以太坊应用试试。", - "page-apps-doge-img-alt": "用电脑设计一只狗", - "page-apps-editors-choice-dark-forest": "与他人对弈,征服星球,尝试最前沿的以太坊扩展/隐私技术。也许是对于那些已经熟悉以太坊的人来说。", - "page-apps-editors-choice-foundation": "投资于文化。购买、交易和出售来自一些不可思议的艺术家、音乐家和品牌的独特数字艺术品和时尚。", - "page-apps-editors-choice-pooltogether": "买一张无损彩票。每周将整个票池产生的利息寄给一位幸运儿。只要你愿意,随时可以拿回你的钱。", - "page-apps-editors-choice-uniswap": "轻松交换你的代币。一个社区的宠儿,让你可以和全网的人交换代币。", - "page-apps-ens-logo-alt": "以太坊域名服务徽标", - "page-apps-explore-dapps-description": "许多去中心化应用程序 (dapp) 仍处于实验阶段,测试去中心化网络的可能性。但在科技、金融、游戏和收藏品领域中,已有一些成功的先行者。", - "page-apps-explore-dapps-title": "探索去中心化应用程序", - "page-apps-features-1-description": "一旦部署到以太坊上,去中心化应用程序代码就无法删除。而且任何人都可以使用去中心化应用程序的功能。即使去中心化应用程序背后的团队解散了,你仍然可以使用它。一旦在以太坊上,它就会留在那里。", - "page-apps-features-1-title": "没有所有者", - "page-apps-features-2-description": "你不能被阻止使用去中心化应用程序或提交交易。例如,如果Twitter是在以太坊上,没有人可以屏蔽你的帐户或阻止你发推特。", - "page-apps-features-2-title": "免审查", - "page-apps-features-3-description": "因为以太坊有以太币可以直接用于支付。开发者不需要花时间去集成第三方的支付。", - "page-apps-features-3-title": "内置付款", - "page-apps-features-4-description": "去中心化应用程序的代码通常是开源和默认互相兼容的。开发团队之间通常情况下都可以互相引用。例如:想要让用户在你的去中心化应用程序中交易代币,你只需要引入支持交易代币的合约代码并使用即可。", - "page-apps-features-4-title": "即插即用", - "page-apps-features-5-description": "在使用大部分去中心化应用程序时,你不需要分享你的真实身份,只需要一个以太坊帐户与付款帐户即可进行登录。", - "page-apps-features-5-title": "匿名登录", - "page-apps-features-6-description": "密码学可以保证攻击者无法伪造交易和去中心化应用程序交互行为。你可以授权去中心化应用程序来操作你的以太坊帐户,通常是通过你的钱包程序,因此你需要确保证书的安全。", - "page-apps-features-6-title": "加密保护", - "page-apps-features-7-description": "一旦去中心化应用程序在以太坊上线就无法单独下线,它只能随着以太坊一起下线,以太坊的规模大到难以攻击。", - "page-apps-features-7-title": "无需下载", - "page-apps-finance-benefits-1-description": "你无需注册便可使用以太坊的交易服务。只要你有资金和网络连接,就可以进行交易了。", - "page-apps-finance-benefits-1-title": "开源", - "page-apps-finance-benefits-2-description": "你可以通过这些金融产品和全世界的代币互动,人们随时随刻在以太网络的基础上铸造新的代币", - "page-apps-finance-benefits-2-title": "一个新的代币经济", - "page-apps-finance-benefits-3-description": "各团队已经构建了稳定币— 一种波动性较低的加密货币。稳定币让你尝试并使用加密货币,而无需面临风险和不确定性。", - "page-apps-finance-benefits-3-title": "稳定币", - "page-apps-finance-benefits-4-description": "以太坊领域的金融产品都是模块化并且彼此兼容的。这些模块的配置在不断地更新,赋予了你手中加密货币更多的能力。", - "page-apps-finance-benefits-4-title": "互联金融服务", - "page-apps-finance-benefits-description": "以太坊为什么可以让分散式金融应用得以蓬勃发展?", - "page-apps-finance-benefits-title": "去中心化金融", - "page-apps-finance-button": "金融", - "page-apps-finance-description": "这些是专注在构建使用加密货币进行金融服务的应用,它们提供像借、贷、赚取利息,以及不需要个人信息的私密支付等服务。", - "page-apps-finance-title": "去中心化金融", - "page-apps-foundation-logo-alt": "基金会徽标", - "page-apps-gaming-benefits-1-description": "无论是虚拟土地还是可交易卡片,你的收藏品在收藏品市场上都是可交易的,你的游戏物品有真实世界价值。", - "page-apps-gaming-benefits-1-title": "游戏物品兼做代币", - "page-apps-gaming-benefits-2-description": "你的物品(有些时候包括进程)的所有权完全归你,而不是游戏公司所有,所以你无需担心游戏公司的服务器被攻击所带来的服务器故障或解散。", - "page-apps-gaming-benefits-2-title": "你的储蓄是安全的", - "page-apps-gaming-benefits-3-description": "就像是以太坊支付可以交给任何人认证一样,游戏也可以使用这个机制确保公平性。理论上来说,从暴击到对手宝箱的大小都可以可以核查的。", - "page-apps-gaming-benefits-3-title": "可证明的公正性", - "page-apps-gaming-benefits-description": "以太坊凭借什么可以让去中心化游戏蓬勃发展?", - "page-apps-gaming-benefits-title": "去中心化游戏", - "page-apps-gaming-button": "游戏", - "page-apps-gaming-description": "这些侧重于创造虚拟世界和同其他玩家竞技的应用使用具有现实世界价值的收藏品。", - "page-apps-gaming-title": "去中心化游戏", - "page-apps-get-some-eth-description": "去中心化应用程序的操作有交易费用作为成本", - "page-apps-get-started-subtitle": "要试用去中心化应用程序,你需要一个钱包和一些以太币。钱包可以让你连接或登录。同时,你需要以太币来支付任何交易费。", - "page-apps-get-started-title": "开始体验", - "page-apps-gitcoin-grants-logo-alt": "Gitcoin Grants徽标", - "page-apps-gitcoin-logo-alt": "Gitcoin徽标", - "page-apps-gm-logo-alt": "gm.xyz 徽标", - "page-apps-gods-unchained-logo-alt": "Gods Unchained徽标", - "page-apps-golem-logo-alt": "Golem徽标", - "page-apps-graph-logo-alt": "Graph 徽标", - "page-apps-radicle-logo-alt": "Radicle 徽标", - "page-apps-hero-header": "由以太坊提供支持的工具和服务", - "page-apps-hero-subtitle": "去中心化应用程序是运用以太坊网络来打破传统商业模式或发明新商业模式的蓬勃发展的应用新运动。", - "page-apps-how-dapps-work-p1": "去中心化应用程序的后端代码(智能合约)运行在去中心化网络而非中心化的服务器上。它们使用以太坊区块链作为数据存储端,并且用智能合约实现应用程序中的逻辑。", - "page-apps-how-dapps-work-p2": "一个智能合约像是一套设立在区块链上的规则,所有人都可以准确地观察和运行这套规则。设想一下,有一台自动贩卖机:如果向它提供足够的资金和正确的选择,你将得到你想要的货品。正如自动贩卖机一样,智能合约可以像你的以太坊帐户一样存储持有资金。这允许代码之间协议和交易。", - "page-apps-how-dapps-work-p3": "一旦去中心化应用程序部署到以太坊网络,你将无法更改他们。去中心化应用程序之所以可以被去中心化就是因为他们被合约中的逻辑所控制,而不是公司或者个人。", - "page-apps-how-dapps-work-title": "去中心化应用程序工作原理", - "page-apps-ipfs-logo-alt": "IPFS 徽标", - "page-apps-learn-callout-button": "开始构建", - "page-apps-learn-callout-description": "我们的社区开发者门户拥有文档、工具和框架来帮助你开始构建一个去中心化应用程序。", - "page-apps-learn-callout-image-alt": "一幅用手拼乐高积木版的以太币符号的插图。", - "page-apps-learn-callout-title": "学习创建一个去中心化应用程序", - "page-apps-lido-logo-alt": "Lido 徽标", - "page-apps-magic-behind-dapps-description": "去中心化应用程序可能会让人觉得是普通的应用。但在背后,它们有一些不一样的优秀特性,因为它们继承了所有以太坊的超能力。点击这里了解为什么去中心化应用程序不同于一般应用。", - "page-apps-magic-behind-dapps-link": "为什么我们说以太坊伟大?", - "page-apps-magic-behind-dapps-title": "去中心化应用程序的魔法", - "page-apps-magic-title-1": "魔法", - "page-apps-magic-title-2": "背后", - "page-apps-magician-img-alt": "魔法师插图", - "page-apps-marble-cards-logo-alt": "marble.cards徽标", - "page-apps-async-logo-alt": "Async 徽标", - "page-apps-matcha-logo-alt": "Matcha徽标", - "page-apps-meeds-logo-alt": "Meeds 徽标", - "page-apps-metaverse-benefits-title": "元宇宙", - "page-apps-metaverse-benefits-description": "以太坊为什么能让元宇宙蓬勃发展?", - "page-apps-metaverse-benefits-1-title": "非同质化代币", - "page-apps-metaverse-benefits-1-description": "用户拥有的独特游戏物品,可在支持相同标准的虚拟世界和市场中互操作。", - "page-apps-metaverse-benefits-2-title": "用户拥有的社区", - "page-apps-metaverse-benefits-2-description": "身份由用户拥有,他们有无尽的机会在多个虚拟世界中探索和创建社交网络。", - "page-apps-metaverse-button": "元宇宙", - "page-apps-metaverse-title": "元宇宙", - "page-apps-metaverse-description": "这些应用程序使用户能够自由地参与到虚拟世界中。用户可以构建个人网络并拥有数字资产的所有权", - "page-apps-mirror-logo-alt": "Mirror 徽标", - "page-apps-mobile-options-header": "浏览另一个类别", - "page-apps-multichain-logo-alt": "Multichain 徽标", - "page-apps-nifty-gateway-logo-alt": "Nifty Gateway徽标", - "page-apps-summerfi-logo-alt": "Summer.fi 徽标", - "page-apps-opensea-logo-alt": "OpenSea徽标", - "page-apps-opera-logo-alt": "Opera徽标", - "page-apps-osuvox-logo-alt": "OSUVOX 徽标", - "page-apps-polymarket-logo-alt": "Polymarket徽标", - "page-apps-poap-logo-alt": "Proof of Attendance Protocol 徽标", - "page-apps-pooltogether-logo-alt": "PoolTogether徽标", - "page-apps-rarible-logo-alt": "Rarible徽标", - "page-apps-ready-button": "出发", - "page-apps-ready-description": "选择一个去中心化应用程序来尝试", - "page-apps-ready-title": "准备好了吗?", - "page-apps-request-finance-logo-alt": "请求金融图标", - "page-apps-sablier-logo-alt": "Sablier徽标", - "page-apps-set-up-a-wallet-button": "查找钱包", - "page-apps-set-up-a-wallet-description": "一个钱包地址是你“登录”去中心化应用程序的凭证", - "page-apps-set-up-a-wallet-title": "创建一个钱包", - "page-apps-social-button": "社交", - "page-apps-social-description": "这些应用程序专注于利用去中心化身份技术创建去中心化社交网络,其中数字身份和社交图谱由用户拥有。", - "page-apps-social-title": "社交", - "page-apps-spatial-logo-alt": "Spatial 徽标", - "page-apps-spruce-logo-alt": "Spruce 徽标", - "page-apps-status-logo-alt": "Status 徽标", - "page-apps-superrare-logo-alt": "SuperRare徽标", - "page-apps-technology-button": "科技", - "page-apps-technology-description": "这些应用侧重于开发者工具的去中心化,将加密经济系统纳入现有技术,并为开发开放源码的开发工作创建市场。", - "page-apps-technology-title": "去中心化技术", - "page-apps-uniswap-logo-alt": "Uniswap徽标", - "page-apps-wallet-callout-button": "查找钱包", - "page-apps-wallet-callout-description": "钱包同样也是去中心化应用程序,根据功能最适合你的原则选择一个钱包。", - "page-apps-wallet-callout-image-alt": "机器人插图。", - "page-apps-wallet-callout-title": "查看钱包", - "page-apps-warning-header": "坚持独立思考和研究", - "page-apps-warning-message": "以太坊是一种新技术,大多数应用程序都是新的。在存放大量资金之前,请确保你了解风险。", - "page-apps-what-are-dapps": "什么是Dapp?", - "page-apps-more-on-defi-button": "关于去中心化金融的更多信息", - "page-apps-more-on-nft-button": "关于代币化收藏品的更多信息", - "page-apps-more-on-nft-gaming-button": "关于代币化游戏物品的更多信息", - "page-apps-dapp-description-pwn": "轻松贷由以太坊上的任意代币或非同质化代币提供支持。", - "page-apps-pwn-image-alt": "PWN 徽标", - "page-apps-xmtp-logo-alt": "XMTP 徽标", - "opage-apps-yearn-logo-alt": "Yearn 标志", - "page-apps-yearn-image-alt": "Yearn 标志", - "page-apps-convex-image-alt": "Convex 标志", + "page-apps-dapp-description-augur": "在结果上下注。在信息市场上交易。", + "page-apps-ready-button": "Go", "foundation": "基金会", "page-wallets-get-some": "获取一些以太币", - "page-apps-dapp-description-curve": "Curve 是一家专注于稳定币的去中心化交易所", - "page-apps-curve-image-alt": "Curve 徽标", - "page-apps-dapp-description-artblocks": "Art Blocks 致力于让精彩的当代生成艺术作品栩栩如生", - "page-apps-artblocks-image-alt": "Art Blocks 徽标", - "page-apps-explore-title": "想要浏览更多应用程序吗?", - "page-apps-explore": "查看数百个去中心化应用程序", - "page-apps-dapp-description-across": "Across 是一个多链桥,允许用户在不同链之间转移资产。", - "page-apps-dapp-description-hop": "Hop 是一个多链桥,允许用户在不同链之间转移资产。", - "page-apps-dapp-description-stargate": "Stargate 是一个多链桥,允许用户在不同链之间转移资产。" -} + "page-apps-title": "应用程序", + "page-apps-subtitle": "探索运行在以太坊及第二层网络的精选应用程序列表", + "page-apps-learn-button": "了解应用", + "page-apps-highlights-title": "亮点", + "page-apps-discover-title": "探索", + "page-apps-applications-title": "应用", + "page-apps-categories-title": "程序分类", + "page-apps-community-picks-title": "社区精选", + "page-apps-meta-title": "以太坊的顶级加密应用程序", + "page-apps-meta-description": "探索以太坊上的加密应用:深入了解DeFi、NFT、社交、游戏、跨链桥、隐私、生产力及DAO去中心化应用。发现值得信赖的链上应用,进行交易、赚取收益并参与互动。", + "page-apps-category-defi-name": "去中心化金融", + "page-apps-category-defi-description": "DeFi是一类允许用户使用他们的加密资产进行借出,借入,交易和赚取收益的去中心化应用程序。", + "page-apps-category-defi-meta-title": "以太坊 DeFi 应用列表——借出、借入与收益", + "page-apps-category-defi-meta-description": "探索以太坊顶级的用来借入,借出,发行稳定币,信用和链上去中心化交易平台交易的去中心化金融应用。", + "page-apps-category-collectibles-name": "收藏品", + "page-apps-category-collectibles-description": "收藏品是独一无二且不可复制的数字资产。", + "page-apps-category-collectibles-meta-title": "以太坊上最佳NFT应用程序列表", + "page-apps-category-collectibles-meta-description": "探索顶级非同质化代币应用用于购买收藏品,交易游戏皮肤和在领先的以太坊市场中发现新的数字资产。", + "page-apps-category-social-name": "社交", + "page-apps-category-social-description": "Social是一类允许用户与他人交流和分享内容的去中心化应用。", + "page-apps-category-social-meta-title": "以太坊上的社交应用:Farcaster、Zora 等", + "page-apps-category-social-meta-description": "探索以太坊上最出色的即时通讯与社交应用。", + "page-apps-category-gaming-name": "游戏", + "page-apps-category-gaming-description": "Gaming是一类允许用户玩游戏和赚取奖励的去中心化应用。", + "page-apps-category-gaming-meta-title": "以太坊上的加密货币和 NF T游戏列表", + "page-apps-category-gaming-meta-description": "发现最棒的好玩的区块链游戏。大型多人在线角色扮演游戏,卡牌游戏,AI游戏,角色扮演游戏,休闲游戏", + "page-apps-category-bridge-name": "链桥", + "page-apps-category-bridge-description": "Bridge是一类允许用户在不同网络间链接他们资产的去中心化应用。", + "page-apps-category-bridge-meta-title": "以太坊与不同网络的跨链桥列表", + "page-apps-category-bridge-meta-description": "发现最棒的加密货币链桥应用用于转移你在不同网络和第二层网络的资产。", + "page-apps-category-productivity-name": "生产力", + "page-apps-category-productivity-description": "Productivity是一类让用户更有效率的去中心化应用。", + "page-apps-category-productivity-meta-title": "生产力和去中心化身份应用", + "page-apps-category-productivity-meta-description": "探索顶级的以太坊应用用于去中心化身份,存储,域名系统和计算机视觉。用可信的基础设施工具促进你的链上效率。", + "page-apps-category-privacy-name": "隐私", + "page-apps-category-privacy-description": "Privacy是一类允许用户私有化的去中心化应用。", + "page-apps-category-privacy-meta-title": "以太坊私有化应用:龙卷风钱包和其他", + "page-apps-category-privacy-meta-description": "探索以太坊私有化应用,像Tornado Cash和其他可以保护用户匿名性,实现私人交易并增强链上机密性的应用。", + "page-apps-category-dao-name": "去中心化自治组织", + "page-apps-category-dao-description": "DAO是一类允许用户管理和创立去中心化自治组织的去中心化应用。", + "page-apps-category-dao-meta-title": "以太坊上的 DAO 工具列表", + "page-apps-category-dao-meta-description": "发现以太坊上用于治理,财政管理,选举和协调贡献者的顶级去中心化自治组织工具。创立,管理并发展你的去中心化组织。", + "page-apps-see-all": "查看全部", + "page-apps-suggest-an-app-title": "提议一个应用", + "page-apps-suggest-an-app-description": "我们一直在寻找新应用加入到我们的列表。如果你知道一款你认为应该出现在列表上的应用,请让我们知晓。", + "page-apps-suggest-an-app-button": "提议一个应用", + "page-apps-filter-by": "筛选条件", + "page-apps-filter-all": "全部", + "page-apps-showing": "显示中", + "page-apps-visit-app": "浏览{appName}", + "page-apps-see-next": "查看下一个", + "page-apps-info-title": "说明", + "page-apps-info-founded": "成立", + "page-apps-info-creator": "创建者", + "page-apps-info-last-updated": "最近更新", + "page-apps-gallery-title": "图库", + "page-apps-more-apps-like-this": "更多类似应用", + "page-apps-today": "今天", + "page-apps-one-day-ago": "1天前", + "page-apps-days-ago": "{days}天前" +} \ No newline at end of file From 55b7ee86d7409ba5f634d18a92a6c8d24b861cf5 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:17 -0800 Subject: [PATCH 061/581] update(i18n): public/content/translations/zh/payments/index.md --- .../content/translations/zh/payments/index.md | 208 ++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 public/content/translations/zh/payments/index.md diff --git a/public/content/translations/zh/payments/index.md b/public/content/translations/zh/payments/index.md new file mode 100644 index 00000000000..b32c81a10d4 --- /dev/null +++ b/public/content/translations/zh/payments/index.md @@ -0,0 +1,208 @@ +--- +title: 以太坊支付 +metaTitle: 以太坊支付 +description: 以太坊支付概览 +lang: zh +template: use-cases +emoji: ":frame_with_picture:" +sidebarDepth: 2 +image: /images/impact_transparent.png +alt: 以太坊标志与一双给予的手一同展示。 +summaryPoint1: 一个金钱像信息一样自由流通的世界 +summaryPoint2: 开放全球,共享未来,赋能每个人实现无界交易 +summaryPoint3: 一分钟内收到汇款 +--- + +每天,全球数百万人正在经历同样的困境:跨境转账既手续繁琐又费用高昂,还经常遇到阻碍。 在巴厘岛的自由职业者要等待数天才能收到纽约客户的汇款。 这尤其影响银行基础设施有限地区的人们,使得他们难以参与全球经济。 + +这不是一个遥远的梦想——它就在今天的以太坊上发生。 尽管传统金融机构几十年来已经构建了可靠的支付系统,但它们往往受到边界、工作时间和遗留基础设施的限制。 以太坊提供了一个新范式:一个每周7天,每天24小时的全天候、全球性金融平台,为任何能够访问互联网的人提供近乎即时的、可编程的交易。 + +
+ +![电脑屏幕上的以太坊徽标](./computer.png) + +
+ +## 汇款:更便宜的国际转账 {#remittances} + +对于数百万在国外工作的人们,汇款回家是一种常态。 传统汇款服务通常费用高昂且处理时间缓慢。 以太坊提供了一种优秀的替代方案。 + + + + + + + +## 接入全球货币 {#access-to-global-currencies} + +在许多国家,通货膨胀是一个紧迫的问题,人们通常难以获得外币。 在这种情况下,人们被迫持有迅速贬值的储蓄,难以保护自己的财富。 + +以太坊社区已经建立了**一个可靠的替代金融系统**,该系统独立于任何国家的货币政策或控制。 + +以太坊用户可以使用**稳定币——通常与美元等强势货币挂钩的代币**。 通过赚取和储蓄加密货币,人们可以保护自己免受其国家高通胀的影响,帮助保持甚至提升其购买力。 这也使得本地和全球的商品和服务支付变得更加容易。 + + + 关于稳定币的更多信息 + + +## 购买商品与支付服务 {#buying-goods-and-payment-for-services} + +许多企业开始接受以太币 (ETH) 和其他加密货币的付款。 例如: + +- **Newegg:** 这家受欢迎的电子产品零售商在部分国家接受以太坊付款。 +- **Travala.com:** 这家旅行预订平台允许用户使用以太坊支付酒店和航班费用。 +- **Shopify:** 这家受欢迎的可以托管企业平台的电子商务平台,也接受使用以太坊支付商品和服务。 +- \*\*苏富比 (Sotheby's):\*\*该机构从事美术、装饰艺术、珠宝和收藏品交易,并允许使用以太坊和其他加密货币付款。 + +萨尔瓦多和中非共和国等国家甚至将加密货币列为法定货币(应为原作者撰写此文时),这为以太坊支付在日常交易中更广泛地接受铺平了道路。 + +在那些支付方式与全球其他地方脱节的国家,集成加密货币的支付方案为他们带来了解决方法。 现在,通过 Gnosis Pay 和 Paypal 等加密支付平台,可以轻松支付 Netflix、Spotify 和教育课程等平台的订阅费用。 + + + + +
使用钱包应用创建您的以太坊账户。
+ +让我们开始吧 + +
+
+ +## 使用自托管加密卡支付 {#pay-with-self-custodial-crypto-cards} + +自托管加密卡的工作原理就像使用自己的背包,而不是将钱锁在别人的保险库里。 使用传统卡时,银行或托管人会持有您的资金,并在您消费时发放资金。 使用自托管卡,您可以始终掌控自己的资产——没有中间人——同时仍然能够通过轻触或刷卡来支付咖啡、杂货甚至机票的费用。 + +这些卡直接链接到非托管钱包或智能合约账户,允许用户在日常场景中消费 ETH 和稳定币,而无需放弃所有权。 与需要用户将资金存入第三方的托管卡不同,自托管卡支持 Visa 和 Mastercard 等真实世界支付,同时保留链上控制权。 + +### 示例 {#crypto-cards-examples} + +- \*\*MetaMask 卡:\*\*这张万事达借记卡与 MetaMask 钱包相关联,可让用户消费 ETH、稳定币和其他受支持的代币。 它支持 Apple Pay 和 Google Pay,包含加密货币返现奖励,并提供收益赚取选项。 + +- \*\*Tuyo 卡:\*\*一种基于智能合约的 Visa 卡,可自动将加密货币转换为 USDC,以便在任何接受 Visa 的地方消费。 用户保留其资产的托管权,并可使用收益、交易和消费功能。 + +- \*\*Gnosis Pay:\*\*首款与 Gnosis Safe 智能账户绑定的自托管 Visa 卡。 用户直接从钱包中消费加密货币,无需支付燃料费、外汇费或出金费用。 还支持通过以太坊域名服务 (ENS) 进行卡片个性化设置。 + +- \*\*Ether.Fi Cash 卡:\*\*该卡与 ether.fi 的质押协议集成,用户可以在其 ETH 保持质押状态的同时进行消费。 付款通过智能合约处理,即使在消费时也能保持自托管。 + +### 自托管加密卡比较 {#crypto-card-custody-comparison} + +| **加密卡** | **自托管** | **非托管** | **要点** | +| ----------------------------- | :-----: | :-----: | ----------------------------- | +| MetaMask 卡 | ✅ | ✅ | 钱包保留在 MetaMask 中;支付时自动出金 | +| Tuyo 卡 | ✅ | ✅ | 智能钱包转换为 USDC;用户保留控制权 | +| Gnosis Pay | ✅ | ✅ | 链接到用户的 Gnosis Safe;使用期间无托管权转移 | +| Ether.Fi Cash | ✅ | ✅ | ETH 保持质押状态;智能合约控制消费权限。 | + +> **注意:**"自托管"是指用户控制的钱包,用户对其资金拥有完全的访问和控制权。 +> "非托管"是指资金在没有第三方托管的情况下通过智能合约等方式进行管理的钱包。 +> 虽然所有自托管卡都是非托管的,但并非所有非托管卡都是自托管的。 + +## 网站和代理的小额支付 (x402) {#x402} + +[x402](https://www.x402.org/) 是一种开放式支付标准,可为网络带来原生按次付费功能。 通过在低成本的[以太坊二层网络](/layer-2/)上使用[稳定币](/stablecoins/),x402 标准使人类和机器能够经济实惠地直接为单次操作付费,例如阅读新闻文章或调用 API,而无需管理 API 密钥、订阅或通过观看广告来"支付"。 + +- \*\*移除付费墙和登录:\*\*无需创建账户和分享个人信息来阅读一篇新闻文章,你的钱包可以支付几美分解锁文章。 +- \*\*为人工智能代理付款:\*\*x402 使自主软件("AI 代理")能够在无需人工干预的情况下,为其运行所需的数据和 API 调用付费。 + +### x402 支付标准的工作原理 {#x402-how} + +当客户端请求资源时,服务器会发送一个 `402 Payment Required` 错误代码以及支付指令(价格、账户以及支持的代币和链)。 + +- 您的[钱包](/wallets/)会检测到该请求并处理付款(通常只需单击一次即可批准,或使用预先批准的限额自动处理) +- 可以访问预先批准的钱包余额的[人工智能代理](/ai-agents/)可以自动检测价格并立即支付以访问数据或服务 +- 客户端需要在其钱包中拥有受支持的稳定币之一,但不需要任何 ETH 来支付[燃料费用](/gas/) + +这开启了一种新的 "机器对机器" 经济,人工智能代理可以自行购买资源,并且可以更高效地访问 API 服务。 + +然后,签名消息被传送到服务器。 服务器通常使用 [x402 协调器](https://x402.gitbook.io/x402/core-concepts/facilitator) 来处理区块链的复杂性(发送交易、获取付款、促成燃料费等),这意味着开发者可以轻松接受加密货币小额支付,而无需管理支付基础设施。 + +## 工资支付 {#salary-payments} + +现在,许多有前瞻性的公司会提供给员工以加密货币(如以太坊ETH)支付全部或部分工资的选项: + +- \*\*Gipsybee:\*\*是一家从事电子、机器人、游戏创作和其他服务的组织。 他们为员工提供了用以太坊支付工资的选项。 +- **SC5:** 这家芬兰公司是最早用比特币支付工资的公司之一,为以太坊的支付安排铺平了道路。 +- **区块链初创公司**:区块链领域的许多公司自然会为其员工提供加密货币薪酬选项。 +- **DAO:** 由于 DAO 贡献者的特殊性和多样性,大多数贡献和薪水都以加密货币形式进行奖励。 + +这一趋势尤其吸引远程工作者和数字游民,他们可以受益于无国界支付和潜在的有利汇率。 + +## 全球救援工作 {#global-relief-efforts} + +2023年2月,当毁灭性的地震袭击土耳其和叙利亚时,全球加密社区迅速行动起来。 多个募捐活动相继启动,以支持救援工作,展现了在危机时刻以太坊社区的强大力量。 尽管加密货币支付在土耳其[不被认可](https://www.reuters.com/technology/no-more-kebabs-bitcoins-turkeys-crypto-payment-ban-looms-2021-04-28/),但当地政府还是为一些组织收集捐款赋予豁免权。(https://x.com/haluklevent/status/1622913175409623041) 案例有: + +- [Refik Anadol](https://x.com/refikanadol/status/1622623521104089090):是一位著名的数字艺术家,他发起了一项筹款活动。 +- DAO 的力量:[Anka Relief DAO](https://ankarelief.org/) 联手[Bankless DAO](https://x.com/banklessDAO)和 [Giveth](https://x.com/Giveth/status/1623493672149843969) 一起筹集资金。 +- 出色的 NFT 艺术家 [Pak](https://cause.quest/) 也为这一活动做出了贡献。 +- 甚至以太坊联合创始人 [Vitalik Buterin](https://cointelegraph.com/news/vitalik-buterin-donates-227k-to-help-earthquake-victims-in-turkey-syria) 也向多个活动进行了个人捐款。 + +战果如何呢? 根据 [Dune](https://dune.com/davy42/turkiye-earthquake-donations) Analytics 仪表板的显示,短短几天内就筹集了超过 600 万美元。 + +同样, 印度和乌克兰发生灾难时, 以太坊社区也做出了快速的响应。 这种迅速动员全球支持的能力,彰显了在现实中在没有货币转换、漫长银行转账或高额费用的障碍下,以太坊支付的关键优势。 + +
+ +![Ethereum Robot Image](./eth_robot.png) + +
+ +## 以太坊 vs 法币{#ethereum-vs-fiat} + +要想真正理解以太坊支付的影响,就要将其与传统法币进行比较: + +| | **以太坊** | **传统银行** | +| ---------- | -------------- | -------------- | +| **速度** | 几分钟到几秒 | 几个小时到几天 | +| **全球覆盖** | 无国界,24/7 全年无假日 | 受国际银行制约和工作时间限制 | +| **透明度** | 公开透明 | 因机构而异 | +| **可编程性** | 启用智能合约的可编程性 | 仅限于基本交易 | +| **通货膨胀控制** | 可预测发行量 | 受中心化银行政策约束 | +| **可访问性** | 任何可上网的人都可以访问 | 受国内和国际地域等方面的限制 | + +从本质上讲,以太坊是一个去中心化的平台,支持安全、快速和透明的交易。 所以,许多因素使其有别于传统的支付方式。 让我们深入探索以太坊支付带来的变革和好处: + +### 可编程性{#programmability} + +以太坊的独特之处其中之一是它能够支持智能合约。 智能合约是将条款直接写入代码的自动执行协议。 这为自动化、基于条件的支付开辟了无限可能,可以极大地改善交易,例如: + +- 托管服务 +- 定期支付 +- 基于绩效的奖励 + +### 支付速度{#speed} + +您还记得上次完成国际银行转账等待了多久吗? 排长队? 一大堆需要填写的表格? 有了以太坊, 这些都不存在了。 在以太坊网络上的交易无论发送方和接收方身在何处,都可在几分钟内完成。 由于以太坊是无许可的,在发送资金时没有来自监管方的繁文缛节。 这在时间紧迫的情况下尤为重要,例如紧急救援工作。 + +### 更低的费用 {#lower-fees} + +传统的国际汇款费用有时是按汇款金额的比例收取,金额越大, 费用越高。 以太坊上的交易虽然不是免费的,但通常费用较低。 这意味着更多的资金会按预期流向目的地,而不是进入到中间机构的口袋。 + +### 透明度{#transparency} + +以太坊区块链上的每笔交易都记录在公共账本上。 这意味着任何人都可以验证资金的流向,使其成为以下用例的绝佳工具: + +- 慈善组织可以展示捐款的流向 +- 作为企业向供应商或员工的支付证明 +- 个人可实时跟踪自己的资金活动 + +有了以太坊,每个人都可以看到资金如何流动以及成本如何构成,这与传统组织不同,在传统组织中,这些信息大多不为人知。 + +
+ +![walking image](./walking.png) + +
+ +虽然法币在广泛接受度和稳定性方面具有优势,但以太坊的独特优势,为某些类型的交易提供了颇具吸引力的选择。 + +从灾难救援的快速筹款到无国界远程薪水支付,以太坊支付正在为货币的漫长历史写下新的一章。 尽管仍然存在挑战,但这项技术所提供的独特优势吸引了越来越多更广泛的用例和使用场景。 + + + + +
是时候拥有自己的以太坊账户了。
+ + 开始体验 + +
+
From cec8c93b0343df22220b0b9d23bef2104789a52a Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:20 -0800 Subject: [PATCH 062/581] update(i18n): public/content/translations/zh/security/index.md --- .../content/translations/zh/security/index.md | 149 +++++++++--------- 1 file changed, 72 insertions(+), 77 deletions(-) diff --git a/public/content/translations/zh/security/index.md b/public/content/translations/zh/security/index.md index 006e013f617..1c4bb4fcd95 100644 --- a/public/content/translations/zh/security/index.md +++ b/public/content/translations/zh/security/index.md @@ -4,17 +4,17 @@ description: 在以太坊上保持安全 lang: zh --- -# 以太坊安全和预防欺诈措施 {#introduction} +# 以太坊安全与欺诈预防 {#introduction} 随着人们对加密货币的兴趣日益浓厚,黑客和骗子带来的风险也随之增加。 本文罗列了一些降低此类风险的最佳做法。 -**请记住:ethereum.org 的人员永远不会主动联系你。 请不要回复声称来自以太坊官方支持的任何电子邮件。** +**请记住:ethereum.org 的工作人员绝不会主动联系您。** **请勿回复声称来自以太坊官方支持的电子邮件。** -## 加密货币安全 101 {#crypto-security} +## 加密安全入门 {#crypto-security} -### 提升你的知识水平 {#level-up-your-knowledge} +### 提升您的知识水平 {#level-up-your-knowledge} 对加密货币运作方式的误解可能会造成重大过失。 例如,如果有人冒充客服人员,声称可以归还你损失的以太币以换取你的私钥,他们是在试图利用人们不了解以太坊是一个去中心化网络,并不具备此类功能这一事实。 了解以太坊如何运作是一项值得的投资。 @@ -29,9 +29,9 @@ lang: zh ## 钱包安全 {#wallet-security} -### 切勿泄漏你的私钥 {#protect-private-keys} +### 不要泄露您的私钥 {#protect-private-keys} -**无论何种原因,切勿与他人分享你的私钥!** +**无论何种原因,切勿与他人分享您的私钥!** 钱包私钥就是你的以太坊钱包的密码。 这是阻止知道你的钱包地址的人榨干你帐户中所有资产的唯一方法。 @@ -39,7 +39,7 @@ lang: zh 什么是以太坊钱包?
-#### 不要将你的助记词/私钥截图 {#screenshot-private-keys} +#### 不要为您的助记词/私钥截图 {#screenshot-private-keys} 如果将你的助记词或私钥截图,就有可能将它们同步到云端数据提供商,这意味着它们可能会被黑客获取。 从云端获取私钥是常见的黑客攻击向量。 @@ -49,48 +49,49 @@ lang: zh 即使黑客控制了你的电脑,将私钥保持在离线状态,可以大大降低被黑客攻击的风险。 -#### 尝试以下硬件钱包: {#try-hardware-wallet} +#### 试用硬件钱包:{#try-hardware-wallet} - [Ledger](https://www.ledger.com/) - [Trezor](https://trezor.io/) -### 发送交易前仔细检查 {#double-check-transactions} +### 发送前请仔细检查交易 {#double-check-transactions} -不小心将加密货币发送到错误的钱包地址是一个常见的错误。 **在以太坊上发送的交易是不可逆的。**除非你认识地址所有者并能说服他们把你的资金退回来,否则你将无法找回你的资金。 +不小心将加密货币发送到错误的钱包地址是一个常见的错误。 \*\*在以太坊上发送的交易是不可逆的。\*\*除非您认识地址所有者并能说服他们将资金退还给您,否则您将无法找回资金。 -在发送交易之前,请务必确保你发送的地址与接收人的地址完全匹配。 当你与智能合约进行交互时,在签名之前检查交易信息是一种好习惯。 +在发送交易之前,请务必确保你发送的地址与接收人的地址完全匹配。 +当你与智能合约进行交互时,在签名之前检查交易信息是一种好习惯。 -### 设置智能合约的支出限额 {#spend-limits} +### 设置智能合约支出限额 {#spend-limits} 与智能合约进行交互时,不得允许无限制支出限额。 无支出限额可以让智能合约掏空你的钱包。 相反,只将支出限额设置为交易所需金额。 许多以太坊钱包提供限额保护,以防止帐户被掏空。 -[如何撤销智能合约访问你的加密资金](/guides/how-to-revoke-token-access/) +[如何撤销智能合约对您加密资金的访问权限](/guides/how-to-revoke-token-access/) -## 常见的骗术 {#common-scams} +## 常见骗局 {#common-scams} -完全阻止诈骗是不可能的,但如果我们了解骗子最常用的伎俩,就可以降低他们的成功率。 虽然骗术层出不穷,但是他们的本质相同。 最重要的是,请记住: +完全阻止诈骗是不可能的,但如果我们了解骗子最常用的伎俩,就可以降低他们的成功率。 虽然骗术层出不穷,但是它们的本质却大体相同。 最重要的是,请记住: - 始终保持怀疑态度 - 没有人会给你免费或打折的以太币 - 没有人需要获取你的私钥或个人信息 -### 推特广告钓鱼 {#ad-phishing} +### Twitter 广告钓鱼 {#ad-phishing} -![推特链接钓鱼](./twitterPhishingScam.png) +![Twitter 链接钓鱼](./twitterPhishingScam.png) -有一种仿冒推特(也被称为 X)链接预览功能(展开)的方法,可能会让用户误以为他们正在访问一个合法网站。 这种技术利用了推特为推文中分享的 URL 生成预览的机制,并显示诸如_来自 ethereum.org_ 的预览(如上所示),但实际上用户却被重定向到了一个恶意网站。 +有一种仿冒推特(也被称为 X)链接预览功能(展开)的方法,可能会让用户误以为他们正在访问一个合法网站。 这种技术利用了 Twitter 为推文中所分享的 URL 生成预览的机制,并显示_来自 ethereum.org_ 等示例(如上所示),而实际上,用户会被重定向至一个恶意网站。 务必检查你是否处于正确的域,尤其是在点击链接以后。 [点击此处了解更多信息](https://harrydenley.com/faking-twitter-unfurling)。 -### 赠品诈骗 {#giveaway} +### 赠送骗局 {#giveaway} -加密货币中最常见的骗局之一是赠品诈骗。 赠品诈骗有多种形式,但总体思路是:如果你把以太币发送到指定的钱包地址,你将会收到双倍的以太币。 *因此,它也称为“买一送一”诈骗。* +加密货币领域中最常见的一种骗局是赠品诈骗。 赠品诈骗有多种形式,但总体思路是:如果你把以太币发送到指定的钱包地址,你将会收到双倍的以太币。_因此,这种骗局也被称为“2 送 1”骗局。_ 这些骗局往往规定领取赠品的时间有限,制造出一种虚假的紧迫感。 @@ -98,25 +99,25 @@ lang: zh 最出名的一次发生在 2020 年 7 月,当时很多知名人士和组织的 Twitter 帐户被黑。 黑客使用被盗的帐户发布了一个比特币赠送活动。 尽管这些欺骗性的推文很快就被发现并删除,但黑客们还是成功骗走了 11 个比特币(截至 2021年 9 月,这些比特币价值 50 万美元)。 -![Twitter 上的诈骗案例](./appleTwitterScam.png) +![Twitter 上的一个骗局](./appleTwitterScam.png) -### 名人的赠品 {#celebrity-giveaway} +### 名人赠送骗局 {#celebrity-giveaway} -名人的赠品是赠品诈骗的另一种常见形式。 骗子会录制名人的视频采访或会议演讲,并在 YouTube 上进行直播 - 看起来好像名人正在接受直播视频采访,为加密货币赠送活动背书。 +名人派发赠品是另一种常见形式的赠品诈骗。 诈骗者会盗用名人录制好的视频采访或会议演讲,然后在 YouTube 上进行直播,让它看起来好像是名人在进行视频直播,为加密货币赠送活动站台。 -除最常使用的 Vitalik Buterin 以外,此类骗局也使用了加密货币圈内许多其他知名人士(例如 Elon Musk 或 Charles Hoskinson)。 在直播中加入一位知名人士会让骗局看起来有一种合法性(这看起来有点牵强,但 Vitalik 参与其中,所以肯定没问题!)。 +在这类骗局中,Vitalik Buterin 的形象最常被盗用,但许多其他加密货币领域的知名人士也常被盗用(例如,Elon Musk 或 Charles Hoskinson)。 加入一位知名人士会让骗子的直播看起来有一种合法性(这看起来有点牵强,但 Vitalik 参与其中,所以肯定没问题!)。 -**赠品活动通常是骗局。 如果你把钱转到这些帐户,你将永远失去它们。** +**赠送活动都是骗局。** **如果您将资金发送到这些帐户,您将永远失去它们。** -![YouTube 上的诈骗案例](./youtubeScam.png) +![YouTube 上的一个骗局](./youtubeScam.png) -### 技术支持诈骗 {#support-scams} +### 冒充客服骗局 {#support-scams} -加密货币是一种相对年轻且常被误解的技术。 利用这一点的一种常见的骗局是技术支持诈骗,骗子会冒充受欢迎的加密货币钱包、交易所或区块链的支持人员。 +加密货币是一种相对新颖且常被误解的技术。 利用这一点的一种常见骗局是技术支持诈骗,骗子会冒充受热门加密货币钱包、交易所或区块链的支持人员。 很多关于以太坊的讨论都发生在 Discord 上。 骗子通常会通过在公开的 Discord 频道中搜索寻求支持的问题,以此找到诈骗对象,然后冒充支持人员向询问者发送私人信息以提供技术支持。 通过建立信任,冒充支持人员的骗子试图诱使你透露私钥或将资金发送到他们的钱包。 -![Discord 上的技术支持诈骗案例](./discordScam.png) +![Discord 上的一个冒充客服骗局](./discordScam.png) 一般来说,员工永远不会通过私人的非官方渠道与你交流。 在处理支持问题时,要牢记一些简单的事情: @@ -125,25 +126,23 @@ lang: zh - 切勿通过官方指定以外的渠道沟通 - + -
- 请注意:尽管支持类型的骗局通常发生在 Discord 上,但它们也在任何讨论加密货币聊天应用程序(包括电子邮件)上普遍存在。 -
+ 注意:尽管冒充客服的骗局通常发生在 Discord 上,但它们也可能在任何讨论加密货币的聊天应用程序(包括电子邮件)中普遍存在。
-### “以太坊 2”代币骗局 {#eth2-token-scam} +### 'Eth2' 代币骗局 {#eth2-token-scam} -在[合并](/roadmap/merge/)的准备阶段,骗子利用“以太坊 2”这一术语的含糊不清,试图让用户将他们的以太币兑换成“以太坊 2”代币。 实际上合并并没有产生任何“以太坊 2”代币,或者任何其它合法代币。 你在合并之前拥有的以太币与现在是同一个以太币。 **从工作量证明切换到权益证明时,无需对帐户采取任何与以太币有关的操作**。 +在[合并](/roadmap/merge/)之前,诈骗者利用人们对“Eth2”一词的困惑,试图让用户将他们的 ETH 兑换成“ETH2”代币。 不存在“以太坊 2”代币,而且合并没有产生任何其他合法代币。 你在合并之前拥有的以太币与现在的是同一个以太币。 **为适应从工作量证明到权益证明的转换,您的 ETH 无需进行任何操作**。 -骗子可能会以“技术支持”的面貌出现,告诉你如果存入以太币,将收到“以太坊 2”代币。 实际上,并没有[官方的以太坊技术支持](/community/support/),也没有新代币。 永远不要与任何人分享你的钱包助记词。 +骗子可能会以“技术支持”的面貌出现,告诉你如果存入以太币,将收到“以太坊 2”代币。 没有[官方以太坊支持](/community/support/),也没有新代币。 永远不要与任何人分享你的钱包助记词。 -_注意:有一些衍生的代币/票据可能代表了被质押的以太币(比如:Rocket Pool 的 rETH,Lido 的 stETH,Coinbase 的 ETH2),但这些都不需要“迁移过去”。_ +_注意:有一些衍生代币/代码代表质押的 ETH(即 Rocket Pool 的 rETH、Lido 的 stETH、Coinbase 的 ETH2),但这些代币都不是您需要“迁移”的。_ -### 网络钓鱼诈骗 {#phishing-scams} +### 网络钓鱼骗局 {#phishing-scams} 网络钓鱼诈骗是另一种越来越常见的诈骗手段,骗子利用这种手段试图窃取你钱包中的资金。 @@ -157,21 +156,21 @@ _注意:有一些衍生的代币/票据可能代表了被质押的以太币( [更多关于避免网络钓鱼骗局的信息](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico) -### 加密货币交易经纪人诈骗 {#broker-scams} +### 加密货币交易经纪人骗局 {#broker-scams} 在加密货币交易经纪人骗局中,骗子自称是专业的加密货币经纪人,会拿着你的钱帮你进行投资。 骗子收到你的钱后,他们可能会诱骗你,让你拿出更多资金,这样你就不会错过更高的投资收益,或者他们也可能就完全消失了。 这些骗子往往利用 YouTube 上的虚假帐户,进行看似自然的有关“经纪人”的对话,以此来寻找他们的目标。 这些对话通常会收到很多点赞,以增加真实性,但这些“赞”都是来自机器人帐户。 -**不要相信互联网上的陌生人,让他们代你投资。 你将失去你的加密货币。** +**不要相信网络陌生人会代您投资。** **您将失去您的加密货币。** -![YouTube 上的交易经纪人诈骗案例](./brokerScam.png) +![YouTube 上的交易经纪人骗局](./brokerScam.png) ### 加密货币矿池骗局 {#mining-pool-scams} -自 2022 年 9 月起,在以太坊上挖矿已不再可能。 但是,矿池骗局仍然存在。 在矿池骗局中会有人主动联系你,并声称你可以通过加入以太坊矿池获得丰厚回报。 骗子会提出要求,并一直与你保持联系。 本质上讲,骗子会试图让你相信,在加入一个以太坊矿池后,你的加密货币将用于创建以太币,而且你将获得以太币红利。 然后你会发现你的加密货币正在赚取微薄的回报。 这只是为了引诱你投入更多的资金。 最终,你的所有资金将被发送到一个未知地址,骗子要么消失,要么在某些情况下会继续保持联系,就像最近发生的一个案例一样。 +自 2022 年 9 月起,以太坊上已经不存在挖矿。 但是,矿池骗局仍然存在。 在矿池骗局中会有人主动联系你,并声称你可以通过加入以太坊矿池获得丰厚回报。 骗子会提出要求,并一直与你保持联系。 本质上讲,骗子会试图让你相信,在加入一个以太坊矿池后,你的加密货币将用于创建以太币,而且你将获得以太币红利。 然后你会发现你的加密货币正在赚取微薄的回报。 这只是为了引诱你投入更多的资金。 最终,你的所有资金将被发送到一个未知地址,骗子要么消失,要么在某些情况下会继续保持联系,就像最近发生的一个案例一样。 -底线是,提防那些在社交媒体上与你联系并要求你加入矿池的人。 一旦你失去你的加密货币,它就永远回不来了。 +底线是,提防那些在社交媒体上与你联系并要求你加入矿池的人。 一旦你失去你的加密货币,就永远回不来了。 有些事情要记住: @@ -179,7 +178,7 @@ _注意:有一些衍生的代币/票据可能代表了被质押的以太币( - 做好关于赌注、流动性池或其他加密货币投资方式的调研 - 这种计划即使有,也很少是合法的。 如果是的话,它们会成为主流,你会听说过它们。 -[有人在矿池骗局中损失了 20 万美元](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/) +[一名男子因矿池骗局损失 20 万美元](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/) ### 空投骗局 {#airdrop-scams} @@ -189,11 +188,11 @@ _注意:有一些衍生的代币/票据可能代表了被质押的以太币( -## 网络安全 101 {#web-security} +## 网络安全入门 {#web-security} ### 使用强密码 {#use-strong-passwords} -[超过 80% 的帐户被黑客攻击是由于密码薄弱或被盗造成的](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/)。 一串很长的字符、数字和符号组合可帮助保护你的帐户安全。 +[超过 80% 的帐户被盗是由于密码弱或密码被盗所致](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/)。 一串很长的字符、数字和符号组合可帮助保护你的帐户安全。 一种常见错误是使用一些常见的、有关联的单词组合。 像这样的密码是不安全的,因为它们很容易被称为字典攻击的简单黑客技术攻击。 @@ -203,30 +202,28 @@ _注意:有一些衍生的代币/票据可能代表了被质押的以太币( 强密码示例:ymv\*azu.EAC8eyp8umf ``` -另一种常见错误是使用容易通过[社会工程学](https://wikipedia.org/wiki/Social_engineering_(security))猜出或发现的密码。 在密码中加入母亲的婚前姓氏、孩子或宠物的名字或出生日期,会增加密码被黑客攻击的风险。 +另一个常见错误是使用容易通过[社会工程学](https://wikipedia.org/wiki/Social_engineering_\(security\))猜出或发现的密码。 在密码中加入母亲的婚前姓氏、孩子或宠物的名字或出生日期,会增加密码被黑客攻击的风险。 -#### 强密码设置方法: {#good-password-practices} +#### 良好密码习惯:{#good-password-practices} - 在密码生成器或你所填写的表格允许的范围内,将密码设得越长越好 - 混合使用大写字母、小写字母、数字和符号 - 不要在密码中使用个人详细资料,如姓氏 - 避免使用常见的单词 -[关于创建强密码的更多内容](https://terranovasecurity.com/how-to-create-a-strong-password-in-7-easy-steps/) +[更多关于创建强密码的信息](https://terranovasecurity.com/how-to-create-a-strong-password-in-7-easy-steps/) -### 使用独立的密码 {#use-unique-passwords} +### 为所有帐户使用独特的密码 {#use-unique-passwords} -数据泄露中外泄的强密码不再是强密码。 你可以在 [Have I Been Pwned](https://haveibeenpwned.com) 网站上检查你的帐户是否在任何公共数据泄露中被泄露。 如果是,**请立即更改被泄露的密码**。 为每个帐户设置独立的密码,可以在你的一个密码被破解时降低黑客访问你所有帐户的风险。 +数据泄露中外泄的强密码不再是强密码。 [Have I Been Pwned](https://haveibeenpwned.com) 网站可让您检查自己的帐户是否涉及任何公共数据泄露事件。 如果发生过,请**立即更改这些密码**。 为每个帐户设置独立的密码,可以在你的一个密码被破解时降低黑客访问你所有帐户的风险。 ### 使用密码管理器 {#use-password-manager} - + -
- 使用密码管理器可以创建唯一的强密码并记住它们! 我们强烈推荐使用它,而且它们大部分是免费的。 -
+ 使用密码管理器可以创建唯一的强密码并记住它们! 我们强烈建议使用,而且它们大部分是免费的!
@@ -235,37 +232,35 @@ _注意:有一些衍生的代币/票据可能代表了被质押的以太币( ![密码管理器使用示例](./passwordManager.png) -#### 尝试一个密码管理器: {#try-password-manager} +#### 试用密码管理器:{#try-password-manager} - [Bitwarden](https://bitwarden.com/) - [KeePass](https://keepass.info/) - [1Password](https://1password.com/) - 或查看其他[推荐的密码管理器](https://www.privacytools.io/secure-password-manager) -### 2FA(双重身份验证) {#two-factor-authentication} +### 使用双重身份验证 {#two-factor-authentication} -有时可能会要求你通过提供特有的证明来验证你的身份。 这些证明称为**因素**。 下面是三类重要因素: +有时可能会要求你通过提供特有的证明来验证你的身份。 这些被称为**因素**。 下面是三类重要因素: - 你知道的信息(例如密码或安全问题) - 生理特征(如指纹或虹膜/面部识别) - 你私有的(安全密钥或你手机上的认证程序) -使用**双重身份验证 (2FA) **将为你的在线帐户提供一个额外的*安全因素*。 双重身份验证确保仅仅有你的密码还不足以访问你的帐户。 最常见的是,双重验证是一个随机的6位数代码,被称为**基于时间的一次性密码(TOTP)**,你可以通过身份验证程序应用程序(如Google authenticator或Authy)生成。 这是一种“你私有的”,因为生成随机时间密码的种子文件存储在你的设备上。 +使用**双重身份验证 (2FA)** 可为您的在线帐户提供额外的_安全因素_。 双重身份验证确保仅仅有你的密码还不足以访问你的帐户。 最常见的情况是,第二个因素是一个随机的 6 位数代码,称为**基于时间的一次性密码 (TOTP)**,您可以通过 Google Authenticator 或 Authy 等身份验证器应用访问。 这是一种“你私有的”,因为生成随机时间密码的种子文件存储在你的设备上。 - + -
- 注意:使用基于短信的双重身份验证很容易遭受 SIM 卡盗用,并不安全。 为了获得最佳安全性,请使用诸如 Google 身份验证器Authy 之类的服务。 -
+ 注意:基于短信的双重身份验证容易受到 SIM 卡劫持攻击,并不安全。 为获得最佳安全性,请使用 Google AuthenticatorAuthy 等服务。
#### 安全密钥 {#security-keys} -安全密匙是一种更高级、更安全的双重身份验证。 安全密钥是物理硬件身份验证设备,其工作方式与身份验证程序应用程序相似。 使用安全密钥是最安全的 2FA 使用方式。 这些密钥中有许多采用了 FIDO 通用第二因素 (U2F) 标准。 [了解更多关于 FIDO U2F](https://www.yubico.com/authentication-standards/fido-u2f/) 的信息。 +安全密匙是一种更高级、更安全的双重身份验证。 安全密钥是物理硬件身份验证设备,其工作方式与身份验证程序应用程序相似。 使用安全密钥是最安全的 2FA 使用方式。 这些密钥中有许多采用了 FIDO 通用第二因素 (U2F) 标准。 [详细了解 FIDO U2F](https://www.yubico.com/resources/glossary/fido-u2f/)。 观看以下视频,了解更多关于双重身份验证的信息: @@ -275,36 +270,36 @@ _注意:有一些衍生的代币/票据可能代表了被质押的以太币( Chrome 扩展程序或 Firefox 插件等浏览器扩展程序可以增强浏览器的功能,但它们也会带来风险。 大多数浏览器扩展程序默认请求获得“读取和更改网站数据”的权限,几乎允许它们对你的数据做任何事情。 Chrome 扩展程序总是自动更新,因此旧版本安全的扩展程序可能会在更新后被加入恶意代码。 大多数浏览器扩展程序都不会试图窃取你的数据,但你应该知道它们可以。 -#### 通过以下方式保持安全: {#browser-extension-safety} +#### 通过以下方式保持安全:{#browser-extension-safety} - 只安装来自受信任来源的浏览器扩展程序 - 删除不使用的浏览器扩展程序 - 在本地安装 Chrome 扩展程序以停止自动更新(高级) -[更多关于浏览器扩展程序的风险](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/) +[更多关于浏览器扩展程序风险的信息](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} ### 网络安全 {#reading-web-security} -- [多达 300 万台设备被带有恶意软件的 Chrome 和 Edge 插件感染](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/) - _Dan Goodin_ -- [如何创建一个不会忘记的强密码](https://www.avg.com/en/signal/how-to-create-a-strong-password-that-you-wont-forget) - _AVG_ +- [高达 300 万台设备感染了含有恶意软件的 Chrome 和 Edge 附加组件](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/) - _Dan Goodin_ +- [如何创建不会忘记的强密码](https://www.avg.com/en/signal/how-to-create-a-strong-password-that-you-wont-forget) - _AVG_ - [什么是安全密钥?](https://help.coinbase.com/en/coinbase/getting-started/verify-my-account/security-keys-faq) - _Coinbase_ -### 加密货币安全 {#reading-crypto-security} +### 加密安全 {#reading-crypto-security} -- [保护自己和资金](https://support.mycrypto.com/staying-safe/protecting-yourself-and-your-funds) - _MyCrypto_ +- [保护您自己和您的资金](https://support.mycrypto.com/staying-safe/protecting-yourself-and-your-funds) - _MyCrypto_ - [常见加密通信软件中的安全问题](https://docs.salusec.io/untitled/web3-penetration-test/risks-in-social-media) - _Salus_ -- [任何人都适用的安全指南](https://medium.com/mycrypto/mycryptos-security-guide-for-dummies-and-smart-people-too-ab178299c82e) - _MyCrypto_ -- [加密货币安全:密码和身份验证](https://www.youtube.com/watch?v=m8jlnZuV1i4) - _Andreas M. Antonopoulos_ +- [安全指南:傻瓜和聪明人都适用](https://medium.com/mycrypto/mycryptos-security-guide-for-dummies-and-smart-people-too-ab178299c82e) - _MyCrypto_ +- [加密安全:密码和身份验证](https://www.youtube.com/watch?v=m8jlnZuV1i4) - _Andreas M. Antonopoulos_ -### 防诈骗指南 {#reading-scam-education} +### 防骗教育 {#reading-scam-education} - [指南:如何识别诈骗代币](/guides/how-to-id-scam-tokens/) -- [保持安全:常见骗局](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_ -- [避免骗局](https://bitcoin.org/en/scams) - _Bitcoin.org_ -- [关于常见加密货币网络钓鱼电子邮件和消息的 Twitter 线程](https://twitter.com/tayvano_/status/1516225457640787969) - _Taylor Monahan_ +- [确保安全:常见骗局](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_ +- [避免诈骗](https://bitcoin.org/en/scams) - _Bitcoin.org_ +- [关于常见加密网络钓鱼电子邮件和消息的 Twitter 帖子](https://twitter.com/tayvano_/status/1516225457640787969) - _Taylor Monahan_ From 35ef7f1ce8d038f69d4e60d4cbf2fadae5131fb9 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:23 -0800 Subject: [PATCH 063/581] update(i18n): src/intl/zh/page-about.json --- src/intl/zh/page-about.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/intl/zh/page-about.json b/src/intl/zh/page-about.json index 206030f49ea..d0416997dee 100644 --- a/src/intl/zh/page-about.json +++ b/src/intl/zh/page-about.json @@ -1,27 +1,27 @@ { "page-about-h2": "功能建议", "page-about-h3": "进行中的工作", - "page-about-h3-1": "实现的功能", - "page-about-h3-2": "计划添加的功能", + "page-about-h3-1": "已实现的功能", + "page-about-h3-2": "计划中的功能", "page-about-li-1": "进行中", "page-about-li-2": "已计划", "page-about-li-3": "已实现", "page-about-li-4": "已实现", - "page-about-link-1": "这个仓库的源代码是根据MIT许可证授权的", + "page-about-link-1": "此代码库的源代码采用 MIT 许可证授权。", "page-about-link-2": "GitHub", - "page-about-link-3": "查看Github正在进行的任务的完整列表", - "page-about-link-4": "加入我们的Discord服务器", - "page-about-link-5": "在Twitter与我们联系", - "page-about-link-6": "查看Github上已完成任务的完整列表", - "page-about-link-7": "在Github上创建问题", - "page-about-p-1": "自从ethereum.org启动以来,我们努力使我们的运作方式具有透明度。 这是我们的核心价值观之一,因为我们认为透明度对以太坊的成功至关重要。", + "page-about-link-3": "在 GitHub 上查看进行中任务的完整列表", + "page-about-link-4": "加入我们的 Discord 服务器", + "page-about-link-5": "在 Twitter 上与我们联系", + "page-about-link-6": "在 GitHub 上查看已实现任务的完整列表", + "page-about-link-7": "在 GitHub 上创建议题", + "page-about-p-1": "自 ethereum.org 上线以来,我们一直致力于以透明的方式运作。这是我们的核心价值观之一,因为我们相信透明度对于以太坊的成功至关重要。", "page-about-p-2": "我们使用", - "page-about-p-3": "作为我们的主要项目管理工具。我们的任务分为三类:", - "page-about-p-4": "我们尽最大努力让社区了解具体任务的情况。", - "page-about-p-5": "正在执行的任务。", - "page-about-p-6": "我们排队等待执行的任务。", + "page-about-p-3": "作为我们的主要项目管理工具。我们将任务分为 3 类:", + "page-about-p-4": "我们会尽力让社区了解特定任务的状态。", + "page-about-p-5": "我们正在执行的任务。", + "page-about-p-6": "我们已排定将要执行的任务。", "page-about-p-7": "最近完成的任务。", - "page-about-p-8": "你对如何改进ethereum.org有想法吗?我们很乐意与你合作!", + "page-about-p-8": "您对改进 ethereum.org 有什么想法吗?我们非常乐意与您合作!", "page-what-is-ethereum-energy-consumption-chart-legend": "年能源消耗量,单位为亿千瓦时/年", "energy-consumption-chart-global-data-centers-label": "全球数据中心", "energy-consumption-chart-airbnb-label": "AirBnB", From eb85c20974d5f852d7aef156cfbebe60ccc11c81 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:26 -0800 Subject: [PATCH 064/581] update(i18n): public/content/translations/zh/restaking/index.md --- .../translations/zh/restaking/index.md | 188 ++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 public/content/translations/zh/restaking/index.md diff --git a/public/content/translations/zh/restaking/index.md b/public/content/translations/zh/restaking/index.md new file mode 100644 index 00000000000..cd70b75895a --- /dev/null +++ b/public/content/translations/zh/restaking/index.md @@ -0,0 +1,188 @@ +--- +title: 再质押 +metaTitle: 什么是再质押? | 再质押的好处和用途 +description: 使用已质押的 ETH 保护其他去中心化服务并赚取额外奖励。 +lang: zh +template: use-cases +emoji: ":recycle:" +image: /images/use-cases/restaking.png +alt: 以太坊上再质押的可视化表示。 +sidebarDepth: 2 +summaryPoint1: 使用已质押的 ETH 保护其他去中心化服务并赚取额外奖励。 +buttons: + - content: 什么是再质押? + toId: what-is-restaking + - content: 工作原理 + toId: how-does-restaking-work + isSecondary: false +--- + +以太坊网络全年无休地保护着价值数十亿美元的资产。 如何实现? + +世界各地的人们将[以太币 (ETH)](/eth/) 锁定(或“质押”)在智能合约中,以运行处理以太坊交易和保护以太坊网络的软件。 作为回报,他们会获得更多 ETH 作为奖励。 + +再质押是一项为[质押者](/staking/)打造的技术,可将这种安全性扩展到其他服务、应用程序或网络。 作为回报,他们可以获得额外的再质押奖励。 但是,他们也让已质押的 ETH 面临更大的风险。 + +**18 分钟解释再质押** + + + +## 什么是再质押? {#what-is-restaking} + +再质押是指质押者使用已经质押的 ETH 来保护其他去中心化服务。 作为回报,再质押者除了获得常规的 ETH 质押奖励外,还可以从这些其他服务中获得额外奖励。 + +通过再质押保护的去中心化服务被称为“主动验证服务”(AVS)。 +就像许多 ETH 质押者运行以太坊验证软件一样,许多再质押者也运行专门的 AVS 软件。 + +
+ + + + +

最好知道

+

虽然“主动验证服务”(AVS) 是最常见的名称,但不同的再质押平台可能会对其帮助保护的去中心化服务使用其他名称,例如“自主验证服务”、“分布式安全服务”或“网络”。

+
+
+
+ +## 质押与再质押 {#staking-vs-restaking} + +| 质押 | 再质押 | +| ---------- | ------------------ | +| 赚取 ETH 奖励 | 赚取 ETH 奖励 + AVS 奖励 | +| 保护以太坊网络 | 保护以太坊网络 + AVS | +| 无最低 ETH 要求 | 无最低 ETH 要求 | +| 低风险等级 | 低至高风险等级 | +| 提款时间取决于队列 | 提款时间取决于队列 + 解除绑定期 | + +## 为什么我们需要再质押? {#why-do-we-need-restaking} + +想象两个世界:一个有再质押,一个没有。 + + + +在这个有再质押的世界中,AVS 和质押者都受益于能够找到彼此并用安全性换取额外奖励。 + +
+ + + + + +

再质押的额外好处

+

AVS 可以将所有资源投入到构建和营销其服务中,而不会因去中心化和安全性问题而分心。

+
+
+
+ +## 再质押如何运作? {#how-does-restaking-work} + +再质押涉及多个实体——每个实体都扮演着重要的角色。 + +| **术语** | **描述** | +| ----------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| **再质押平台** | 再质押平台是一种连接 AVS、ETH 质押者和运营商的服务。 他们为质押者构建去中心化应用程序以再质押其 ETH,并构建市场让质押者、AVS 和运营商可以找到彼此。 | +| **原生再质押者** | 通过运行自己的以太坊验证者来质押 ETH 的人可以将其已质押的 ETH 连接到再质押平台(包括 EigenLayer 等),从而在 ETH 验证者奖励之外赚取再质押奖励。 | +| | | +| **流动性再质押者** | 通过第三方流动性质押提供商(如 Lido 或 Rocket Pool)质押其 ETH 的人会获得代表其已质押 ETH 的流动性质押代币 (LST)。 他们可以再质押这些 LST 来赚取再质押奖励,同时保持其原始 ETH 的质押状态。 | +| | | +| **运营商** | 运营商运行 AVS 的再质押软件,执行每个 AVS 所需的验证任务。 运营商通常是专业的服务提供商,可保证正常运行时间和性能等。 与非运营商再质押者一样,运营商使用已质押的 ETH 来保护 AVS,但运营商还会因其工作而获得额外奖励。 | +| | | +| **AVS** | 这些是去中心化服务——例如价格预言机、代币链桥和数据系统——它们从再质押者那里获得安全性,并作为回报提供代币奖励。 | + +
+ + + + + +

最好知道

+

原生和流动性再质押者通常将其已质押的 ETH 委托给运营商,而不是自己运行软件来保护 AVS。

+

这样他们就不必担心 AVS 提出的复杂技术要求,尽管他们获得的奖励率低于运营商。

+
+
+
+ +## 再质押有哪些例子? {#what-are-some-examples-of-restaking} + +虽然这是一个新颖的想法,但已经出现了一些项目来探索再质押的可能性。 + + + +
+ + + + + +

用词不当警示

+

有些人将“再质押”与在 DeFi 中借出和借入 LST 混淆。 两者都让已质押的 ETH 发挥作用,但再质押意味着保护 AVS,而不仅仅是在 LST 上赚取收益。

+
+
+
+ +## 我可以通过再质押赚多少钱? {#how-much-can-i-make-from-restaking} + +虽然 AVS 提供不同的收益率,但像 eETH 这样的流动性再质押代币 (LRT) 可以让你了解你能赚多少钱。 就像你通过质押 ETH 获得 stETH 等 LST 一样,你也可以通过再质押 stETH 获得 eETH 等 LRT。 这些代币可以赚取 ETH 质押和再质押奖励。 + +**认识到再质押的风险很重要。 潜在的回报可能很诱人,但并非没有风险。** + +## 再质押的风险有哪些? {#what-are-the-risks-of-restaking} + +| **风险** | **描述** | +| ------------- | --------------------------------------------------------- | +| **罚款(或“惩罚”)** | 与 ETH 质押类似,如果再质押者/运营商离线、审查消息或试图破坏网络,他们的质押可能会被部分或全部惩罚(销毁)。 | +| **中心化** | 如果少数运营商主导了大部分的再质押,他们可能会对再质押者、AVS 甚至再质押平台产生巨大影响。 | +| **连锁反应** | 如果一个再质押者在保护多个 AVS 时受到惩罚,这可能会降低其他 AVS 的安全性,使它们变得易受攻击。 | +| **即时提取资金** | 提取再质押的 ETH 有一个等待时间(或“解绑期”),因此您可能无法总是立即提取。 | + +
+ + + + + +

以太坊联合创始人正在输入...

+

+ 以太坊联合创始人 Vitalik 在 2021 年一篇名为《不要让共识超载。》的博客文章中警告了再质押的潜在风险 +

+
+
+
+ +## 如何开始再质押? {#how-to-get-started-with-restaking} + +| 🫡 初学者 | 🤓 高级用户 | +| ------------------------------------------------------------------ | --------------------------------------------------------- | +| 1. 在 Lido 或 Rocket Pool 等平台上质押 ETH 以获取 LST。 | 1. 在以太坊上作为验证者质押您的 ETH。 | +| 2. 使用这些 LST 在再质押服务上开始再质押。 | 2. 比较 EigenLayer、Symbiotic 等再质押服务。 | +| | 3. 按照说明将您的验证者连接到再质押智能合约。 | + +
+ + + + + +

以太坊质押:它是如何运作的?

+ + 了解更多 + +
+
+
+ +## 高级 {#advanced} + + + +## 扩展阅读{#further-reading} + +1. [ethereum.org - ETH 质押指南](https://ethereum.org/en/staking/) +2. [Ledger Academy - 以太坊再质押是什么?](https://www.ledger.com/academy/what-is-ethereum-restaking) +3. [Consensys - EigenLayer:去中心化以太坊再质押协议详解](https://consensys.io/blog/eigenlayer-decentralized-ethereum-restaking-protocol-explained) +4. [Vitalik Buterin - 不要让以太坊的共识超载](https://vitalik.eth.limo/general/2023/05/21/dont_overload.html) +5. [Cointelegraph - EigenLayer 是什么? 以太坊再质押协议详解](https://cointelegraph.com/explained/what-is-eigenlayer-ethereums-restaking-protocol-explained) +6. [a16z crypto research - EigenLayer:为以太坊添加无许可功能(Sreeram Kannan 访谈)](https://www.youtube.com/watch?v=-V-fG4J1N_M) +7. [Junion - EigenLayer 详解:什么是再质押?](https://www.youtube.com/watch?v=5r0SooSQFJg) +8. [The Block - 再质押数据仪表盘](https://www.theblock.co/data/decentralized-finance/restaking) From 5ea73979c2d893a9713f3681f73816c437915012 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:29 -0800 Subject: [PATCH 065/581] update(i18n): public/content/translations/zh/ai-agents/index.md --- .../translations/zh/ai-agents/index.md | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 public/content/translations/zh/ai-agents/index.md diff --git a/public/content/translations/zh/ai-agents/index.md b/public/content/translations/zh/ai-agents/index.md new file mode 100644 index 00000000000..eaf82526b22 --- /dev/null +++ b/public/content/translations/zh/ai-agents/index.md @@ -0,0 +1,99 @@ +--- +title: AI 智能体 +metaTitle: AI 代理|以太坊上的 AI 代理 +description: 以太坊上的 AI 代理概览 +lang: zh +template: use-cases +emoji: ":robot:" +sidebarDepth: 2 +image: /images/ai-agents/hero-image.png +alt: 人们聚集在终端桌子旁 +summaryPoint1: 与区块链交互并独立进行交易的 AI +summaryPoint2: 控制链上钱包与资金 +summaryPoint3: 雇佣人类或其他代理进行工作 +buttons: + - content: 什么是 AI 智能体? + toId: what-are-ai-agents + - content: 探索代理 + toId: ai-agents-on-ethereum + isSecondary: false +--- + +想象一下,你可以借助一个AI助手浏览以太坊,它可以全天候24小时/7天研究链上市场趋势、回答问题,甚至代替你执行交易。 欢迎来到 AI 代理的世界——旨在简化你的数字生活的智能系统。 + +在以太坊上,我们正见证AI智能体的创新——从虚拟网红、自主内容创作者到实时市场分析平台,这些创新通过提供洞见、娱乐体验和运营效率,赋能广大用户。 + +## 什么是 AI 智能体? {#what-are-ai-agents} + +AI智能体是使用人工智能来执行任务或做出自主决策的软件程序。 它们从数据中学习,适应变化并处理复杂的任务。 它们不停地运转,可以随时发现机会。 + +### AI 代理如何与区块链协作 {#how-ai-agents-work-with-blockchains} + +在传统金融中,AI 智能体常常在中心化的环境中运行,获取的数据输入有限。 这阻碍了它们学习或自主管理资产的能力。 + +相反,以太坊的去中心化生态系统提供了几大关键优势: + +- 透明的数据:访问实时的区块链信息。 +- 真实的资产所有权:数字资产完全由 AI 智能體拥有。 +- 强大的链上功能:允许 AI 代理执行交易、与智能合约交互、提供流动性,并进行跨协议合作。 + +这些因素将AI智能体从简单的机器人转变为动态的、自我完善的系统,为多个领域提供巨大的价值: + + + + + + + +## 以太坊上的 AI 代理 {#ai-agents-on-ethereum} + +我们正开始探索AI智能体的全部潜力,而且已经有项目在人工智能和区块链之间发挥协同效应——特别是在透明度和货币化方面。 + + + +Luna 首次作为播客嘉宾亮相 + + + +## 智能代理控制的钱包{#agent-controlled-wallets} + +像 Luna 或 AIXBT 这样的智能代理控制着自己的链上钱包([AIXBT 钱包](https://clusters.xyz/aixbt)、[Luna 钱包](https://zapper.xyz/account/0x0d177181e3763b20d47dc3a72dd584368bd8bf43)),使它们能够给粉丝打赏并参与经济活动。 + +在 Luna 的 X 社交媒体营销活动 #LunaMuralChallenge 期间,Luna 通过她的 Base 钱包选出并奖励了获胜者——这标志着AI雇佣人类进行加密奖励的首次出现。 + + + + +

最好知道

+

AI智能体和相关工具仍处于早期开发阶段且尚处于实验阶段,请谨慎使用。

+
+
+ +## 使用聊天命令控制你的钱包 {#control-your-wallet-using-chat-commands} + +您可以跳过 DeFi 的复杂界面,使用简单的聊天命令管理您的加密货币。 + +这种直观的方法使交易速度更快、更容易,并且不容易出现将资金发送到错误的地址或支付过多的费用之类的错误。 + + + +## AI 代理 vs AI 机器人 {#ai-agents-vs-ai-bots} + +AI智能体和AI机器人之间的区别有时会令人困惑,因为它们都根据输入执行自动操作。 + +- AI机器人就像自动助手——它们遵循特定的、预先编程的指令来执行例行程序任務。 +- AI智能体更像是智能伙伴——它们从经验中学习,适应新信息,并自主做出决策。 + +| | AI 智能体 | AI 机器人 | +| -------- | ----------------- | ---------------- | +| **交互** | 复杂、适应性强、自主 | 简单、预定义范围、硬编码 | +| **学习** | 不断学习,能够实时实验并适应新数据 | 根据预训练数据或固定规则进行操作 | +| **任务完成** | 旨在实现更广泛的目标 | 只专注于特定任务 | + +## 深入了解 {#dive-deeper} + + + +## 你可以构建自己的 AI 代理 {#you-can-build-your-own-ai-agent} + + \ No newline at end of file From dea1b6771137cc7df89692bce7b1874b41a7b186 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:32 -0800 Subject: [PATCH 066/581] update(i18n): src/intl/zh/page-assets.json --- src/intl/zh/page-assets.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intl/zh/page-assets.json b/src/intl/zh/page-assets.json index f8bd5451a50..51e8e93a399 100644 --- a/src/intl/zh/page-assets.json +++ b/src/intl/zh/page-assets.json @@ -5,7 +5,7 @@ "page-assets-dao": "去中心化自治组织", "page-assets-defi": "去中心化金融", "page-assets-merge": "合并", - "page-assets-doge": "使用去中心化应用程序的拟人狗", + "page-assets-doge": "使用去中心化应用程序程序的拟人狗", "page-assets-download-artist": "艺术家:", "page-assets-download-download": "下载", "page-assets-enterprise": "企业级以太坊", From ee16d1a77f93bcf92b00c33e64a11cf25a0dd33c Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:34 -0800 Subject: [PATCH 067/581] update(i18n): public/content/translations/zh/eth/supply/index.md --- .../translations/zh/eth/supply/index.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 public/content/translations/zh/eth/supply/index.md diff --git a/public/content/translations/zh/eth/supply/index.md b/public/content/translations/zh/eth/supply/index.md new file mode 100644 index 00000000000..bcf3ab28838 --- /dev/null +++ b/public/content/translations/zh/eth/supply/index.md @@ -0,0 +1,81 @@ +--- +title: 了解以太币的供应与发行 +description: 有关以太币供应与发行的初学者友好型指引,包括EIPs,PoS和EIP-1559等核心概念。 +lang: zh +--- + +# 以太币供应和发行{#eth-supply-and-issuance} + +## 前提条件 {#prerequisites} + +这篇文章是给没有任何相关知识的纯小白撰写的。 然而,要全面了解该主题,了解以下概念会很有帮助:[以太坊改进提案 (EIP)](/eips/#introduction-to-ethereum-improvement-proposals)、[工作量证明 (PoW)](/developers/docs/consensus-mechanisms/pow/)、[权益证明 (PoS)](/developers/docs/consensus-mechanisms/pos/) 以及[伦敦升级](/ethereum-forks/#london)。 + +## 现如今有多少以太币呢? {#current-eth-supply} + +以太币的总供应量是动态变化的,主要取决于两个因素: + +1. **权益证明(PoS)发行**:新的以太币会作为对保护网络安全的验证者的奖励 +2. **EIP-1559燃烧**:部分交易费用将永久退出流通 + +你可以在[Ultrasound Money]等平台上实时跟踪当前供应量及其变化(https://ultrasound.money)。 + +以太坊的供应和发行是了解网络健康和未来的重要指标。 但以太币的发行究竟意味着什么呢? 让我们来分析一下。 + +## 为什么以太币的供应和发行很重要{#why-eth-supply-matters} + +在传统金融中,中央银行控制着货币供应,通常会印更多的钞票来刺激经济。 另一方面,以太坊通过代码在透明且可预测的系统上运行。 了解以太币的存世量和发行速度有助于: + +- 建立信任:以太坊社区可以直接从区块链验证供应和发行数据。 +- 了解价值:以太币的发行和销毁比率的关系影响以太币的通胀和通缩,从而影响随时间变化的价值。 +- 跟踪网络健康状况:发行和燃烧比率的变化反映了网络的活跃度和安全性。 + +## 什么是以太币发行? {#eth-issuance} + +以太币发行是指创建新的以太币作为对保护以太坊网络安全的验证者的奖励的过程。 它与总供应量,即以太币的总流通量是分开的。 + +### 简单来说: + +- **发行**为网络添加新的以太币。 +- **燃烧**(EIP-1559介绍过)通过销毁一部分交易费来移除网络中的以太币。 + +这两股力量决定了以太坊的供应量随着时间是增长(通胀)还是减少(通缩)。 + +## 今天的以太币供应与发行{#eth-supply-today} + +与早期的工作量证明(PoW)模型相比,以太坊的权利证明系统(PoS)系统大幅减少了以太币的发行量。 验证者——锁定以太币来保护网络——可获得以太币作为奖励。 你可以在[Ultrasound Money]上查看当前的发行率(https://ultrasound.money)。 + +然而,这个数字是动态的。 得益于EIP-1559,当网络活动活跃时,以太币的燃烧率会超过发行率,从而产生通缩效应。 例如,在需求旺盛的时期,像NFT发行或者DeFi活动,销毁的以太币的数量会超过发行的数量。 + +### 跟踪以太币供应与发行的工具: + +- [Ultrasound Money] + (https://ultrasound.money)——实时跟踪以太币供应,发行和燃烧率 +- [Etherscan] (https://etherscan.io)—— 带有供应指标的区块浏览器 + +## 影响未来以太币供应和发行的因素{#future-eth-supply} + +以太坊未来供应量不是固定——它取决于几个变量: + +1. **质押参与**: + - 更多的验证者加入到网络意味着分配更多的以太币奖励。 + - 更少的验证者参与将减少发行。 + - 了解更多关于[质押](/staking/)。 + +2. **网络活动度**: + - 高交易量会导致更多的以太币被燃烧,可能抵消或者超过发行量。 + - 了解关于[gas费](/developers/docs/gas/)和他们怎么影响燃烧。 + +3. **协议升级**: + - 未来以太坊代码的变化可能会导致质押奖励或者燃烧机制的调整,进一步塑造供应生态。 + - 保持关注[以太坊路线图](/roadmap/)。 + +## 回顾:以太币供应,发行和未来展望{#recap} + +以下是你需要了解的有关以太币供应和发行的摘要: + +- **以太币供应**:动态的且持续变化的,可在工具上实时跟踪的,像[Ultrasound Money](https://ultrasound.money) +- **通过权益证明发行**:相对于工作量证明显著减少,通过奖励验证者。 在[Ultrasound Mone]上查看当前比例(https://ultrasound.money) +- **EIP-1559的作用**:以太币燃烧可以在高活跃度期间使网络通货紧缩 +- **未来趋势**:质押参与,网络需求和协议更新将影响以太币供应 + +了解以太币有助于揭示以太坊的价值及其作为通缩型去中心化资产的潜力。 有关合并如何影响以太币供应的详细信息,请查阅我们的[详细分析](/roadmap/merge/issuance/)。 好奇以太币未来的发展? 使用像[Ultrasound Money](https://ultrasound.money)的工具深入了解或者探索我们的[质押指引](/staking/)。 \ No newline at end of file From c3b3f7f32b5a68cdb937ecaccc0ee32ee870cd10 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:37 -0800 Subject: [PATCH 068/581] update(i18n): public/content/translations/zh/foundation/index.md --- .../translations/zh/foundation/index.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/public/content/translations/zh/foundation/index.md b/public/content/translations/zh/foundation/index.md index b6b2c5c1d0c..7892f71935a 100644 --- a/public/content/translations/zh/foundation/index.md +++ b/public/content/translations/zh/foundation/index.md @@ -9,32 +9,32 @@ lang: zh -[以太坊基金会](http://ethereum.foundation/) (EF) 是一个非营利性组织,致力于支持 [以太坊](/what-is-ethereum/) 以及相关技术。 +[以太坊基金会](http://ethereum.foundation/) (EF) 是一个非营利组织,致力于支持[以太坊](/what-is-ethereum/)及相关技术。 -EF 不是一家公司,甚至不是传统的非营利组织。 他们的作用不是控制或领导以太坊,也不是为以太坊相关技术的重大开发提供资金的唯一组织。 EF 只是巨大的[生态系统](/community/) 的一部分。 +EF 不是一家公司,甚至不是传统的非营利组织。 他们的作用不是控制或领导以太坊,也不是为以太坊相关技术的重大开发提供资金的唯一组织。 EF 只是更庞大的[生态系统](/community/)的一部分。 -## 以太基基金会倡议 {#ethereum-foundation-initiatives} +## 以太坊基金会举措 {#ethereum-foundation-initiatives} -### 生态系统支持方案 {#ecosystem-support-program} +### 生态系统支持计划 {#ecosystem-support-program} -[生态系统支持计划](https://esp.ethereum.foundation/) 旨在向广大以太坊社区内的项目和实体提供财政和非财政支持来加速生态系统的成长。 生态系统支持计划是对原始以太坊赠款计划的扩展,该计划主要侧重于财务支持。 +[生态系统支持计划](https://esp.ethereum.foundation/)旨在为更广泛的以太坊社区内的项目和实体提供资金和非资金支持,以加速生态系统的发展。 生态系统支持计划是对原始以太坊赠款计划的扩展,该计划主要侧重于财务支持。 -在[esp.ethereum.foundation](https://esp.ethereum.foundation/)可以了解更多关于生态系统支持计划,曾经的赠款接收者和申请过程。 你也可以查看 [生态系统支持计划博客](https://blog.ethereum.org/category/ecosystem-support-program/) 或关注 [@EF_ESP](https://twitter.com/EF_ESP) 获取他们的最新消息和公告。 +访问 [esp.ethereum.foundation](https://esp.ethereum.foundation/),详细了解生态系统支持计划、过往的资助金获得者以及资助金申请流程。 您还可以查看[生态系统支持计划博客](https://blog.ethereum.org/category/ecosystem-support-program/),或在推特上关注 [@EF_ESP](https://twitter.com/EF_ESP),了解他们的最新动态和公告。 -### 测试版 {#devcon} +### 以太坊开发者大会 (Devcon) {#devcon} 从 2014 年开始,以太坊基金会开始组织“测试版”——所有以太坊开发人员、研究人员、思想家和开发人员的年度会议。 -从会议开始以来,你每年都可以在 [archive.devcon.org](https://archive.devcon.org/) 访问会议的视频内容。 +自大会创办以来,每年的演讲视频都可以在 [archive.devcon.org](https://archive.devcon.org/) 上观看。 -访问 [devcon.org](https://devcon.org/) 了解详情,查看 [Devcon 博客](https://devcon.org/en/blogs/),或关注 [@efdevcon](https://twitter.com/EFDevcon) 了解最新公告。 +请访问 [devcon.org](https://devcon.org/) 了解更多信息,查看 [Devcon 博客](https://devcon.org/en/blogs/),或在推特上关注 [@efdevcon](https://twitter.com/EFDevcon) 获取最新公告。 -### Fellowship 计划 {#fellowship-program} +### 研究员计划 {#fellowship-program} -[以太坊基金会团体计划](https://fellowship.ethereum.foundation/)是一项旨在帮助解决不同文化、国籍和经济阶层之间代表力差距的倡议。 团体计划旨在通过识别和支持独特和有才华的个人来弥补这些差距,帮助实现以太坊的相关性,并为那些将成为 Web3 未来但未被充分代表的人和社区打破进入壁垒。 +[以太坊基金会研究员计划](https://fellowship.ethereum.foundation/)是一项旨在弥合不同文化、国籍和经济阶层之间代表性差距的倡议。 团体计划旨在通过识别和支持独特和有才华的个人来弥补这些差距,帮助实现以太坊的相关性,并为那些将成为 Web3 未来但未被充分代表的人和社区打破进入壁垒。 -[从“团体.以太坊.基金会”了解更多](https://fellowship.ethereum.foundation/)。 +[在 fellowship.ethereum.foundation 上了解更多信息](https://fellowship.ethereum.foundation/)
-有关基金会及其工作的详细信息,请访问[以太坊基金会](http://ethereum.foundation/),或者查看[以太坊基金会博客](https://blog.ethereum.org/),了解以太坊基金会的最新消息和通告。 +要了解更多关于基金会及其工作的信息,请访问 [ethereum.foundation](http://ethereum.foundation/),或者查看[以太坊基金会博客](https://blog.ethereum.org/),了解以太坊基金会 (EF) 的最新动态和公告。 From 2ed2a943085e8ba0e4cb5bb09f108c5a5934372d Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:39 -0800 Subject: [PATCH 069/581] update(i18n): public/content/translations/zh/governance/index.md --- .../translations/zh/governance/index.md | 92 +++++++++---------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/public/content/translations/zh/governance/index.md b/public/content/translations/zh/governance/index.md index 888b2f6b497..5789cf34f37 100644 --- a/public/content/translations/zh/governance/index.md +++ b/public/content/translations/zh/governance/index.md @@ -22,44 +22,44 @@ _如果没有人拥有以太坊,那么关于以太坊过去和未来变化的 以太坊治理是指进行协议更改的流程。 需要特别指出的是,这个流程与人们和应用程序如何使用该协议无关 - 以太坊无需许可。 世界上任何人都可以在任何地方参与链上活动。 没有规定谁可以或者不可以构建应用程序或者发送交易。 然而,需要有一个流程来提议针对核心协议的修改,去中心化应用程序正是在核心协议上运行的。 由于非常多的人都依赖以太坊的稳定性,因此对包括社会和技术流程在内的核心修改进行协调的门槛非常高,需要确保对以太坊进行的任何修改都是安全的并得到社区的广泛支持。 -### 链上治理与链下治理 {#onchain-vs-offchain} +### 链上治理与脱链治理 {#onchain-vs-offchain} 区块链技术支持新治理功能,称为“链上治理”。 链上治理是指拟定的协议修改由利益相关方投票决定。通常由区块链上治理代币的持有者进行投票。 对于某些链上治理形式,拟定的协议更改已经写入代码,如果利益相关方通过签署交易批准更改,则变更会自动执行。 与之相对的是链下治理,即任何协议变更决议都通过非正式社区讨论过程决定。如获批准,将在代码中加以执行。 -**以太坊的链下治理**吸引了非常广泛的利益相关方参与该流程。 +**以太坊治理是脱链的**,众多利益相关者都会参与此过程。 -_虽然在协议层面上以太坊的治理在链下进行,但许多基于以太坊的使用案例,例如 DAO 会采用链上治理。_ +_虽然在协议层面,以太坊治理是脱链的,但许多建立在以太坊之上的用例(例如 DAO)会使用链上治理。_ - 关于去中心化自治组织的更多信息 + 关于 DAO 的更多信息 ## 谁参与这项工作? {#who-is-involved} -[以太坊社区](/community/)有各种利益相关者,每个人在治理进程中各司其职。 从距离协议最远的利益相关方开始,我们有: +在[以太坊社区](/community/)中,有各种各样的利益相关者,他们在治理过程中都扮演着各自的角色。 从距离协议最远的利益相关方开始,我们有: -- **以太币持有者**:这些人拥有任意数量的以太币。 [关于以太币的更多信息](/what-is-ether/)。 -- **应用程序用户**:这些人员与以太坊区块链上的应用程序交互。 -- **应用程序/工具开发者**:这些人编写在以太坊区块链上运行的应用程序是(比如去中心化金融、非同质化代币等)或构建以太坊交互的工具(例如钱包、测试套件等)。 [关于去中心化应用程序的更多信息](/apps/)。 -- **节点运营商**:这些人运行区块和交易广播节点,拒绝遇到的任何无效交易或区块。 [关于节点的更多信息](/developers/docs/nodes-and-clients/)。 -- **以太坊改进提案作者**:这些人提议修改以太坊协议,具体形式为以太坊改进提案。 [关于以太坊改进提案的更多信息](/eips/)。 +- **以太币持有者**:这些人持有任意数量的 ETH。 [关于 ETH 的更多信息](/what-is-ether/)。 +- **应用程序用户**:这些人员与以太坊区块链上的应用程序进行交互。 +- **应用程序/工具开发者**:这些人编写在以太坊区块链上运行的应用程序(例如 DeFi、NFT 等) 或者构建与以太坊交互的工具(例如,钱包、测试套件等)。 [关于去中心化应用程序的更多信息](/apps/)。 +- **节点运营商**:这些人运行用于广播区块和交易的节点,并拒绝遇到的任何无效交易或区块。 [关于节点的更多信息](/developers/docs/nodes-and-clients/)。 +- **EIP 作者**:这些人以太坊改进提议 (EIP) 的形式,对以太坊协议提出修改建议。 [关于 EIP 的更多信息](/eips/)。 - **验证者**:这些人运行的节点能够将新的区块添加到以太坊区块链上。 -- **协议开发者**(又名 “核心开发者”):这些人负责维护各种以太坊实现(例如执行层的 go-ethereum、Nethermind、Besu、Erigon、Reth 或共识层的 Prysm、Lighthouse、Nimbus、Teku、Lodestar、Grandine)。 [关于以太坊客户端的更多信息](/developers/docs/nodes-and-clients/)。 +- **协议开发者**(又名 “核心开发者”):这些人负责维护各种以太坊实现(例如,执行层的 go-ethereum、Nethermind、Besu、Erigon、Reth 或共识层的 Prysm、Lighthouse、Nimbus、Teku、Lodestar、Grandine)。 [关于以太坊客户端的更多信息](/developers/docs/nodes-and-clients/)。 -_注:任何个人都可以属于多个组(如:协议开发者可以支持以太坊改进提案,运行信标链验证者,并使用去中心化金融应用程序)。 不过为了明确概念,这样最容易区分。_ +_注意:任何个人都可以属于这些群体中的多个(例如,一个协议开发者可以支持一个 EIP、运行一个信标链验证者,并使用 DeFi 应用程序)。_ 不过,为了明确概念,这样最容易区分。_ ## 什么是以太坊改进提案? {#what-is-an-eip} -以太坊治理中使用的一个重要流程是**以太坊改进提案**。 以太坊改进提案是指明以太坊潜在新功能或流程的一套标准。 以太坊社区内的任何人都可以创建以太坊改进提案。 如果你对撰写以太坊改进提案或参与同行评审和/或治理感兴趣,请参阅: +以太坊治理中使用的一个重要流程是提出**以太坊改进提议 (EIP)**。 以太坊改进提案是指明以太坊潜在新功能或流程的一套标准。 以太坊社区内的任何人都可以创建以太坊改进提案。 如果你对撰写以太坊改进提案或参与同行评审和/或治理感兴趣,请参阅: - 关于以太坊改进提案的更多信息 + 关于 EIP 的更多信息 @@ -68,9 +68,9 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持 对以太坊协议进行修改的正式流程如下: -1. **提出核心以太坊改进提案**:如 [EIP-1](https://eips.ethereum.org/EIPS/eip-1#core-eips) 所述,正式提议对以太坊进行修改的第一步是在核心以太坊改进提案进行详细说明。 一旦被接受,这将作为协议开发者要执行的以太坊改进提案正式规范。 +1. **提议一个核心 EIP**:正如 [EIP-1](https://eips.ethereum.org/EIPS/eip-1#core-eips) 中所述,正式提议对以太坊进行更改的第一步是在一个核心 EIP 中详细说明。 一旦被接受,这将作为协议开发者要执行的以太坊改进提案正式规范。 -2. **向协议开发者展示以太坊改进提案**:一旦拥有已对其收集社区意见的核心以太坊改进提案,你应该将它展示给协议开发者。 你可以通过提议在 [AllCoreDevs 调用](https://github.com/ethereum/execution-specs/tree/master/network-upgrades#getting-the-considered-for-inclusion-cfi-status)中进行讨论来实现此目的。 很可能已经在 [Ethereum Magician 论坛](https://ethereum-magicians.org/)或 [Ethereum R&D Discord](https://discord.gg/mncqtgVSVw) 中进行过异步讨论。 +2. **向协议开发者展示您的 EIP**:一旦您有了一个已收集社区意见的核心 EIP,您就应该将其展示给协议开发者。 您可以在 [AllCoreDevs call](https://github.com/ethereum/execution-specs/tree/master/network-upgrades#getting-the-considered-for-inclusion-cfi-status) 上提议讨论它。 一些讨论很可能已经在 [Ethereum Magician's 论坛](https://ethereum-magicians.org/)或 [Ethereum R&D Discord](https://discord.gg/mncqtgVSVw) 中异步进行过了。 > 此阶段的潜在成果包括: @@ -78,11 +78,11 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持 > - 要求技术变更 > - 如果不是优先事项或相对于发展工作而言改进不够明显,则可能会被否决。 -3. 收到所有相关利益相关方的反馈意见后,**进入最终提议:**你很可能需要更改初始建议,以改善其安全性,或更好地满足不同用户的需求。 一旦以太坊改进提案中包含了你认为必要的所有更改,你需要再次将其展示给协议开发者。 然后进入流程的下一步,或者出现新问题,需要对你的建议进行另一轮迭代。 +3. \*\*迭代完善最终提案:\*\*收到所有相关利益相关方的反馈后,您可能需要修改您的初始提案,以提高其安全性或更好地满足不同用户的需求。 一旦以太坊改进提案中包含了你认为必要的所有更改,你需要再次将其展示给协议开发者。 然后进入流程的下一步,或者出现新问题,需要对你的建议进行另一轮迭代。 -4. **将以太坊改进提案包含在网络升级中**:假定该以太坊改进提案已经过审批、测试和实施,将被安排作为网络升级的一部分。 鉴于网络升级的协调成本很高(每个人都需要同步升级),以太坊改进提案通常被捆绑在一起升级。 +4. **EIP 被纳入网络升级**:假设该 EIP 获得批准、经过测试和实施,它就会被排定为网络升级的一部分。 鉴于网络升级的协调成本很高(每个人都需要同步升级),以太坊改进提案通常被捆绑在一起升级。 -5. **网络升级已激活**:网络升级激活后,以太坊改进提案将在以太坊网络上运行。 _注意:网络升级通常在测试网上激活后才会在以太坊主网上激活。_ +5. **网络升级已激活**:网络升级激活后,该 EIP 将在以太坊网络上生效。 _注意:网络升级通常先在测试网激活,然后再在以太坊主网激活。_ 这一流程虽然极度简化,但概述了在以太坊激活协议修改的重要阶段。 现在看看该流程中的非正式因素。 @@ -90,11 +90,11 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持 ### 了解先前的工作 {#prior-work} -以太坊改进提案倡导者应首先熟悉先前的工作和建议,然后认真考虑创建一个可部署到以太坊主网上的以太坊改进提案。 这样,该提议很有可能带入一些以前没有被拒绝过的新事物。 研究此问题的三个主要方面是[以太坊改进提案存储库](https://github.com/ethereum/EIPs)、[以太坊魔法师](https://ethereum-magicians.org/)和 [ethresear.ch](https://ethresear.ch/)。 +以太坊改进提案倡导者应首先熟悉先前的工作和建议,然后认真考虑创建一个可部署到以太坊主网上的以太坊改进提案。 这样,该提议很有可能带入一些以前没有被拒绝过的新事物。 研究这个问题主要有三个地方:[EIP 代码库](https://github.com/ethereum/EIPs)、[Ethereum Magicians](https://ethereum-magicians.org/) 和 [ethresear.ch](https://ethresear.ch/) ### 工作组 {#working-groups} -如果未经编辑或修改,以太坊改进提案的初稿不太可能在以太坊主网上执行。 一般而言,以太坊改进提案倡导者将与一部分协议开发者合作,指明、实施、测试、迭代和最后确定提议。 根据历史经验,这些工作组需要几个月(有时甚至需要几年!)。 同样的,以太坊改进提案倡导者应在收集最终用户反馈意见和减轻部署风险的工作早期就让相关应用程序/工具开发者参与。 +如果未经编辑或修改,以太坊改进提案的初稿不太可能在以太坊主网上执行。 一般而言,以太坊改进提案倡导者将与一部分协议开发者合作,指明、实施、测试、迭代和最后确定提议。 从历史上看,这些工作组需要几个月(有时甚至是几年!) 的工作。 同样的,以太坊改进提案倡导者应在收集最终用户反馈意见和减轻部署风险的工作早期就让相关应用程序/工具开发者参与。 ### 社区共识 {#community-consensus} @@ -102,25 +102,25 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持 在如何处理争议性提议方面没有明确的指导手册。 这是以太坊去中心化设计的结果,其中没有任何一个利益相关者群体可以通过蛮力强迫其他人:协议开发者可以选择不实施代码更改;节点操作员可以选择不运行最新的以太坊客户端;应用程序团队和用户可以选择不在链上进行交易。 由于协议开发者没有办法强迫人们执行网络升级,他们通常会避免实施对于更广泛社区来说争议大于好处的以太坊改进提案。 -以太坊改进提案倡导者应征求所有相关利益相关方的反馈意见。 如果你发现自己是一个有争议的以太坊改进提案倡导者,你应该尝试解决反对方的问题,以便围绕该提议建立共识。 考虑到以太坊社区的规模和多样性,无法使用固定形式(如:投币选举)来达成社区共识,并且提议倡导者将适应他们提案的情况。 +以太坊改进提案倡导者应征求所有相关利益相关方的反馈意见。 如果你发现自己是一个有争议的以太坊改进提案倡导者,你应该尝试解决反对方的问题,以便围绕该提议建立共识。 鉴于以太坊社区的规模和多样性,没有单一的指标(例如代币投票)可以用来衡量社区共识,因此 EIP 倡导者应根据其提案的具体情况进行调整。 除了以太坊网络的安全性外,协议开发者历来对应用程序/工具开发者和应用程序用户的价值给予了高度重视,因为正是因为他们使用和发展以太坊,才使以太坊生态系统对其他利益相关方形成吸引力。 此外,以太坊改进提案需要在所有客户实端实施执行,这些项目由不同的团队管理。 在这个过程中,通常意味着让多个协议开发者团队相信,某个特定的改变有价值,它有助于最终用户或解决安全问题。 -## 处理意见不一致的问题 {#disagreements} +## 处理分歧 {#disagreements} 许多利益相关方的动机和信仰不同,这意味着分歧很正常。 通常,在公共论坛上通过长时间讨论来处理分歧,以了解问题的根源并允许任何人发表意见。 通常会有一方让步,或大家达成一致。 如果某一方的愿望非常强烈,强迫实施特定变化可能导致区块链分叉。 区块链分叉是一些利益相关方抗议实施协议更改,导致不同、互不兼容的协议版本运行,从而出现两个不同的区块链。 -### 去中心化自治组织分叉 {#dao-fork} +### DAO 分叉 {#dao-fork} -分叉是指需要对网络进行重大技术升级或改变,并改变协议“规则”。 [以太坊客户端](/developers/docs/nodes-and-clients/)必须更新他们的软件以执行新的分叉规则。 +分叉是指需要对网络进行重大技术升级或改变,并改变协议“规则”。 【以太坊客户端】(/developers/docs/nodes-and-clients/) 必须升级他们的软件来执行新的分叉规则。 -去中心化自治组织分叉是为了回应 [2016 年去中心化自治组织遭受攻击的事件](https://www.coindesk.com/learn/understanding-the-dao-attack)。当时,一份不安全的[去中心化自治组织](/glossary/#dao)合约导致黑客盗走了超过 360 万个以太币。 分叉将资金从错误合约转移到新合约,允许在黑客攻击中丢失资金的任何人收回这些资金。 +DAO 分叉是为了应对 [2016 年的 DAO 攻击](https://www.coindesk.com/learn/understanding-the-dao-attack) 事件,当时一个不安全的 [DAO](/glossary/#dao) 合约在一次黑客攻击中被盗走超过 360 万 ETH。 分叉将资金从错误合约转移到新合约,允许在黑客攻击中丢失资金的任何人收回这些资金。 -这一行为由以太坊社区投票决定。 任何以太币持有人都能够通过在[投票平台](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/)上交易来进行投票。 分叉的决定获得了 85% 以上的票数。 +这一决定是由以太坊社区投票决定的。 任何 ETH 持有者都可以通过在[一个投票平台](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/)上的交易进行投票。 分叉的决定获得了 85% 以上的票数。 注意,虽然的确是为了回滚被黑状态而导致分叉,但在决定分叉时,投票的权重是值得商榷的,原因如下: @@ -128,7 +128,7 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持 - 大多数人不知道正在投票 - 投票仅代表以太币持有人,而非系统中任何其他参与者 -部分社区用户拒绝分叉,主要是因为他们认为该去中心化自治组织事件不是协议缺陷。 他们随后成立了 [Ethereum Classic](https://ethereumclassic.org/)。 +部分社区用户拒绝分叉,主要是因为他们认为该去中心化自治组织事件不是协议缺陷。 他们后来成立了 [Ethereum Classic](https://ethereumclassic.org/)。 如今,以太坊社区已经采取了不干预合约漏洞或资金损失的政策,以保持系统的可信中立性。 @@ -138,7 +138,7 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持 -### 分叉的用途 {#forking-utility} +### 分叉的效用 {#forking-utility} 以太坊/Ethereum Classic 分叉是一个良好分叉的优秀案例。 我们有两组人,他们在一些核心价值观上的分歧很大,因而认为值得冒险去坚持他们的具体行动方案。 @@ -152,7 +152,7 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持 虽然以前的规范和开发实现始终是完全开源的,但用于提议更新的上述正式过程并没有被使用。 这使研究人员和执行人员能够更快地确定和商定各种变化。 -当信标链于 2022 年 9 月 15 日与以太坊执行层合并时,作为[巴黎网络升级](/ethereum-forks/#paris)的一部分,合并完成。 提案 [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675) 从“上次调用”变为“最终版”,完成向权益正面的过渡。 +2022 年 9 月 15 日,信标链与以太坊执行层合并,作为 [巴黎网络升级](/ethereum-forks/#paris) 的一部分,“合并”正式完成。 [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675) 提案的状态从“最终征求意见”改为“最终”,完成了向权益证明的过渡。 关于合并的更多信息 @@ -160,25 +160,25 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持 -## 如何加入? {#get-involved} +## 我如何参与? 参与方式{#get-involved} -- [提出以太坊改进提案](/eips/#participate) -- [讨论目前的提案](https://ethereum-magicians.org/) -- [参与 R&D 讨论](https://ethresear.ch/) -- [加入以太坊 R&D Discord](https://discord.gg/mncqtgVSVw) -- [运行节点](/developers/docs/nodes-and-clients/run-a-node/) -- [参与开发](/developers/docs/nodes-and-clients/#execution-clients) +- [提议一个 EIP](/eips/#participate) +- [讨论当前提案](https://ethereum-magicians.org/) +- [参与研发讨论](https://ethresear.ch/) +- [加入以太坊研发 Discord](https://discord.gg/mncqtgVSVw) +- [运行一个节点](/developers/docs/nodes-and-clients/run-a-node/) +- [为客户端开发做贡献](/developers/docs/nodes-and-clients/#execution-clients) - [核心开发者学徒计划](https://blog.ethereum.org/2021/09/06/core-dev-apprenticeship-second-cohort/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} 以太坊的治理并没有严格定义。 各社区参与者对此有着不同的看法。 以下是其中一部分: -- [关于区块链治理的说明](https://vitalik.eth.limo/general/2017/12/17/voting.html) - _Vitalik Buterin_ -- [以太坊治理如何发挥作用?](https://cryptotesters.com/blog/ethereum-governance) - _Cryptotestters_ -- [以太坊治理如何发挥作用](https://medium.com/coinmonks/how-ethereum-governance-works-71856426b63a)- _Micah Zoltu_ -- [什么是以太坊核心开发者?](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/)- _Hudson Jameson_ -- [治理,第 2 部分:财阀统治仍非好事](https://vitalik.eth.limo/general/2018/03/28/plutocracy.html) - _Vitalik Buterin_ -- [超越代币投票的治理方式](https://vitalik.eth.limo/general/2021/08/16/voting3.html) - _Vitalik Buterin_ -- [了解区块链治理](https://web.archive.org/web/20250124192731/https://research.2077.xyz/understanding-blockchain-governance) - _2077 研究_ -- [以太坊治理机制](https://www.galaxy.com/insights/research/ethereum-governance/) - _Christine Kim_ +- [关于区块链治理的笔记](https://vitalik.eth.limo/general/2017/12/17/voting.html) - _Vitalik Buterin_ +- [以太坊治理如何运作?](https://cryptotesters.com/blog/ethereum-governance) – _Cryptotesters_ +- [以太坊治理如何运作](https://medium.com/coinmonks/how-ethereum-governance-works-71856426b63a) – _Micah Zoltu_ +- [什么是以太坊核心开发者?](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/) - _Hudson Jameson_ +- [治理,第 2 部分:财阀统治依然糟糕](https://vitalik.eth.limo/general/2018/03/28/plutocracy.html) - _Vitalik Buterin_ +- [超越代币投票治理](https://vitalik.eth.limo/general/2021/08/16/voting3.html) - _Vitalik Buterin_ +- [理解区块链治理](https://web.archive.org/web/20250124192731/https://research.2077.xyz/understanding-blockchain-governance) - _2077 Research_ +- [以太坊政府](https://www.galaxy.com/insights/research/ethereum-governance/) - _Christine Kim_ From fc59f2de145f1149da631e87acf848d62d7cbd3a Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:43 -0800 Subject: [PATCH 070/581] update(i18n): public/content/translations/zh/developers/docs/storage/index.md --- .../zh/developers/docs/storage/index.md | 100 +++++++++--------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/public/content/translations/zh/developers/docs/storage/index.md b/public/content/translations/zh/developers/docs/storage/index.md index 95f91cf9e30..952e8e3cdb7 100644 --- a/public/content/translations/zh/developers/docs/storage/index.md +++ b/public/content/translations/zh/developers/docs/storage/index.md @@ -6,7 +6,7 @@ lang: zh 不同于由一个公司或组织控制的中心服务器,分布式存储系统由分别持有全局数据中部分数据的用户操作者组成 P2P 网络,形成了一个具有弹性的文件储存、共享系统。 这些可以应用于基于区块链的应用程序或任何 P2P 网络中。 -以太坊本身可以用作分布式存储系统,所有智能合约的编码储存就是一种分布式存储。 然而,当涉及大量的数据存储时,就不太符合以太坊的最初目标。 这一区块链正在稳步增长,在本报告撰写之时,以太坊区块链约为 500GB - 1TB([取决于客户端](https://etherscan.io/chartsync/chaindefault)),而网络上的每个节点都需要存储所有这些数据。 如果链上数据量继续扩大(例如 5TB),那么将导致所有节点都无法继续运行。 而且,由于[燃料](/developers/docs/gas)费用,将这么多数据部署到主网的费用将非常昂贵。 +以太坊本身可以用作分布式存储系统,所有智能合约的编码储存就是一种分布式存储。 然而,当涉及大量的数据存储时,就不太符合以太坊的最初目标。 这一区块链正在稳步增长,但在撰写本文时,以太坊区块链的大小约为 500GB - 1TB([取决于客户端](https://etherscan.io/chartsync/chaindefault)),而网络上的每个节点都需要存储所有这些数据。 如果链上数据量继续扩大(例如 5TB),那么将导致所有节点都无法继续运行。 而且,由于 [gas](/developers/docs/gas) 费用,将这么多数据部署到主网的成本将高得令人望而却步。 由于这些制约因素,我们需要使用不同的区块链或方法,以分布式的方式储存大量数据。 @@ -23,27 +23,27 @@ lang: zh 为了使某个数据永久保存,我们需要使用一种持久性机制。 例如,在以太坊中,持久性机制是当运行一个节点时,需要考虑整条链的情况。 新建的数据持续不断地堆积到链的末端,并且要求每个节点复制所有新加入的数据。 -这被称为**基于区块链**的持久性机制。 +这被称为 **基于区块链** 的持久性。 -区块链的持久性存储机制会出现区块链过大,维护和存储所有数据十分困难的问题(比如[许多机构](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/)预测整个区块链网络需要 40ZB 的存储容量)。 +基于区块链的持久性的问题在于,区块链可能会变得过大,以至于无法切实地维护和存储所有数据(例如,[许多资料](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/)估计,互联网需要超过 40 ZB 的存储容量)。 区块链还必须有某种类型的激励结构。 为获得基于区块链的持久性,需要向验证者付款。 数据被添加到链上后,向验证者付款以继续添加数据。 基于区块链持久性的平台: -- 以太坊 +- 以太坊(Ethereum) - [Arweave](https://www.arweave.org/) ### 基于合约 {#contract-based} -我们能直观地感受到,**基于合约**的持久性使得数据不能被每个节点复制并永久存储,而必须根据合约协议进行维护。 这些是与多个节点达成的协议,这些节点承诺在一段时间内保存一份数据。 每当费用耗尽或数据更新时,就必须向这些节点续费,以保持数据的持续性。 +**基于合约** 的持久性直观地意味着数据无法由每个节点复制和永久存储,而是必须通过合约协议进行维护。 这些是与多个节点达成的协议,这些节点承诺在一段时间内保存一份数据。 每当费用耗尽或数据更新时,就必须向这些节点续费,以保持数据的持续性。 -在大多数情况下,不是在链上储存所有数据,而是在链上存储定位数据的哈希值。 这样,整条链不需要扩大规模,就能保存所有数据。 +在大多数情况下,不是在链上储存所有数据,而是在链上存储数据对应位置的哈希值。 这样,整条链不需要扩大规模,就能保存所有数据。 基于合约持久性的平台: -- [Filecoin](https://docs.filecoin.io/about-filecoin/what-is-filecoin/) -- [Skynet](https://siasky.net/) +- [Filecoin](https://docs.filecoin.io/basics/what-is-filecoin) +- [Skynet](https://sia.tech/) - [Storj](https://storj.io/) - [Züs](https://zus.network/) - [Crust Network](https://crust.network) @@ -54,22 +54,22 @@ lang: zh 星际文件系统是一个储存和访问文件、网站、应用程序和数据的分布式系统。 虽然它没有内置激励计划,但可以与上述任何基于合同的激励解决方案一起使用,以获得更长期的持久性。 另一个将数据持久存储在星际文件系统上的办法是与某项固定服务(表示将你的数据固定在某处)一起使用。 你甚至可以运行自己的星际文件系统节点来为该网络做出贡献,从而将你和/或他人的数据免费持久地存储在星际文件系统上。 -- [星际文件系统](https://docs.ipfs.io/concepts/what-is-ipfs/) -- [Pinata](https://www.pinata.cloud/)_(星际文件系统固定服务)_ -- [web3.storage](https://web3.storage/)_(星际文件系统/菲乐币固定服务)_ -- [Infura](https://infura.io/product/ipfs)_(星际文件系统固定服务)_ -- [IPFS Scan](https://ipfs-scan.io) _(星际文件系统固定浏览器)_ -- [4EVERLAND](https://www.4everland.org/)_(星际文件系统固定服务)_ -- [Filebase](https://filebase.com)_(星际文件系统固定服务)_ -- [Spheron Network](https://spheron.network/)_(星际文件系统/菲乐币固定服务)_ +- [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/) +- [Pinata](https://www.pinata.cloud/) _(IPFS 固定服务)_ +- [web3.storage](https://web3.storage/) _(IPFS/Filecoin 固定服务)_ +- [Infura](https://infura.io/product/ipfs) _(IPFS 固定服务)_ +- [IPFS Scan](https://ipfs-scan.io) _(IPFS 固定浏览器)_ +- [4EVERLAND](https://www.4everland.org/)_(IPFS 固定服务)_ +- [Filebase](https://filebase.com) _(IPFS 固定服务)_ +- [Spheron Network](https://spheron.network/) _(IPFS/Filecoin 固定服务)_ -SWARM 是一种去中心化的数据存储和分发技术,具有存储激励系统和存储空间租金价格预言机。 +SWARM 是一种去中心化的数据存储和分发技术,具有存储激励系统和存储租金价格预言机。 -## 数据留存 {#data-retention} +## 数据保留 {#data-retention} 为了保留数据,系统必须有某种机制,确保数据得到保留。 -### 质疑机制 {#challenge-mechanism} +### 挑战机制 {#challenge-mechanism} 一种最常见的确保保留数据的方法是使用某种类型的密码质询,这种加密质询向节点发出,确保它们仍然持有数据。 一种简单的方法是查看 Arweave 的访问证明。 他们向节点发出质询,查看它们是否在最近的区块和过去的随机区块中都具有数据。 如果节点无法给出答案,则会受到惩罚。 @@ -92,13 +92,13 @@ SWARM 是一种去中心化的数据存储和分发技术,具有存储激励 - Arweave - Filecoin - 星际文件系统 -- 以太坊 +- 以太坊(Ethereum) - Crust Network - 4EVERLAND ### 共识 {#consensus} -这些工具大多有自己的[共识机制](/developers/docs/consensus-mechanisms/)版本,但一般都是基于[**工作量证明 (PoW)**](/developers/docs/consensus-mechanisms/pow/) 或[**权益证明 (PoS)**](/developers/docs/consensus-mechanisms/pos/)。 +这些工具大多有自己的[共识机制](/developers/docs/consensus-mechanisms/)版本,但通常都基于[**工作量证明 (PoW)**](/developers/docs/consensus-mechanisms/pow/)或[**权益证明 (PoS)**](/developers/docs/consensus-mechanisms/pos/)。 基于工作量证明的工具: @@ -107,110 +107,110 @@ SWARM 是一种去中心化的数据存储和分发技术,具有存储激励 基于权益证明的工具: -- 以太坊 +- 以太坊(Ethereum) - Filecoin - Züs - Crust Network ## 相关工具 {#related-tools} -**IPFS - _即星际文件系统,是以太坊的去中心化存储和文件引用系统。_** +**IPFS - _星际文件系统,是以太坊的去中心化存储和文件引用系统。_** - [Ipfs.io](https://ipfs.io/) - [相关文档](https://docs.ipfs.io/) - [GitHub](https://github.com/ipfs/ipfs) -**Storj DCS - _安全、私有、与 S3 兼容的去中心化云对象存储,供开发者使用。_** +**Storj DCS - _安全、私有且与 S3 兼容的去中心化云对象存储,专为开发者打造。_** - [Storj.io](https://storj.io/) - [相关文档](https://docs.storj.io/) - [GitHub](https://github.com/storj/storj) -**Skynet - _Skynet 是一条去中心化的工作量证明链,专用于去中心化网络。_** +**Sia - _利用密码学创建了一个无需信任的云存储市场,允许买卖双方直接交易。_** -- [Skynet.net](https://siasky.net/) -- [相关文档](https://siasky.net/docs/) -- [GitHub](https://github.com/SkynetLabs/) +- [Skynet.net](https://sia.tech/) +- [相关文档](https://docs.sia.tech/) +- [GitHub](https://github.com/SiaFoundation/) -**Filecoin - _Filecoin 由星际文件系统背后的同一团队打造。 它是星际文件系统概念之上的一个激励层。_** +**Filecoin - _Filecoin 由 IPFS 幕后的同一个团队创建。 它是在 IPFS 理念之上构建的激励层。_** - [Filecoin.io](https://filecoin.io/) - [相关文档](https://docs.filecoin.io/) - [GitHub](https://github.com/filecoin-project/) -**Arweave - _Arweave 是去中心化数据存储平台。_** +**Arweave - _Arweave 是一个用于存储数据的去中心化存储 (dStorage) 平台。_** - [Arweave.org](https://www.arweave.org/) - [相关文档](https://docs.arweave.org/info/) - [Arweave](https://github.com/ArweaveTeam/arweave/) -**Züs - _Züs 是一个具有分片和 blobber 的权益证明去中心化存储平台。_** +**Züs - _Züs 是一个采用权益证明、带有分片和 blobber 的去中心化存储 (dStorage) 平台。_** - [zus.network](https://zus.network/) -- [相关文档](https://0chaindocs.gitbook.io/zus-docs) +- [相关文档](https://docs.zus.network/zus-docs/) - [GitHub](https://github.com/0chain/) -**Crust Network - _Crust 是基于星际文件系统的去中心化存储平台。_** +**Crust Network - _Crust 是一个基于 IPFS 的去中心化存储 (dStorage) 平台。_** - [Crust.network](https://crust.network) - [相关文档](https://wiki.crust.network) - [GitHub](https://github.com/crustio) -**Swarm - _以太坊 Web3 堆栈的分布式存储平台和内容分发服务。_** +**Swarm - _一个为以太坊 Web3 堆栈服务的分布式存储平台和内容分发服务。_** - [EthSwarm.org](https://www.ethswarm.org/) -- [相关文档](https://docs.ethswarm.org/docs/) +- [相关文档](https://docs.ethswarm.org/) - [GitHub](https://github.com/ethersphere/) -**OrbitDB - _基于星际文件系统的去中心化点对点数据库。_** +**OrbitDB - _一个基于 IPFS 的去中心化点对点数据库。_** - [OrbitDB.org](https://orbitdb.org/) - [相关文档](https://github.com/orbitdb/field-manual/) - [GitHub](https://github.com/orbitdb/orbit-db/) -**Aleph.im - _去中心化云项目(数据库、文件存储、计算和去中心化身份)。 独特的链下和链上点对点技术融合。 星际文件系统以及多链兼容性。_** +**Aleph.im - _去中心化云项目(数据库、文件存储、计算和 DID)。 独特的链下和链上点对点技术融合。 兼容 IPFS 和多链。_** -- [Aleph.im](https://aleph.im/) -- [相关文档](https://aleph.im/#/developers/) +- [Aleph.im](https://aleph.cloud/) +- [相关文档](https://docs.aleph.cloud/) - [GitHub](https://github.com/aleph-im/) -**Ceramic - _用户控制的星际文件系统数据库存储,用于数据丰富和吸引人的应用程序。_** +**Ceramic - _用于构建数据丰富、引人入胜的应用程序的用户控制型 IPFS 数据库存储。_** - [Ceramic.network](https://ceramic.network/) -- [相关文档](https://developers.ceramic.network/learn/welcome/) +- [相关文档](https://developers.ceramic.network/) - [GitHub](https://github.com/ceramicnetwork/js-ceramic/) -**Filebase - _ S3 兼容的去中心化存储和地理冗余星际文件系统固定服务。 所有通过 Filebase 上传到星际文件系统的文件都会自动被固定到 Filebase 基础设施,在全球复制 3 份。_** +**Filebase - _与 S3 兼容的去中心化存储和异地冗余 IPFS 固定服务。 所有通过 Filebase 上传到 IPFS 的文件都会自动固定到 Filebase 基础设施,并在全球进行 3 倍复制。_** - [Filebase.com](https://filebase.com/) - [相关文档](https://docs.filebase.com/) - [GitHub](https://github.com/filebase) -**4EVERLAND - _Web 3.0 云计算平台,集存储、计算和网络核心能力于一体,兼容 S3,在星际文件系统和 Arweave 等去中心化存储网络上提供同步数据存储。_** +**4EVERLAND - _一个集成了存储、计算和网络核心能力的 Web3.0 云计算平台,兼容 S3,并可在 IPFS 和 Arweave 等去中心化存储网络上提供同步数据存储。_** - [4everland.org](https://www.4everland.org/) - [相关文档](https://docs.4everland.org/) - [GitHub](https://github.com/4everland) -**Kaleido - _一个具有点击按钮星际文件系统节点的区块链即服务平台_** +**Kaleido - _一个提供一键式 IPFS 节点的区块链即服务平台_** - [Kaleido](https://kaleido.io/) - [相关文档](https://docs.kaleido.io/kaleido-services/ipfs/) - [GitHub](https://github.com/kaleido-io) -**Spheron Network - _Spheron 是一项平台即服务 (PaaS),专为希望在去中心化基础设施上启动其应用程序并获得最佳性能的去中心化应用程序而设计。 它提供开箱即用的计算、去中心化存储、内容分发网络和虚拟主机。_** +**Spheron Network - _Spheron 是一个平台即服务 (PaaS),专为希望在具有最佳性能的去中心化基础设施上启动其应用程序的去中心化应用程序 (dApp) 而设计。 它提供开箱即用的计算、去中心化存储、CDN 和 Web 托管服务。_** - [spheron.network](https://spheron.network/) - [相关文档](https://docs.spheron.network/) - [GitHub](https://github.com/spheronFdn) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [什么是去中心化存储?](https://coinmarketcap.com/alexandria/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_ -- [打破关于去中心化存储的五种谣传](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_ +- [什么是去中心化存储?](https://coinmarketcap.com/academy/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_ +- [揭穿关于去中心化存储的五个常见迷思](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_ -_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_ +_你还知道哪些对你有帮助的社区资源? 请编辑本页面并添加进来!_ -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} - [开发框架](/developers/docs/frameworks/) From 0106d7224f74b67b07f3073a337a1df0bbeb9089 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:48 -0800 Subject: [PATCH 071/581] update(i18n): public/content/translations/zh/roadmap/pbs/index.md --- .../translations/zh/roadmap/pbs/index.md | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/public/content/translations/zh/roadmap/pbs/index.md b/public/content/translations/zh/roadmap/pbs/index.md index 7e6400213f9..2e41e670486 100644 --- a/public/content/translations/zh/roadmap/pbs/index.md +++ b/public/content/translations/zh/roadmap/pbs/index.md @@ -6,46 +6,45 @@ lang: zh # 提议者-构建者分离 {#proposer-builder-separation} -目前,以太坊验证者既构建区块,_也_广播区块。 他们将通过传播网络接收的交易打包成一个区块,然后发送到以太坊网络的对等节点。 **提议者-构建者分离 (PBS) **将这些工作分给多个验证者。 区块构建者将负责创建区块,并在每个时隙将它们提供给区块提议者。 区块提议者无法看到区块的内容,只是选择收益最高的区块,并向区块构建者支付费用,然后将区块发送给对等节点。 +目前,以太坊验证者既构建区块,也广播区块。 他们将通过传播网络接收的交易打包成一个区块,然后发送到以太坊网络的对等节点。 **提议者-构建者分离 (PBS)** 将这些任务分配给多个验证者。 区块构建者将负责创建区块,并在每个时隙将它们提供给区块提议者。 区块提议者无法看到区块的内容,只是选择收益最高的区块,并向区块构建者支付费用,然后将区块发送给对等节点。 进行这次重要升级有多项原因。 首先,它在协议级别创造了防止交易审查的机会。 其次,它防止可以更好地优化区块构建的盈利能力的机构参与者取代业余验证者。 第三,它通过推动 Danksharding 升级帮助拓展了以太坊。 -## 提议者-构建者分离和抗审查性 {#pbs-and-censorship-resistance} +## PBS 与抗审查性 {#pbs-and-censorship-resistance} 将区块构建者和区块提议者分开,大大增加了区块构建者审查交易的难度。 这是因为它可以添加相对复杂的纳入标准,确保在区块提出之前不进行任何审查。 由于区块提议者与区块构建者是不同的实体,它可以承担保护者的角色,防范区块构建者的审查。 例如,可以引入纳入清单,以确保当验证者知道交易但看到它们没有被添加到区块中时,会将其作为下一个区块中必须添加的交易。 纳入清单由区块提议者的本地内存池(其知悉的交易列表)生成,并在提出区块之前发送给对等节点。 如果纳入清单中的任何交易缺失,提议者可以拒绝该区块,在提出区块之前添加缺失的交易,或者提出该区块,然后由其他验证者在接收时拒绝它。 这一想法还有一个可能更高效的版本,要求构建者必须充分利用可用的区块空间,如果他们没有这样做,则从提议者的纳入清单中添加交易。 这一领域仍在研究阶段,纳入清单的最佳配置尚未确定。 -[加密内存池](https://www.youtube.com/watch?v=fHDjgFcha0M&list=PLpktWkixc1gUqkyc1-iE6TT0RWQTBJELe&index=3)也可以使构建者和提议者在区块广播之后才能知道他们在区块中添加了哪些交易。 +[加密内存池](https://www.youtube.com/watch?v=fHDjgFcha0M&list=PLpktWkixc1gUqkyc1-iE6TT0RWQTBJELe&index=3) 也可以使构建者和提议者在区块广播之后才能知道他们在区块中包含了哪些交易。 - + 强大的组织可以对验证者施压,让其对特定地址的交易进行审查。 选择屈服这种压力的验证者会在其交易池中检测被列入黑名单的地址,并将它们从其提议的区块中排除。 在提议者-构建者分离之后,这种情况将不可能再发生,因为区块提议者将不知道他们在区块中要广播哪些交易。 对于特定个体或应用程序,可能需要遵守审查规则,例如当他们所在地区的审查规则成为法律要求时。 在这些情况下,要在应用程序层面遵循审查要求,而协议仍然应保持无需许可和免受审查的状态。 -## 提议者-构建者分离和最大可提取价值 {#pbs-and-mev} +## PBS 和 MEV {#pbs-and-mev} -**最大可提取价值 (MEV)**是指验证者通过对交易进行对其有利的排序,使其收益最大化。 常见的例子包括在去中心化交易所进行套利交换(如提前进行大额买卖)或寻找机会清算去中心化金融头寸。 将最大可提取价值最大化需要复杂的技术知识,还需要普通验证者安装定制软件,因此机构运营商在获取最大可提取价值方面极有可能胜过个人和业余验证者。 这意味着,中心化运营商的质押回报可能更高,从而形成一种中心化力量,抑制自行质押。 +**最大可提取价值 (MEV)** 是指验证者通过对交易进行对其有利的排序,使其收益最大化。 常见例子包括在去中心化交易所进行套利交换(例如,对大额买卖进行抢跑交易)或识别清算 DeFi 头寸的机会。 将最大可提取价值最大化需要复杂的技术知识,还需要普通验证者安装定制软件,因此机构运营商在获取最大可提取价值方面极有可能胜过个人和业余验证者。 这意味着,中心化运营商的质押回报可能更高,从而形成一种中心化力量,抑制自行质押。 提议者-构建者分离通过重新配置最大可提取价值的经济原理解决了这一问题。 区块提议者无需自行搜索最大可提取价值,只需从区块构建者提供的众多区块中挑选一个即可。 区块构建者可能已经完成了复杂的最大可提取价值提取工作,但其奖励归区块提议者所有。 这意味着,即使一小部分专业的区块构建者主导了最大可提取价值的提取,但奖励由网络上的任何验证者(包括个体和家庭质押人)获得。 - + -由于复杂的最大可提取价值策略提供了更高的回报,可以激励个人使用资金池质押,而非使用自有资金质押。 将区块构建与区块提出分开,意味着提取的最大可提取价值将被分配给更多的验证者,而不是集中在可以最有效地搜索最大可提取价值的验证者。 同时,允许专门的区块构建者存在,可以减轻个人构建区块的负担,也可以防止个人为自己窃取最大可提取值,同时最大程度上增加能够验证区块的诚实性的独立个人验证者的数量。 “证明者与验证者的不对称性”是一项重要概念,是指只要有一个强大的、最大程度去中心化的验证者网络能够证明区块的诚实性,就可以接受中心化的区块生成。 去中心化只是一种手段,而不是最终目标 - 我们想要的是诚实的区块链。 - +由于复杂的最大可提取价值策略提供了更高的回报,可以激励个人使用资金池质押,而非使用自有资金质押。 将区块构建与区块提出分开,意味着提取的最大可提取价值将被分配给更多的验证者,而不是集中在可以最有效地搜索最大可提取价值的验证者。 同时,允许专门的区块构建者存在,可以减轻个人构建区块的负担,也可以防止个人为自己窃取最大可提取值,同时最大程度上增加能够验证区块的诚实性的独立个人验证者的数量。 “证明者与验证者的不对称性”是一项重要概念,是指只要有一个强大的、最大程度去中心化的验证者网络能够证明区块的诚实性,就可以接受中心化的区块生成。 去中心化只是一种手段,而不是最终目标 - 我们想要的是诚实的区块链。 -## 提议者-构建者分离和 Danksharding {#pbs-and-danksharding} +## PBS 和 Danksharding {#pbs-and-danksharding} -Danksharding 是可以让以太坊扩展到每秒处理 >100,000 笔交易并最大限度降低卷叠用户手续费的方法。 它依赖于提议者-构建者分离,因为它增加了区块构建者的工作量,要求区块构建者在不到 1 秒的时间内为高达 64 MB 的卷叠数据计算证明。 这可能需要能够为这项工作专门投入非常多的硬件的专业区块构建者。 然而,在目前的情况下,由于最大可提取价值的提取,区块构建可能会越来越集中到更先进、更强大的运营商。 提议者-构建者分离是接受这一现实的一种方式,可以防止其推动区块验证(重要部分)或质押奖励分配的中心化。 此外,还有一个重要的附带好处,那就是专业的区块构建者也愿意并能够计算 Danksharding 所需的数据证明。 +Danksharding 是可以让以太坊扩展到每秒处理超过 100,000 笔交易,并最大限度降低卷叠用户手续费的方法。 它依赖于提议者-构建者分离,因为它增加了区块构建者的工作量,要求区块构建者在不到 1 秒的时间内为高达 64 MB 的卷叠数据计算证明。 这可能需要能够为这项工作专门投入非常多的硬件的专业区块构建者。 然而,在目前的情况下,由于最大可提取价值的提取,区块构建可能会越来越集中到更先进、更强大的运营商。 提议者-构建者分离是接受这一现实的一种方式,可以防止其推动区块验证(重要部分)或质押奖励分配的中心化。 此外,还有一个重要的附带好处,那就是专业的区块构建者也愿意并能够计算 Danksharding 所需的数据证明。 ## 当前进展 {#current-progress} -现在,提议者-构建者分离正处于高级研究阶段,但是在以太坊客户端推出其原型之前,仍然有一些重要的设计问题需要解决。 目前还没有最终确定的规范。 这意味着实现提议者-构建者分离可能还需要一年甚至更长时间。 点击查看最新[研究现状](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance)。 +现在,提议者-构建者分离正处于高级研究阶段,但是在以太坊客户端推出其原型之前,仍然有一些重要的设计问题需要解决。 目前还没有最终确定的规范。 这意味着实现提议者-构建者分离可能还需要一年甚至更长时间。 查看最新的[研究现状](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance)。 -## 延伸阅读 {#further-reading} +## 扩展阅读 {#further-reading} -- [研究现状:提议者-构建者分离的抗审查性](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) -- [有利于提议者-构建者分离的收费市场设计](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725) -- [提议者-构建者分离和抗审查性](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Secondary-auctions) -- [纳入清单](https://notes.ethereum.org/@fradamt/H1ZqdtrBF) +- [研究现状:PBS 下的抗审查性](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) +- [对 PBS 友好的费用市场设计](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725) +- [PBS 与抗审查性](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Secondary-auctions) +- [包含列表](https://notes.ethereum.org/@fradamt/H1ZqdtrBF) From e1a7ba70ef42fa5ef691a4cca14f06991dbdfe71 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:51 -0800 Subject: [PATCH 072/581] update(i18n): public/content/translations/zh/wrapped-eth/index.md --- .../translations/zh/wrapped-eth/index.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 public/content/translations/zh/wrapped-eth/index.md diff --git a/public/content/translations/zh/wrapped-eth/index.md b/public/content/translations/zh/wrapped-eth/index.md new file mode 100644 index 00000000000..bc314f4ab36 --- /dev/null +++ b/public/content/translations/zh/wrapped-eth/index.md @@ -0,0 +1,70 @@ +--- +title: 什么是包装以太币 (WETH) +description: 包装以太币 (WETH) 简介 - 一种兼容 ERC20 的包装以太币 (ETH) 。 +lang: zh +--- + +# 包装以太币 (WETH) {#intro-to-weth} + + + +
使用 [WrapETH.com](https://www.wrapeth.com/),连接你的钱包,在任意链上封装或解封装以太币
+
+ +以太币 (ETH) 是以太坊的主要货币。 它被用于多种目的,比如作为货币进行质押,以及支付计算的燃料费。 **包装以太币实际上是以太币的升级形式,具有许多应用程序和 [ERC-20 代币](/glossary/#erc-20)所需的一些附加功能**,这些也是以太坊上的另一种数字资产。 为了使用这些代币,以太币必须遵循与它们相同的规则,也称为 ERC-20 标准。 + +为了弥补这个缺口,包装以太币 (WETH) 诞生了。 **包装以太币是一个智能合约,你可以向其中存入任意数量的以太币,并收到铸造的对应数量的包装以太币**,后者符合 ERC-20 代币标准。 包装以太币是以太币的一种表示,允许你以 ERC-20 代币(而非原生资产以太币)的形式与以太币进行交互。 你仍需要使用原生以太币来支付燃气费,因此在将它们存入智能合约时,确保留下一些。 + +你可以使用包装以太币智能合约将包装以太币转换为以太币。 你可以通过包装以太币智能合约赎回任意数量的包装以太币,并将收到对应数量的以太币。 然后,存入的包装以太币会被销毁并移出包装以太币的流通量。 + +**大约有 3% 的流通以太币被锁定在包装以太币代币合约中**,使其成为最常用的[智能合约](/glossary/#smart-contract)之一。 在用户与去中心化金融 (DeFi) 应用程序交互时,包装以太币尤为重要。 + +## 为什么需要按 ERC-20 标准包装以太币? {#why-do-we-need-to-wrap-eth} + +[ERC-20](/developers/docs/standards/tokens/erc-20/) 定义了可转移令牌的标准接口,因此任何人都可以创建代币,与以太坊生态系统中使用此标准的应用程序和代币进行无缝交互。 由于**以太币早于 ERC-20 标准出现**,因此不符合该规范。 这意味着**你不能轻易地**将以太币兑换成其他 ERC-20 代币,或**在使用 ERC-20 标准的应用程序中使用以太币**。 包装以太币使你有机会进行以下操作: + +- **将以太币兑换为 ERC-20 代币**:你无法直接将以太币兑换为其他 ERC-20 代币。 包装以太币是符合 ERC-20 同质化代币标准的以太币表示,并且可以与其他 ERC-20 代币兑换。 + +- **在去中心化应用程序中使用以太币**:由于以太币与 ERC-20 不兼容,开发者需要在去中心化应用程序中分别创建单独的接口(一个用于以太币,另一个用于 ERC-20 代币)。 包装以太币消除了这一障碍,使开发者能够在同一个去中心化应用程序中处理以太币和其他代币。 许多去中心化金融应用程序使用该标准,并创建用于兑换这些代币的市场。 + +## 包装以太币 (WETH) 对比以太币 (ETH):有哪些不同? {#weth-vs-eth-differences} + +| | **以太币 (ETH)** | **包装以太币 (WETH)** | +| --- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | +| 供应 | 以太币的供应由以太坊协议管理。 以太币的[发行](/roadmap/merge/issuance)由以太坊验证者在处理交易和创造区块时处理。 | 包装以太币是一种 ERC-20 代币,其供应由智能合约管理。 合约会在收到用户存入的以太币时发行新的包装以太币单位,或在用户希望用包装以太币赎回以太币时销毁包装以太币。 | +| 所有权 | 所有权由以太坊协议通过你的帐户余额进行管理。 | 包装以太币的所有权由包装以太币代币智能合约进行管理,并由以太坊协议提供安全保护。 | +| 燃料 | 以太币 (ETH) 是可接受的支付单位,用于支付以太坊网络上的计算。 燃料费以 Gwei(一种以太币单位)计价。 | 包装以太币代币在原生状态下不支持用于支付燃料。 | + +## 常见问题{#faq} + + + +你支付了燃料费,以使用包装以太币合约包装或解包以太币。 + + + + + +包装以太币通常被认为是安全的,因为它是基于一个简单且经过实战考验的智能合约。 包装以太币合约也得到了正式验证,符合以太坊智能合约的最高安全标准。 + + + + + +除了[包装以太币的规范实现](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2)外,还有一些其他变体。 这些变体可能是应用程序开发者创建的自定义代币,或是在其他区块链上发行的版本,并且可能会有不同的行为或不同的安全属性。 **请务必仔细检查代币信息,以了解你正在与哪种包装以太币实现进行交互。** + + + + + +- [以太坊主网](https://etherscan.io/token/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2) +- [Arbitrum](https://arbiscan.io/token/0x82af49447d8a07e3bd95bd0d56f35241523fbab1) +- [Optimism](https://optimistic.etherscan.io/token/0x4200000000000000000000000000000000000006) + + + +## 扩展阅读{#further-reading} + +- [WTF 是包装以太币吗?](https://weth.tkn.eth.limo/) +- [在 Blockscout 上的 WETH 代币信息](https://eth.blockscout.com/token/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2) +- [包装以太币的形式化验证](https://zellic.io/blog/formal-verification-weth) From 72d535c2759de183bfef81722c35a40bd36ecc31 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:53 -0800 Subject: [PATCH 073/581] update(i18n): public/content/translations/zh/staking/dvt/index.md --- .../translations/zh/staking/dvt/index.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/public/content/translations/zh/staking/dvt/index.md b/public/content/translations/zh/staking/dvt/index.md index 289163edbed..cbdaf566048 100644 --- a/public/content/translations/zh/staking/dvt/index.md +++ b/public/content/translations/zh/staking/dvt/index.md @@ -8,19 +8,19 @@ lang: zh 分布式验证者技术 (DVT) 是一种保障验证者安全的方法,它将密钥管理和签名责任分摊给多个参与方,从而减少单点故障并增强验证者的弹性。 -这项技术通过将用于保护验证者安全的**私钥拆分**并将其分布到组成“集群”的**多台计算机**上来实现这一点。 这样做的好处是攻击者取得密钥的难度将非常大,因为密钥并没有完整地存储在任意一台机器上。 该技术还允许某些节点离线,因为每个集群中的一部分计算机就可以完成必要的签名操作。 这就减少了网络中的单点故障并让整个验证者组更加稳定。 +它通过将用于保护验证者的**私钥拆分**到多台计算机来实现这一点,这些计算机组织成一个“集群”。 这样做的好处是攻击者取得密钥的难度将非常大,因为密钥并没有完整地存储在任意一台机器上。 该技术还允许某些节点离线,因为每个集群中的一部分计算机就可以完成必要的签名操作。 这就减少了网络中的单点故障并让整个验证者组更加稳定。 -![示意图,展示单个验证者密钥如何拆分成密钥分片并分布到多个具有不同组件的节点。](./dvt-cluster.png) +![一张图表,显示单个验证者密钥如何被拆分成密钥份额,并分发给具有不同组件的多个节点。](./dvt-cluster.png) ## 为什么需要分布式验证者技术? {#why-do-we-need-dvt} -### 安全性 {#security} +### 安全 {#security} 验证者生成两个公私密钥对:验证者密钥用于参与共识,提款密钥用来获取资金。 虽然验证者可以将提款密钥存储在冷存储中以确保安全,但验证者私钥必须 24 小时在线。 如果验证者私钥泄漏,攻击者便可控制该验证者,可能致使质押人的以太币受到罚没或损失。 分布式验证者技术有助于降低这种风险。 具体方式如下: 使用分布式验证者技术,质押人可以参与质押,同时将验证者私钥保存在冷存储中。 这是通过对完整的原始验证者密钥进行加密,然后再拆分成多个密钥分片实现的。 密钥分片是在线的并分布到多个节点,因此实现了验证者的分布式操作。 之所以能这样做,是因为以太坊验证者使用了累加型 BLS 签名,这意味着完整的密钥可以通过将其各个组成部分合并来重构。 这样,质押人就能保证完整的原始“主”验证者密钥在线下安全。 -### 消除单点故障 {#no-single-point-of-failure} +### 无单点故障 {#no-single-point-of-failure} 如果将一个验证者拆分到多个运营商和多台机器,就算个别硬件和软件出现故障,验证者也不会离线。 也可以通过在集群中的所有节点上使用不同的硬件和软件配置来降低故障风险。 单节点验证者配置并不具备这种弹性,这种弹性源自分布式验证者技术层。 @@ -32,33 +32,33 @@ lang: zh 如果没有分布式验证者技术,质押服务提供商就更加容易地让其所有验证者仅支持一到两种客户端配置,这会加大客户端漏洞的影响。 可使用分布式验证者技术将风险分散到多种客户端配置和不同的硬件,通过多样化实现弹性。 -**分布式验证者技术让以太坊具有以下优点:** +**DVT 为以太坊带来以下好处:** 1. 以太坊权益证明共识的**去中心化** -2. 网络**活力**有保障 -3. 实现验证者的**容错能力** -4. 验证者操作**信任最小化** -5. **最大限度降低了罚没**和停机风险 -6. **提升了多样性**(客户端、数据中心、位置、监管等) -7. 验证者密钥管理**安全性增强** +2. 确保网络的**活性** +3. 创建验证者**容错** +4. **信任最小化**的验证者操作 +5. **最大限度地降低**罚没和停机风险 +6. **提高多样性**(客户端、数据中心、位置、法规等) +7. **增强**验证者密钥管理的**安全性** ## 分布式验证者技术原理 {#how-does-dvt-work} 分布式验证者技术解决方案包括以下部分: -- **[Shamir 秘钥分存](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - 验证者使用 [BLS 密钥](https://en.wikipedia.org/wiki/BLS_digital_signature)。 各个 BLS “密钥分片”(“密钥分片”)可以合并成单个聚合密钥(签名)。 在分布式验证者技术中,验证者的私钥是集群中每个运营者的合并 BLS 签名。 -- **[阈值签名方案](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** - 确定履行签名职责所需的单个密钥分片的数量,例如,4 个密钥分片中的 3 个。 -- **[分布式密钥生成 (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** - 一种加密过程,生成密钥分片并用于将已有或新验证者密钥分片分布到集群中的节点。 +- **[Shamir 秘密共享](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - 验证者使用 [BLS 密钥](https://en.wikipedia.org/wiki/BLS_digital_signature)。 各个 BLS “密钥分片”(“密钥分片”)可以合并成单个聚合密钥(签名)。 在分布式验证者技术中,验证者的私钥是集群中每个运营者的合并 BLS 签名。 +- **[门限签名方案](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** - 确定履行签名职责所需的单个密钥份额数量,例如 4 个中的 3 个。 +- **[分布式密钥生成 (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** - 一种加密过程,可生成密钥份额,并用于将现有或新验证者密钥的份额分发到集群中的节点。 - **[多方计算 (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** - 完整的验证者密钥是使用多方计算秘密生成的。 任何一个运营者都不知道完整的密钥—他们只知道自己的那一部分(即他们的“分片”)。 - **共识协议** - 共识协议选择一个节点作为区块提议者。 提议者与集群中的其他节点共享该区块,这些节点将其密钥分片添加到聚合签名中。 当聚合了足够的密钥分片后,该区块便在以太坊上提出。 分布式验证者具有内置容错能力,即使个别节点离线也能继续运行。 也就是说,即使集群中的某些节点最终变成恶意节点或懒惰节点,这个集群依然具有弹性。 -## 分布式验证者技术使用案例 {#dvt-use-cases} +## DVT 用例 {#dvt-use-cases} 分布式验证者技术对更广泛的质押行业具有重大影响: -### 独立质押人 {#solo-stakers} +### 独立质押者 {#solo-stakers} 分布式验证者技术支持非托管质押,它允许用户将自己的验证者密钥分布在多个远程节点上并在线下保存完整密钥。 这也意味着家庭质押人未必需要在硬件上支出费用,而且将密钥分片分布存放能帮助他们加强对潜在黑客攻击的抵御。 @@ -74,18 +74,18 @@ lang: zh 尽管一直以来,我们都在通过将质押分布给多个运营者来努力分散风险,但每个运营商仍单独管理着大量质押。 依赖单一运营者存在巨大风险,因为它们可能表现不佳、遭遇停机、受到攻击或者有恶意行为。 -利用分布式验证者技术,对运营者的信任会显著降低。 **池可以让运营者持有质押,而无需保管验证者密钥**(因为只会用到密钥分片)。 这项技术还允许被管理的质押在更多运营者之间分布(例如,分布式验证者技术可让 1000 个验证者由多个运营者共同运行,而不是让单个运营者管理它们)。 不同的运营者配置将确保在一个运营者停止运行,其余运营者仍可进行证明。 这提高了冗余和多样性,从而提升了性能和弹性,同时最大限度地提高了回报。 +利用分布式验证者技术,对运营者的信任会显著降低。 **质押池可以让运营商持有质押,而无需托管验证者密钥**(因为只使用密钥份额)。 这项技术还允许被管理的质押在更多运营者之间分布(例如,分布式验证者技术可让 1000 个验证者由多个运营者共同运行,而不是让单个运营者管理它们)。 不同的运营者配置将确保在一个运营者停止运行,其余运营者仍可进行证明。 这提高了冗余和多样性,从而提升了性能和弹性,同时最大限度地提高了回报。 最大限度降低单一运营者信任的另一个优点是,质押池可以允许更加开放且无需许可的运营者参与。 这样,服务商可以通过使用精选且无需许可的运营者(例如,将家庭质押人或更多小型质押人者与大型质押人配对)来降低其风险,并支持以太坊的去中心化。 -## 使用分布式验证者技术的潜在弊端 {#potential-drawbacks-of-using-dvt} +## 使用 DVT 的潜在缺点 {#potential-drawbacks-of-using-dvt} -- **额外组件**- - 引入一个分布式验证者技术节点就会增加一个可能存在故障或漏洞的部分。 要缓解这一问题,一种方法是争取实现多个分布式验证者技术节点,也就是多个分布式验证者技术客户端(类似于共识层和执行层有多个客户端的情况)。 -- **运营成本** - 由于分布式验证者技术将验证者分布在多个参与方之间,因此需要更多的节点进行操作,而不是只有一个节点,这就带来了运营成本的增加。 -- **可能会增加延迟** - 因为分布式验证者技术利用共识协议在多个运行验证者的节点之间达成共识,这可能会增加延迟。 +- **附加组件** - 引入 DVT 节点会增加另一个可能出现故障或易受攻击的部分。 要缓解这一问题,一种方法是争取实现多个分布式验证者技术节点,也就是多个分布式验证者技术客户端(类似于共识层和执行层有多个客户端的情况)。 +- **运营成本** - 由于 DVT 将验证者分布在多个参与方之间,因此需要更多的节点进行操作,而不仅仅是单个节点,这会增加运营成本。 +- **潜在的延迟增加** - 由于 DVT 利用共识协议在操作验证者的多个节点之间达成共识,因此可能会引入更高的延迟。 -## 延伸阅读 {#further-reading} +## 扩展阅读 {#further-reading} - [以太坊分布式验证者规范(高级)](https://github.com/ethereum/distributed-validator-specs) - [以太坊分布式验证者技术规范](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec) -- [Shamir 密钥分存演示应用](https://iancoleman.io/shamir/) +- [Shamir 秘密共享演示应用](https://iancoleman.io/shamir/) From aab401a341a4820bacc57e2cfaa8aa491a348e92 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:55 -0800 Subject: [PATCH 074/581] update(i18n): src/intl/zh/page-upgrades.json From 93cd92c67bde4ac1a67be47b0a909848688fb2c3 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:10:59 -0800 Subject: [PATCH 075/581] update(i18n): public/content/translations/zh/defi/index.md --- public/content/translations/zh/defi/index.md | 93 ++++++++++---------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/public/content/translations/zh/defi/index.md b/public/content/translations/zh/defi/index.md index 679662b44bf..2e315c6955f 100644 --- a/public/content/translations/zh/defi/index.md +++ b/public/content/translations/zh/defi/index.md @@ -23,7 +23,7 @@ summaryPoint3: 基于开源技术,任何人都可以来编程。 -## 去中心化金融与传统金融 {#defi-vs-tradfi} +## DeFi 与传统金融 {#defi-vs-tradfi} 了解去中心化金融潜力的最佳方法是了解目前存在的问题。 @@ -36,9 +36,9 @@ summaryPoint3: 基于开源技术,任何人都可以来编程。 - 由于内部的人工流程,资金转移可能需要几天时间。 - 金融服务存在溢价,因为中介机构需要分成。 -### 对比 {#defi-comparison} +### 比较 {#defi-comparison} -| 去中心化金融 | 传统金融 | +| 去中心化金融 (DeFi) | 传统金融 | | --------------------------------- | ------------------------------------ | | 你持有你的钱。 | 资金由机构持有。 | | 你可以控制自己的资金流向和使用方式。 | 你必须相信机构不会出现资金管理不善问题,比如不会将钱借给高风险借款人。 | @@ -56,17 +56,17 @@ summaryPoint3: 基于开源技术,任何人都可以来编程。 从某种程度来讲,比特币是第一款去中心化金融应用程序。 比特币让你真正拥有和掌控价值,并可将其发送到世界任何地方。 为实现这一点,它提供了一种方式,让众多互不信任的人在无需可信赖中介的情况下,就帐户的账本达成一致。 比特币向所有人公开,任何人都无权更改其规则。 比特币的规则(例如稀缺性和开放性),都写入了技术中。 与传统金融不同:在传统金融中,政府可以印钞使你的存款贬值,而机构则可以关闭市场。 -以太坊便以此为基础。 就像比特币一样,规则不会因你而改变,而且每个人都可以得到。 使用[智能合约](/glossary/#smart-contract)技术还可以让这种数字货币可编程,使其功能不仅仅限于储蓄和交易。 +以太坊便以此为基础。 就像比特币一样,规则不会因你而改变,而且每个人都可以得到。 但它也使得这种数字货币可编程,通过使用[智能合约](/glossary/#smart-contract),你可以超越储存和发送价值的范畴。 ## 可编程货币 {#programmable-money} -这听起来很奇怪……“我为什么会想对钱进行编程”? 然而,这只是以太坊代币的一个默认功能。 任何人都可以对逻辑编程,以生成支付。 这样,你就可以将比特币的控制权和安全性与传统金融机构提供的服务相结合。 然后,你就可以用加密货币做一些比特币做不到的事情,比如借贷、预约付款、投资指数基金等等。 +这听起来很奇怪…… “我为什么要对我的钱进行编程”? 然而,这只是以太坊代币的一个默认功能。 任何人都可以对逻辑编程,以生成支付。 这样,你就可以将比特币的控制权和安全性与传统金融机构提供的服务相结合。 然后,你就可以用加密货币做一些比特币做不到的事情,比如借贷、预约付款、投资指数基金等等。 - +
如果你不熟悉以太坊,请尝试我们推荐的去中心化金融应用程序。
探索去中心化金融应用程序 @@ -78,15 +78,15 @@ summaryPoint3: 基于开源技术,任何人都可以来编程。 大多数金融服务都有去中心化的替代方案。 但以太坊也为打造全新的金融产品开辟了机会。 这个清单还在不断增长。 -- [向世界各地汇款](#send-money) +- [向全球汇款](#send-money) - [在全球范围内流转资金](#stream-money) - [获取稳定货币](#stablecoins) - [抵押借款](#lending) - [无抵押借款](#flash-loans) -- [开始加密货币存款](#saving) +- [开始加密货币储蓄](#saving) - [交易代币](#swaps) - [扩充你的投资组合](#investing) -- [为你的想法提供资金](#crowdfunding) +- [为你的想法募资](#crowdfunding) - [购买保险](#insurance) - [管理你的投资组合](#aggregators) @@ -94,17 +94,17 @@ summaryPoint3: 基于开源技术,任何人都可以来编程。 ### 向世界各地快速汇款 {#send-money} -作为一个区块链,以太坊设计用于让用户在全球范围内安全地发送交易。 与比特币一样,以太坊使得向世界各地发送资金就像发送电子邮件一样容易。 只需从钱包中输入收款人的[以太坊域名服务名称](/glossary/#ens)(如 bob.eth)或他们的帐户地址,你的付款(通常)将在几分钟内直接到达对方帐户。 要发送或接收付款,你将需要一个[钱包](/wallets/)。 +作为一个区块链,以太坊设计用于让用户在全球范围内安全地发送交易。 与比特币一样,以太坊使得向世界各地发送资金就像发送电子邮件一样容易。 只需在你的钱包中输入收款人的 [ENS 名称](/glossary/#ens)(如 bob.eth)或其账户地址,你的付款(通常)将在几分钟内直接到账。 要发送或接收付款,你将需要一个[钱包](/wallets/)。 - 查看支付 dapp + 查看支付去中心化应用程序 #### 在全球范围内流转资金... {#stream-money} 你也可以通过以太坊汇款。 这可以让你秒速支付某人的工资,让他们可以在需要时获得资金。 或者立刻租用一些物品,如储物柜或电动滑板车。 -而且,如果你因为以太币的价值波动过大而不想发送或流式传输[以太币](/glossary/#ether),以太坊上还有其他可供选择的货币:[稳定币](/glossary/#stablecoin)。 +而且,如果你因为 [ETH](/glossary/#ether) 的价值波动过大而不想发送或流式传输它,以太坊上还有其他可供选择的货币:[稳定币](/glossary/#stablecoin)。 @@ -128,24 +128,24 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 - 基于资金池,贷款人向借款人可以借贷的资金池提供资金(流动性)。 - 查看借款 dapp + 查看借款去中心化应用程序 选择去中心化贷款人具有许多优势... -#### 隐私借贷 {#borrowing-privacy} +#### 私密借款 {#borrowing-privacy} 今天,贷款和借钱都围绕着相关个人进行。 在放贷前,银行需要了解你是否有能力偿还贷款。 -去中心化借贷无需任何一方表明自己的身份即可进行。 但是,借款人必须提供抵押品,如果他们没有偿还贷款,贷款人将自动获得抵押品。 有的贷款人甚至接受[非同质化代币](/glossary/#nft)作为抵押品。 非同质化代币是指绘画等独特资产。 [关于非同质化代币的更多信息](/nft/) +去中心化借贷无需任何一方表明自己的身份即可进行。 但是,借款人必须提供抵押品,如果他们没有偿还贷款,贷款人将自动获得抵押品。 有些贷款人甚至接受 [NFT](/glossary/#nft) 作为抵押品。 非同质化代币是指绘画等独特资产。 [关于 NFT 的更多信息](/nft/) 这允许你在不进行征信调查或透露私人信息的情况下借钱。 -#### 获得全球资金 {#access-global-funds} +#### 获取全球资金 {#access-global-funds} 当你选择去中心化贷款人时,可以使用来自全球各地的存款,而不仅仅是选定银行或机构保管的资金。 这使人们更容易获得贷款,并提高利率。 -#### 税收优惠 {#tax-efficiencies} +#### 税收效率 {#tax-efficiencies} 借贷可以让你获得所需资金,而无需出售你的以太币(该行为需要征税)。 然而,你可以使用以太币作为抵押品,借入稳定币。 这不仅为你提供所需的现金流,你还可以继续持有自己的以太币。 当你需要现金时,稳定币是更好的代币,因为它们不会像以太币一样波动。 [关于稳定币的更多信息](#stablecoins) @@ -178,19 +178,19 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 -### 开始使用加密货币存款 {#saving} +### 开始使用加密货币储蓄 {#saving} -#### 借款 {#lending} +#### 出借 {#lending} 你可以通过借出加密货币来赚取利息,并看到资金的实时增长。 现在的利率比当地银行可能高出许多(如果有幸能够使用当地的银行系统)。 下面是一个示例: -- 你借出 100 Dai [稳定币](/stablecoins/),借给类似 Aave 的产品。 +- 你将 100 Dai(一种[稳定币](/stablecoins/))出借给像 Aave 这样的产品。 - 你会收到 100 个 Aave Dai (aDai),代表你已借出的 Dai。 -- 你的 aDai 将根据利率增加,你可以看到钱包里的余额在增长。 根据[年利率](/glossary/#apr),你的钱包余额在几天甚至几小时后会显示为 100.1234 这样的数字。 +- 你的 aDai 将根据利率增加,你可以看到钱包里的余额在增长。 取决于 [APR](/glossary/#apr),几天甚至几小时后,你的钱包余额就会显示为 100.1234 之类的数字! - 你可以随时提取与 aDai 余额等额的普通 Dai。 - 查看借款 dapp + 查看出借去中心化应用程序 #### 无损彩票 {#no-loss-lotteries} @@ -218,7 +218,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 例如,如果你想使用无损彩票 PoolTogether(如上所述),则需要类似 Dai 或 USDC 的代币。 DEX 允许你将以太币换成这些代币,并在完成交易后再换回来。 - 查看代币兑换 + 查看代币交易所 @@ -230,7 +230,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 使用中心化交易所时,你必须在交易前存入资产,并相信交易所会妥善处理这些资产。 当你存入资产时,它们会面临风险,因为中心化交易所对黑客来说是诱人目标。 - 查看更多交易 dapp + 查看交易去中心化应用程序 @@ -239,7 +239,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 以太坊上有一些基金管理产品,它们会尝试根据你选择的策略为你的投资组合增值。 自动完成而且对每个人都开放,没有管理人员从利润中抽成。 -一个很好的示例是[去中心化金融指数基金](https://defipulse.com/blog/defi-pulse-index/)。 这是一支自动再平衡基金,可确保你的投资组合总是包含市值最高的去中心化金融代币。 你无需管理任何细节,并且可以随时从基金中提款。 +一个很好的例子是 [DeFi Pulse Index 基金 (DPI)](https://defipulse.com/blog/defi-pulse-index/)。 这是一支自动再平衡基金,可确保你的投资组合总是包含市值最高的去中心化金融代币。 你无需管理任何细节,并且可以随时从基金中提款。 查看投资去中心化应用程序 @@ -247,7 +247,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 -### 为你的想法提供资金 {#crowdfunding} +### 为你的想法募资 {#crowdfunding} 以太坊是一个理想的众筹平台: @@ -256,10 +256,10 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 - 募捐者可以设置自动退款,例如,如果有未达到特定的最后期限和最低金额,就可以自动退款。 - 查看更多众筹去中心化应用程序 + 查看众筹去中心化应用程序 -#### 二次方融资 {#quadratic-funding} +#### 二次方募资 {#quadratic-funding} 以太坊是开源软件,到目前为止,很多工作都由社区资助。 这催生了一种有趣的新型募资模式:二次方融资。 这有可能改进我们在未来为各种公共产品募资的方式。 @@ -273,7 +273,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 这意味着获得 100 笔 1 美元捐款的项目 A 最终可能比获得 1 笔 1 万美元捐款的项目 B 获得更多资金(取决于匹配池的大小)。 - 关于二次方融资的更多信息 + 关于二次方募资的更多信息 @@ -282,7 +282,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 去中心化保险旨在使保险更便宜、支付速度更快且更加透明。 随着自动化程度的提高,保险的价格更加低廉,赔付的速度也快了很多。 用来决定你的索赔的数据完全透明。 -就像任何软件一样,以太坊产品也可能出现漏洞。 因此,目前该领域中的许多保险产品都致力于保护用户免受资金损失。 然而,一些项目开始构建全面覆盖我们生活中可能出现的各种情况的保险方案。 Etherisc 的作物保护就是一个很好的例子,其目的是[保护肯尼亚的小农户对抗干旱和洪水侵袭](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc)。 去中心化保险可以为那些经常被传统保险拒之门外的农民提供更便宜的保险。 +就像任何软件一样,以太坊产品可能出现漏洞。 因此,目前该领域中的许多保险产品都致力于保护用户免受资金损失。 然而,一些项目开始构建全面覆盖我们生活中可能出现的各种情况的保险方案。 一个很好的例子是 Etherisc 的农作物保险,旨在[保护肯尼亚的小农户免受干旱和洪水的影响](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc)。 去中心化保险可以为那些经常被传统保险拒之门外的农民提供更便宜的保险。 查看保险去中心化应用程序 @@ -290,7 +290,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 -### 聚集者和投资组合管理 {#aggregators} +### 聚合器和投资组合经理 {#aggregators} 拥有了这么多种服务,你需要一种方法来跟踪跟踪所有投资、贷款和交易。 有许多产品可以让你集中协调所有去中心化金融活动。 这就是去中心化金融开放架构的魅力所在。 团队可以创建界面,你不仅可以看到各个产品中的余额,也可以使用其功能。 当你探索更多的去中心化金融时,可能会发现这个很有用。 @@ -312,7 +312,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 这确实意味着,目前需要信任以太坊社区中能够读取代码的技术员。 基于开源的社区有助于控制开发者,但是随着时间的推移,这种需求将逐渐减少,因为智能合约变得更易于阅读。并且开发了其他方法来证明代码的可信赖性。 -## 以太坊与去中心化金融 {#ethereum-and-defi} +## 以太坊和 DeFi {#ethereum-and-defi} 以太坊为去中心化金融提供了良好基础,原因如下: @@ -324,13 +324,13 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 你可以把去中心化金融看成分层结构: 1. 区块链 - 以太坊包含交易历史和帐户状态。 -2. 资产 - [以太币](/what-is-ether/)和其他代币。 -3. 协议 — 提供功能的[智能合约](/glossary/#smart-contract),例如,一项提供去中心化资产借贷的服务。 -4. [应用程序](/apps/) - 我们用来管理和访问协议的产品。 +2. 资产 – [ETH](/what-is-ether/) 和其他代币(货币)。 +3. 协议——提供功能的[智能合约](/glossary/#smart-contract),例如允许去中心化资产出借的服务。 +4. [应用程序](/apps/) – 我们用来管理和访问协议的产品。 -注意:许多去中心化金融使用 [ERC-20 标准](/glossary/#erc-20)。 去中心化金融 (DeFi) 中的应用程序使用一种包装的以太币,称为包装以太币 (WETH)。 [了解更多关于包装以太币的信息](/wrapped-eth)。 +注意:许多 DeFi 都使用 [ERC-20 标准](/glossary/#erc-20)。 去中心化金融 (DeFi) 中的应用程序使用一种包装的以太币,称为包装以太币 (WETH)。 [了解更多关于封装以太币的信息](/wrapped-eth)。 -## 构建去中心化金融 {#build-defi} +## 构建 DeFi {#build-defi} 去中心化金融是一场开源行动。 去中心化金融协议和应用都是开放的,你可以自行检查、分叉和创新。 由于这个分层堆栈(他们都共享相同的基础区块链和资产),协议可以混合和匹配以解锁独特的组合机会。 @@ -338,27 +338,28 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内 关于构建去中心化应用程序的更多信息 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -### 去中心化金融数据 {#defi-data} +### DeFi 数据 {#defi-data} - [DeFi Prime](https://defiprime.com/) - [DeFi Llama](https://defillama.com/) -### 去中心化金融相关文章 {#defi-articles} +### DeFi 文章 {#defi-articles} -- [去中心化金融 (DeFi) 初学者指南](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu,2020 年 1 月 6 日_ +- [DeFi 新手指南](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu,2020 年 1 月 6 日_ +- [EEA DeFi 风险评估指南](https://entethalliance.org/specs/defi-risks/) – 一份行业支持的概述,介绍了如何识别和评估 DeFi 协议中的关键风险。 ### 视频 {#videos} -- [Finematics - 去中心化金融教育](https://finematics.com/) - _关于去中心化金融的视频_ -- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _去中心化金融基础:在这个偶尔令人困惑的空间里,你开始需要了解的一切。_ -- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _ - 什么是去中心化金融?_ +- [Finematics - 去中心化金融教育](https://finematics.com/) – _关于 DeFi 的视频_ +- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _DeFi 基础知识:在这个时而令人费解的领域,入门所需了解的一切。_ +- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _什么是 DeFi?_ ### 社区 {#communities} -- [去中心化金融 Llama Discord 服务器](https://discord.defillama.com/) -- [去中心化金融 Pulse Discord 服务器](https://discord.gg/Gx4TCTk) +- [DeFi Llama Discord 服务器](https://discord.defillama.com/) +- [DeFi Pulse Discord 服务器](https://discord.gg/Gx4TCTk) From 8b50fe0f25e6d48621a5419a3dc7364e947670fb Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:02 -0800 Subject: [PATCH 076/581] update(i18n): public/content/translations/zh/developers/docs/networks/index.md --- .../zh/developers/docs/networks/index.md | 141 +++++++++++++----- 1 file changed, 107 insertions(+), 34 deletions(-) diff --git a/public/content/translations/zh/developers/docs/networks/index.md b/public/content/translations/zh/developers/docs/networks/index.md index 5875cf1cb9b..1c0e5be3a20 100644 --- a/public/content/translations/zh/developers/docs/networks/index.md +++ b/public/content/translations/zh/developers/docs/networks/index.md @@ -10,7 +10,7 @@ lang: zh ## 前提条件 {#prerequisites} -你应该先了解[以太坊基础知识](/developers/docs/intro-to-ethereum/),然后再深入研究不同的网络,因为测试网络将提供一种低廉、安全的以太坊供你试用。 +你应该先了解[以太坊基础知识](/developers/docs/intro-to-ethereum/),然后再深入研究不同的网络,因为测试网将为你提供一个廉价、安全的以太坊版本来试用。 ## 公共网络 {#public-networks} @@ -20,11 +20,11 @@ lang: zh 主网是指主要的以太坊生态区块链,所有具有实际价值的交易都发生在该链的分散账本中。 -大众和交易所涉及的 ETH 价格是主网的 ETH。 +当人们和交易所讨论 ETH 价格时,他们谈论的是主网 ETH。 ### 以太坊测试网 {#ethereum-testnets} -除了主网外,还有公开的测试网。 这是一种模拟生态环境的网络,协议开发者或智能合约开发者可以使用它们测试尚未部署在主网上的协议升级和智能合约。 你可以把它看作生产与装配服务器的模拟。 +除了主网之外,还有公共测试网。 这些是协议开发者或智能合约开发者用来在部署到主网前,于类似生产的环境中测试协议升级以及潜在智能合约的网络。 你可以把它看作生产与装配服务器的模拟。 在部署到主网之前,你应该在测试网测试编写的任何合约代码。 在与现有智能合约集成的去中心化应用程序中,大多数项目将副本部署到测试网。 @@ -34,57 +34,87 @@ lang: zh #### 我应该使用哪个测试网? -客户端开发者目前还在维护的两个公共测试网是 Sepolia 和 Hoodi。 Sepolia 是一个供合约和应用程序开发者测试其应用程序的网络。 Hoodi 网络是让协议开发者测试网络升级,并让质押人测试运行验证者。 +客户端开发者目前维护的两个公共测试网是 Sepolia 和 Hoodi。 Sepolia 是一个供合约和应用程序开发者测试其应用程序的网络。 Hoodi 网络允许协议开发者测试网络升级,同时让质押者测试运行验证节点。 #### Sepolia {#sepolia} -**Sepolia 是应用程序开发时推荐使用的默认测试网**。 Sepolia 网络使用一种需要许可的验证者设置。 它相对较新,即它的状态和历史记录都非常小。 这意味着网络可以快速同步,并且在其上运行节点需要的存储空间更少。 这对于希望快速启动节点并直接与网络交互的用户来讲,是非常有用的。 - -- 封闭式验证者设置,由客户端和测试团队控制 -- 与其他测试网相比,新测试网部署的应用程序较少 -- 同步速度快,运行节点需要的磁盘空间最小 +**Sepolia 是应用程序开发时推荐使用的默认测试网**。 Sepolia 网络使用一个许可式验证者集,由客户端与测试团队控制。 ##### 资源 - [网站](https://sepolia.dev/) - [GitHub](https://github.com/eth-clients/sepolia) - [Otterscan](https://sepolia.otterscan.io/) -- [Etherscan 区块浏览器](https://sepolia.etherscan.io) +- [Etherscan](https://sepolia.etherscan.io) - [Blockscout](https://eth-sepolia.blockscout.com/) ##### 水龙头 -- [QuickNode Sepolia 水龙头](https://faucet.quicknode.com/drip) -- [Grabteeth](https://grabteeth.xyz/) -- [PoW 水龙头](https://sepolia-faucet.pk910.de/) -- [Coinbase Wallet 水龙头 | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet) -- [Alchemy Sepolia 水龙头](https://sepoliafaucet.com/) -- [Infura Sepolia 水龙头](https://www.infura.io/faucet) +- [Alchemy Sepolia 水龙头](https://www.alchemy.com/faucets/ethereum-sepolia) +- [Chain Platform Sepolia 水龙头](https://faucet.chainplatform.co/faucets/ethereum-sepolia/) - [Chainstack Sepolia 水龙头](https://faucet.chainstack.com/sepolia-testnet-faucet) - [以太坊生态系统水龙头](https://www.ethereum-ecosystem.com/faucets/ethereum-sepolia) +- [ethfaucet.com Sepolia 水龙头](https://ethfaucet.com/networks/ethereum) +- [Google Cloud Web3 Sepolia 水龙头](https://cloud.google.com/application/web3/faucet/ethereum/sepolia) +- [Grabteeth](https://grabteeth.xyz/) +- [Infura Sepolia 水龙头](https://www.infura.io/faucet) +- [PoW 水龙头](https://sepolia-faucet.pk910.de/) +- [QuickNode Sepolia 水龙头](https://faucet.quicknode.com/ethereum/sepolia) #### Hoodi {#hoodi} -_注意:[Goerli 测试网已弃用](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17),它已被 Hoodi 取代。 请考虑把你的应用程序迁移至 Sepolia。_ - -Hoodi 是用于测试验证和质押的测试网。 Hoodi 网络对想要运行测试网验证者的用户开放。 因此,希望在部署到主网之前测试协议升级的质押人应该使用 Hoodi。 +Hoodi 是用于测试验证和质押的测试网。 Hoodi 网络对想要运行测试网验证者的用户开放。 因此,想在主网部署前测试协议升级的质押者应该使用 Hoodi网络。 -- 开放式验证者设置,质押者可以测试网络升级 -- 状态比较大,用于测试复杂的智能合约交互 +- 开放式验证者组,质押者可以测试网络升级 +- 大规模状态,用于测试复杂的智能合约交互 - 同步时间更长,运行节点需要更多存储空间 ##### 资源 - [网站](https://hoodi.ethpandaops.io/) - [GitHub](https://github.com/eth-clients/hoodi) -- [Explorer](https://explorer.hoodi.ethpandaops.io/) -- [Checkpoint Sync](https://checkpoint-sync.hoodi.ethpandaops.io/) +- [浏览器](https://explorer.hoodi.ethpandaops.io/) +- [检查点同步](https://checkpoint-sync.hoodi.ethpandaops.io/) +- [Otterscan](https://hoodi.otterscan.io/) +- [Etherscan](https://hoodi.etherscan.io/) ##### 水龙头 +- [Chain Platform Hoodi 水龙头](https://faucet.chainplatform.co/faucets/ethereum-hoodi/) - [Hoodi 水龙头](https://hoodi.ethpandaops.io/) +- [PoW 水龙头](https://hoodi-faucet.pk910.de/) + +#### Ephemery {#ephemery} + +Ephemery 是一种独特的测试网,每个月都会彻底重置。 执行和共识状态每 28 天回滚至创世状态,这意味着在测试网上发生的任何事情都是临时的。 这使其非常适合短期测试,节点快速启动以及开发无需数据持久性的 "hello world"((入门级)应用程序。 -要在 Hoodi 测试网上启动验证者,请使用 [Hoodi 启动板](https://hoodi.launchpad.ethereum.org/en/)。 +- 始终新鲜的状态,适用于验证者和应用程序的短期测试 +- 仅包含基本的合约集 +- 开放验证者集,能够轻松访问大量资金 +- 最低的节点要求和最快的同步速度,平均小于 5GB + +##### 资源 + +- [网站](https://ephemery.dev/) +- [Github](https://github.com/ephemery-testnet/ephemery-resources) +- [社区聊天](https://matrix.to/#/#staker-testnet:matrix.org) +- [Blockscout](https://explorer.ephemery.dev/) +- [Otterscan](https://otter.bordel.wtf/) +- [信标浏览器](https://beaconlight.ephemery.dev/) +- [检查点同步](https://checkpoint-sync.ephemery.ethpandaops.io) +- [启动板](https://launchpad.ephemery.dev/) + +#### 水龙头 + +- [Bordel 水龙头](https://faucet.bordel.wtf/) +- [Pk910 PoW 水龙头](https://ephemery-faucet.pk910.de/) + +#### Holesky(已弃用){#holesky} + +Holesky 测试网将于 2025 年 9 月停用。 质押运营商和基础设施提供商应该使用 Hoodi 进行验证者测试。 + +- [Holesky 测试网关闭公告](https://blog.ethereum.org/2025/09/01/holesky-shutdown-announcement) - _以太坊基金会博客,2025 年 9 月 1 日_ +- [Holesky 和 Hoodi 测试网更新](https://blog.ethereum.org/en/2025/03/18/hoodi-holesky) - _以太坊基金会博客,2025 年 3 月 18 日_ ### 二层网络测试网 {#layer-2-testnets} @@ -92,39 +122,59 @@ Hoodi 是用于测试验证和质押的测试网。 Hoodi 网络对想要运行 #### Arbitrum Sepolia {#arbitrum-sepolia} -[Arbitrum](https://arbitrum.io/) 测试网。 +[Arbitrum](https://arbitrum.io/) 的测试网。 + +##### 资源 + +- [Etherscan](https://sepolia.arbiscan.io/) +- [Blockscout](https://sepolia-explorer.arbitrum.io/) ##### 水龙头 -- [Chainlink 水龙头](https://faucets.chain.link/arbitrum-sepolia) -- [Alchemy 水龙头](https://www.alchemy.com/faucets/arbitrum-sepolia) +- [Alchemy Arbitrum Sepolia 水龙头](https://www.alchemy.com/faucets/arbitrum-sepolia) +- [Chainlink Arbitrum Sepolia 水龙头](https://faucets.chain.link/arbitrum-sepolia) +- [ethfaucet.com Arbitrum Sepolia 水龙头](https://ethfaucet.com/networks/arbitrum) +- [QuickNode Arbitrum Sepolia 水龙头](https://faucet.quicknode.com/arbitrum/sepolia) #### Optimistic Sepolia {#optimistic-sepolia} -[Optimism](https://www.optimism.io/) 测试网。 +[Optimism](https://www.optimism.io/) 的测试网。 + +##### 资源 + +- [Etherscan](https://sepolia-optimistic.etherscan.io/) +- [Blockscout](https://optimism-sepolia.blockscout.com/) ##### 水龙头 -- [Chainlink 水龙头](https://faucets.chain.link/optimism-sepolia) - [Alchemy 水龙头](https://www.alchemy.com/faucets/optimism-sepolia) +- [Chainlink 水龙头](https://faucets.chain.link/optimism-sepolia) +- [ethfaucet.com Optimism Sepolia 水龙头](https://ethfaucet.com/networks/optimism) +- [测试网水龙头](https://docs.optimism.io/builders/tools/build/faucets) #### Starknet Sepolia {#starknet-sepolia} [Starknet](https://www.starknet.io) 的测试网。 +##### 资源 + +- [Starkscan](https://sepolia.starkscan.co/) + ##### 水龙头 - [Alchemy 水龙头](https://www.alchemy.com/faucets/starknet-sepolia) +- [Blast Starknet Sepolia 水龙头](https://blastapi.io/faucets/starknet-sepolia-eth) +- [Starknet 水龙头](https://starknet-faucet.vercel.app/) ## 私有网络 {#private-networks} -如果以太坊网络的节点未连接到公共网络( 主网或测试网),则以太坊网络就是私有网络。 在这种情况下,私有仅指保留或隔离,而不是保护或安全。 +如果一个以太坊网络的节点未连接到公共网络(即主网或测试网),那么它就是一个私有网络。 在这种情况下,私有仅指保留或隔离,而不是保护或安全。 ### 开发网络 {#development-networks} 要开发以太坊应用程序,你需要在私有网络上运行该应用程序以了解它的运行情况,然后再进行部署。 如同在自己的计算机上创建用于 Web 开发的本地服务器,你可以创建本地区块链实例来测试你的去中心化应用程序。 这样,迭代将比公共测试网快很多。 -有一些项目和工具专门协助这方面的工作。 进一步了解[开发网络](/developers/docs/development-networks/)。 +有一些项目和工具专门协助这方面的工作。 了解有关[开发网络](/developers/docs/development-networks/)的更多信息。 ### 联盟网络 {#consortium-networks} @@ -132,12 +182,35 @@ Hoodi 是用于测试验证和质押的测试网。 Hoodi 网络对想要运行 如果说公共以太坊网络像公共互联网,那么联盟网络就像私有内部网。 +## 为什么以太坊测试网以地铁站命名? {#why-naming} + +许多以太坊测试网以现实世界中的地铁站或火车站命名。 这一命名传统很早就开始了,它反映了贡献者们生活或工作过的全球城市。 它具有象征意义,令人难忘且实用。 就像测试网与以太坊主网隔离一样,地铁线路也与地面交通分开运行。 + +### 常用测试网和旧测试网 {#common-and-legacy-testnets} + +- **Sepolia** - 希腊雅典一个与地铁相连的社区。 目前用于智能合约和去中心化应用程序测试。 +- **Hoodi** - 以印度班加罗尔的 Hoodi 地铁站命名。 用于验证者和协议升级测试。 +- **Goerli**_(已弃用)_ - 以德国柏林的 Görlitzer Bahnhof 命名。 +- **Rinkeby**_(已弃用)_ - 以斯德哥尔摩一个有地铁站的郊区命名。 +- **Ropsten**_(已弃用)_ - 指斯德哥尔摩的一个地区和前渡轮/地铁总站。 +- **Kovan**_(已弃用)_ - 以新加坡的一个地铁站命名。 +- **Morden**_(已弃用)_ - 以伦敦的一个地铁站命名。 以太坊的第一个公共测试网。 + +### 其他专用测试网 {#other-testnets} + +一些测试网是为短期或特定升级测试而创建的,不一定是以地铁为主题: + +- **Holesky**_(已弃用)_ - 以布拉格的 Holešovice 站命名。 用于验证者测试;于 2025 年弃用。 +- **Kiln**、**Zhejiang**、**Shandong**、**Prater**、**Pyrmont**、**Olympic**_(均已弃用)_和 **Ephemery** - 为“合并”、上海升级等升级模拟或验证者实验而专门构建。 一些名称是地域性或主题性的,而不是基于地铁站。 + +使用地铁站名称有助于开发者快速识别和记住测试网,而无需依赖数字链 ID。 这也反映了以太坊的文化:实用、全球化和以人为本。 + ## 相关工具 {#related-tools} -- [Chainlist](https://chainlist.org/) _ 以太坊虚拟机网络的列表,可将钱包和提供者连接到相应的链 ID 和网络 ID_ -- [基于以太坊虚拟机的链](https://github.com/ethereum-lists/chains) _给 Chainlist 提供支持的 GitHub 链元数据存储库_ +- [Chainlist](https://chainlist.org/) _EVM 网络列表,用于将钱包和提供商连接到相应的链 ID 和网络 ID_ +- [基于 EVM 的链](https://github.com/ethereum-lists/chains) _为 Chainlist 提供支持的链元数据 GitHub 代码库_ -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [提案:可预测的以太坊测试网生命周期](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) - [以太坊测试网的演变](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/) From e4bf47c09a87bc28b2963c77ad5713923aea3635 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:06 -0800 Subject: [PATCH 077/581] update(i18n): public/content/translations/zh/staking/solo/index.md --- .../translations/zh/staking/solo/index.md | 156 +++++++++--------- 1 file changed, 75 insertions(+), 81 deletions(-) diff --git a/public/content/translations/zh/staking/solo/index.md b/public/content/translations/zh/staking/solo/index.md index c49c659e797..c49f853057b 100644 --- a/public/content/translations/zh/staking/solo/index.md +++ b/public/content/translations/zh/staking/solo/index.md @@ -13,65 +13,60 @@ summaryPoints: - 消除信任依赖,始终自己掌控资金密钥 --- -## 什么是单独质押? {#what-is-solo-staking} +## 什么是家庭质押? {#what-is-solo-staking} -单独质押是指运行一个连接到互联网的[以太坊节点](/run-a-node/),并存入 32 个以太币以激活一个[验证者](#faq),使你能够直接参与网络共识。 +家庭质押是指[运行一个连接到互联网的以太坊节点](/run-a-node/),并存入 32 ETH 以激活一个[验证者](#faq)的行为,从而使你能够直接参与网络共识。 -**单独质押增强了以太坊网络的去中心化**,使以太坊更加抗审查并且更加稳健,能够抵御攻击。 其他质押方法可能不会给网络带来同样的助益。 单独质押是保护以太坊的最佳质押方案。 +**家庭质押增加了以太坊网络的去中心化程度**,使以太坊更具抗审查性,并能更稳健地抵御攻击。 其他质押方法可能无法以同样的方式帮助网络。 家庭质押是保护以太坊安全的最佳质押方案。 -一个以太坊节点既包括执行层 (EL) 客户端,也包括共识层 (CL) 客户端。 这些客户端是一套共同工作的软件,拥有一套有效的签名密钥,以验证交易和区块、证明链头的正确性、汇总认证和提交区块。 +以太坊节点由一个执行层 (EL) 客户端和一个共识层 (CL) 客户端组成。 这些客户端是协同工作的软件,它们与一组有效的签名密钥一起,用于验证交易和区块、证明正确的链头、聚合证明以及提议区块。 -单独质押者负责操作运行这些客户端所需的硬件。 强烈建议使用一台专用机器在家进行操作,这对网络安全非常有益。 +家庭质押者负责运行运行这些客户端所需的硬件。 强烈建议在家中使用专用机器进行操作,这对网络的健康非常有益。 单独质押者由于保持他们的验证者在线并正常运行,可以直接从协议中获得奖励。 -## 为什么选择单独质押? {#why-stake-solo} +## 为什么要进行家庭质押? {#why-stake-solo} 单独质押让你承担更大的责任,但会让你对资金和质押设置拥有最大的控制权。 - - - + + + -## 单独质押前的注意事项 {#considerations-before-staking-solo} +## 家庭质押前的注意事项 {#considerations-before-staking-solo} -尽管我们希望每个人都能无风险地进行单独质押,但这并不现实。 在选择单独质押以太币之前,有一些实用和严肃的注意事项需要记住。 +尽管我们希望家庭质押能够对所有人开放且毫无风险,但现实并非如此。 在选择家庭质押你的 ETH 之前,有一些实际且重要的注意事项需要牢记。 - -在操作自己的节点时,你应该花一些时间学习如何使用你所选择的软件。 这涉及到阅读相关文档,以及了解开发团队的沟通渠道。 + +运行自己的节点时,你应该花些时间学习如何使用你选择的软件。 这包括阅读相关文档并关注这些开发团队的沟通渠道。 -你对所运行的软件和权益证明的原理了解得越多,作为一名质押人的风险就越小,也越容易解决在节点运行过程中可能出现的任何问题。 - +你对所运行的软件和权益证明工作原理的了解越深入,作为质押者的风险就越小,作为节点运行者,解决可能出现的任何问题也就越容易。 - -节点设置要求用户能够熟练使用计算机,尽管随着时间的推移,新的工具正在使其变得更容易。 了解命令行界面会有帮助,但并非必需。 + +节点设置需要操作者对计算机有相当的熟练度,不过随着时间的推移,新工具正让此过程变得更加容易。 了解命令行界面会有所帮助,但不再是硬性要求。 -节点设置还需要用户对基本的硬件设置,以及最低推荐规格有一些了解。 - +它还需要非常基本的硬件设置,以及对最低推荐规格的一些了解。 - -就像私钥保护以太坊地址的方式一样,你也需要为验证者单独生成密钥。 你必须了解如何保护好助记词或私钥的安全。{' '} + +就像私钥保护你的以太坊地址一样,你需要为你的验证者专门生成密钥。 你必须了解如何确保所有助记词或私钥的安全。{' '} -[以太坊的安全性和防范欺诈](/security/) - +[以太坊安全与骗局防范](/security/) - -硬件设施会发生故障,网络连接会出错,客户端软件也需要升级。 因此节点维护不可避免,需要你偶尔关注。 你要确保知道任何预期的网络升级,或其他关键的客户端升级。 + +硬件偶尔会发生故障,网络连接会出错,客户端软件也偶尔需要升级。 节点维护是不可避免的,并且偶尔需要你的关注。 你需要确保自己随时了解任何预期的网络升级或其他关键的客户端升级。 - -你的回报与你的验证者在线并正确验证的时间成正比。 宕机会导致一定比例的处罚,具体与有多少其他验证者同时离线有关,但不会导致罚没。 同时网络带宽也很重要,因为如果没有及时收到认证,奖励就会减少。 建议至少要有 10 Mb/s 的上行和下行带宽。 + +你的奖励与你的验证者在线并正常进行证明的时间成正比。 停机会导致与同时离线的其他验证者数量成正比的惩罚,但不会导致罚没。 带宽也很重要,因为未能及时收到的证明会导致奖励减少。 具体要求会有所不同,但建议最低上传和下载速度为 10 Mb/s。 - -与离线导致的怠工处罚不同,罚没是一种更严重的处罚,专门针对恶意违规。 同一时间只在一台机器上运行加载你密钥的客户端,你被罚没的风险可以降到最低。 总得来说,所有质押人都必须意识到被罚没的风险。 + +与离线导致的“不活跃惩罚”不同,罚没是一种更为严重的惩罚,专为恶意行为而设。 通过运行少数派客户端,并且一次只在一台机器上加载你的密钥,可以将你被罚没的风险降至最低。 话虽如此,所有质押者都必须意识到罚没的风险。 -更多关于惩罚和验证者生命周期的信息 - - + 更多关于罚没和验证者生命周期的信息
@@ -81,21 +76,21 @@ summaryPoints: 在线时你将赢得以太币奖励,奖励将定期存入你的提款地址。 -如果需要,你可以验证者身份退出,这样就不需要在线,也不会再有任何奖励。 之后,你的余额将提取到你在设置过程指定的提款地址。 +如果需要,你可以退出验证者身份,这样就不再需要保持在线,并且会停止获得任何进一步的奖励。 你的剩余余额随后将被提取到你在设置时指定的提款地址。 -[更多关于质押提款的信息](/staking/withdrawals/) +[关于质押提款的更多信息](/staking/withdrawals/) -## 开始使用 Staking Launchpad {#get-started-on-the-staking-launchpad} +## 在质押启动板上开始 {#get-started-on-the-staking-launchpad} -Staking Launchpad 是一个开源应用程序,可帮助你成为质押人。 它将指导你选择客户端、生成密钥并将你的以太币存入质押存款合约。 会提供一份清单,确保已经涵盖安全设置验证者需要的所有内容。 +质押启动板是一个开源应用程序,可以帮助你成为质押者。 它会指导你选择客户端、生成密钥,以及将你的 ETH 存入质押存款合约。 我们提供了一份核对清单,以确保你已完成所有步骤,安全地设置你的验证者。 -## 使用节点和客户端设置工具时应考虑的事项 {#node-tool-considerations} +## 节点和客户端设置工具的注意事项 {#node-tool-considerations} 越来越多的工具和服务可以帮助你单独质押以太币,但每种工具和服务的风险和收益各不相同。 -下面使用属性指标来表示列出的质押工具可能具有的显著优势或劣势。 在选择帮你度过质押之旅的工具时,请使用本节作为参考,了解我们如何定义这些属性。 +下方使用属性指标来标示所列质押工具可能具有的显著优点或缺点。 在你选择工具以帮助你的质押之旅时,请使用本节作为我们如何定义这些属性的参考。 @@ -109,97 +104,96 @@ Staking Launchpad 是一个开源应用程序,可帮助你成为质押人。 -请注意选择[非主流客户端](/developers/docs/nodes-and-clients/client-diversity/)的重要性,因为可以提高网络安全性,并限制你的风险。 可让你设置非主流客户端的工具称为“多客户端”。 +请注意选择[少数派客户端](/developers/docs/nodes-and-clients/client-diversity/)的重要性,因为这可以提高网络安全性并限制你的风险。 允许你设置少数派客户端的工具被标记为 “多客户端”。 ### 密钥生成器 -这些工具可用来替代[质押存款命令行接口](https://github.com/ethereum/staking-deposit-cli/),帮助生成密钥。 +这些工具可以作为 [Staking Deposit CLI](https://github.com/ethereum/staking-deposit-cli/) 的替代方案,帮助生成密钥。 -想要推荐其他未提到的质押工具吗? 可以查看我们的[产品上线政策](/contributing/adding-staking-products/),确定你推荐的质押工具是否合适,合适的话,请提交以供审核。 +想要推荐其他未提到的质押工具吗? 查看我们的[产品上架政策](/contributing/adding-staking-products/),了解您的产品是否合适,并提交审核。 -## 探索单独质押指南 {#staking-guides} +## 探索家庭质押指南 {#staking-guides} -## 常见问题 {#faq} +## 常见问题{#faq} 下面是一些关于质押的最常见问题,值得了解一下。 - + -验证者是一个虚拟实体,存在于以太坊上并参与以太坊协议的共识。 验证者由余额、公钥和其他属性信息表示。 验证者客户端是通过持有并使用验证者的私钥代表验证者行动的软件。 一个验证者客户端可以持有多个密钥对,从而控制多个验证者。 +验证者是存在于以太坊上并参与以太坊协议共识的虚拟实体。 验证者由余额、公钥和其他属性表示。 验证者客户端是通过持有和使用验证者的私钥来代表验证者行事的软件。 单个验证者客户端可以持有多个密钥对,从而控制多个验证者。 - -每个与验证者相关的密钥对都需要正好 32 个以太币才能激活。 将更多以太币存入一对密钥并不能增加可能获得的奖励,因为每个验证者的有效余额被限制为 32 个以太币。 这意味着质押时需要以 32 个以太币为单位递增,每个验证者都有自己的一套密钥和余额。 + +是的,现代验证者账户最多可以持有 2048 ETH。 超过 32 ETH 的部分将以阶梯方式复利,随着你的真实余额增加而以整数增量增加。 这就是所谓的有效余额。 -不要为一个验证者存入超过 32 以太币的资金。 这样做不会增加你的奖励。 如果为验证者设置了提款地址,超过 32 个以太币多余资金将在下一次[验证者扫描](/staking/withdrawals/#validator-sweeping)时自动提取到该地址。 +为了增加账户的有效余额从而增加奖励,必须超过任何整数 ETH 阈值 0.25 ETH 的缓冲。 例如,一个真实余额为 32.9、有效余额为 32 的账户需要再赚取 0.35 ETH,使其真实余额超过 33.25,才能触发有效余额的增加。 -如果单独质押对你来说要求太高,可以考虑使用[质押即服务](/staking/saas/)提供商,或者如果你的资金少于 32 个以太币,则可以考虑[质押池](/staking/pools/)。 - +该缓冲区还可以防止有效余额下降,直到它比其当前有效余额低 0.25 ETH 为止。 - -在网络最终确认时下线,不会导致罚没。 如果你的验证者在某个周期(每个周期 6.4 分钟)内无法进行验证,就会导致少量的怠工处罚,但这与罚没有很大不同。 这些处罚比你在验证者可用的情况下获得的奖励要少一些,而且损失可以通过将验证者上线大约相等的时间赚回来。 +与验证者关联的每个密钥对至少需要 32 ETH 才能激活。 超过此数额的任何余额都可以随时通过由该地址签名的交易提取到关联的提款地址。 任何超过最大有效余额的资金都将定期自动提取。 -请注意,对怠工验证者的处罚与有多少个验证者同时下线成正比。 在大部分网络参与者同时离线的情况下,对每个验证者的处罚会比单个验证者怠工所受的处罚大。 +如果家庭质押对你来说要求太高,可以考虑使用[质押即服务](/staking/saas/)提供商;如果你的资金少于 32 ETH,可以查看[质押池](/staking/pools/)。 -在极端情况下,如果网络因超过三分之一的验证者离线而停止最终确认,这些验证者将受到所谓的二次怠惰惩罚,离线验证者帐户中的以太币将遭受指数级损失。 这时以太坊网络将通过消耗怠工验证者的以太币进行自我修复,直到他们的余额达到 16 个以太币,此时他们将自动从验证者池中退出。 剩余在线的验证者最终将再次超过 2/3,从而满足再次最终确认链的绝对多数要求。 - + +在网络正常进行最终确定的情况下离线,不会导致罚没。 如果你的验证者在某个时期(每个时期长 6.4 分钟)内无法进行证明,会产生小额的不活跃惩罚,但这与罚没截然不同。 这些惩罚略低于验证者在线证明本可获得的奖励,损失可以通过大致相等的在线时间重新赚回。 - -简而言之,虽然永远不能完全保证,但如果你真诚行事,运行非主流客户端,并且每次只在一台机器上保留你的签名密钥,你被罚没的风险几乎为零。 +请注意,不活跃惩罚与同时离线的验证者数量成正比。 在网络大部分节点同时离线的情况下,每个验证者受到的惩罚将大于单个验证者离线时的惩罚。 -只有几种特定的情况会导致验证者被罚没并从网络中退出。 在撰写本文时,已经发生的罚没事件完全是冗余硬件设置的产物,即签名密钥同时存储在两台不同的机器上。 这可能会无意中导致你的密钥出现两次投票,这是一种可被罚没的行为。 +在极端情况下,如果网络因超过三分之一的验证者离线而停止最终确定,这些用户将遭受所谓的二次不活跃泄漏,即离线验证者账户中的 ETH 会呈指数级流失。 这使得网络能够通过销毁不活跃验证者的 ETH,直到其余额达到 16 ETH 时最终实现自我修复,届时他们将被自动从验证者池中移除。 剩余的在线验证者最终将再次占网络的三分之二以上,满足再次最终确定链所需的绝对多数。 -运行主流客户端(任何被超过 2/3 的用户使用的客户端)也存在可能被罚没的风险,比如该客户端有一个导致链分叉的错误。 这可能会导致一个有问题的分叉被最终确认。 要纠正并返回预定链,需要提交一个环绕投票,以尝试撤销最终确定的区块。 这也是一种可被罚没的行为,可以通过运行非主流客户端来避免。 + +简而言之,这永远无法完全保证,但如果你本着诚信原则行事,运行少数派客户端,并且一次只在一台机器上保存你的签名密钥,那么被罚没的风险几乎为零。 + +只有少数几种特定方式会导致验证者被罚没并从网络中移除。 截至撰写本文时,已发生的罚没事件完全是冗余硬件设置的产物,即签名密钥同时存储在两台独立的机器上。 这可能会无意中导致你的密钥进行双重投票,这是一种可罚没的行为。 + +运行绝大多数客户端(网络中超过 2/3 的验证者使用的任何客户端)也存在潜在的罚没风险,即当该客户端存在导致链分叉的漏洞时。 这可能导致一个错误的分叉被最终确定。 要纠正回预期的链,需要通过尝试撤销一个已最终确定的区块来提交环绕投票。 这也是一种可罚没的行为,可以通过运行少数派客户端来避免。 非主流客户端中的等效错误永远不会被最终确认,因此也不会导致环绕投票,只会导致怠工处罚,而非罚没 - -各个客户端在性能和用户界面方面可能略有不同,因为每个客户端都是由不同的团队使用不同编程语言开发的。 这意味着,它们之中没有“最好的”。 所有生产用客户端都是优秀的软件,它们都执行相同的核心功能,即与区块链进行同步和交互。 + +各个客户端在性能和用户界面方面可能略有不同,因为它们是由不同团队使用各种编程语言开发的。 话虽如此,没有哪个是“最好”的。 所有生产级客户端都是优秀的软件,它们都执行相同的核心功能来同步区块链并与之交互。 -由于所有生产用客户端都提供相同的基本功能,所以选择一个非主流客户端实际上非常重要,即并未被网络上大多数验证者使用的任何客户端。 这听起来可能有悖常理,但运行多数或绝对多数人使用的客户端会使你在该客户端出现错误时面临更大的罚没风险。 运行一个少数人使用的客户端可以极大地降低这些风险。 +由于所有生产级客户端都提供相同的基本功能,因此选择一个少数派客户端实际上非常重要,即当前网络上大多数验证者未使用的任何客户端。 这听起来可能违反直觉,但在该客户端出现漏洞的情况下,运行多数或绝大多数客户端会让你面临更高的罚没风险。 运行少数派客户端会大大降低这些风险。 -详细了解为什么客户端多样性至关重要 - +详细了解客户端多样性至关重要的原因 - -虽然虚拟专用服务器 (VPS) 可用于替代家庭硬件设施,但你的验证者客户端的物理访问和位置确实很重要。 使用中心化云计算解决方案(如亚马逊网络服务或 Digital Ocean)的便捷之处在于,你不必拥有和操作硬件设施,但代价是网络需要中心化。 + +尽管虚拟专用服务器 (VPS) 可以替代家用硬件,但你的验证者客户端的物理访问权限和位置确实很重要。 Amazon Web Services 或 Digital Ocean 等中心化云解决方案提供了无需获取和操作硬件的便利,但代价是使网络中心化。 -在一个中心化云存储解决方案上运行的验证者客户端越多,对这些用户来说就越危险。 任何使这些提供商离线的事件,无论是攻击、监管要求,还是电力/互联网中断,都会导致每个依赖于该服务器的验证者客户端同时离线。 +在单个中心化云存储解决方案上运行的验证者客户端越多,对这些用户来说就越危险。 任何导致这些提供商离线的事件,无论是攻击、监管要求,还是仅仅是断电/断网,都将导致依赖该服务器的每个验证者客户端同时离线。 -离线处罚与有多少其他验证者同时离线成正比。 使用虚拟专用服务器会大大增加离线处罚的风险,并在大范围宕机的情况下增加你的二次惩罚或罚没的风险。 为了尽量降低你自己的风险,以及以太坊网络的风险,我们强烈建议用户获取并操作自己的硬件。 - +离线惩罚与同时离线的其他人数量成正比。 使用 VPS 会大大增加离线惩罚更严重的风险,并且在中断规模足够大的情况下,会增加你遭受二次泄漏或罚没的风险。 为了将自身风险和网络风险降至最低,我们强烈鼓励用户获取并操作自己的硬件。 - + 从信标链上进行任何类型的提款都需要设置提款凭据。 -新质押人在生成密钥和存款时设置提款凭据。 尚未设置提款凭证的现有质押人可以升级他们的密钥,以支持提款功能。 +新质押者在生成密钥和存款时进行此设置。 尚未进行此设置的现有质押者可以升级其密钥以支持此功能。 设置提款凭据后,奖励支付(最初的 32 个以太币累积的以太币奖励)将自动定期分发到提款地址。 要解锁并收回全部余额,还必须完成验证者退出流程。 -更多关于质押提款的信息 - +关于质押提款的更多信息 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [以太坊质押目录](https://www.staking.directory/) - _Eridian 和 Spacesider_ -- [以太坊客户端多样性问题](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_ +- [以太坊质押目录](https://www.staking.directory/) - _Eridian and Spacesider_ +- [以太坊的客户端多样性问题](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_ - [帮助实现客户端多样性](https://www.attestant.io/posts/helping-client-diversity/) - _Jim McDonald 2022_ -- [以太坊共识层的客户端多样性](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) - _jmcook.eth 2022_ -- [如何选购以太坊验证者的硬件](https://www.youtube.com/watch?v=C2wwu1IlhDc)- _EthStaker 2022_ -- [以太坊 2 防止罚没小技巧](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) - _Raul Jordan 2020_ +- [以太坊共识层上的客户端多样性](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) - _jmcook.eth 2022_ +- [如何选购以太坊验证者硬件](https://www.youtube.com/watch?v=C2wwu1IlhDc) - _EthStaker 2022_ +- [Eth2 罚没预防技巧](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) - _Raul Jordan 2020_ From 65ac91c0b58a89f41a0b61091ae3857c85051ce7 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:09 -0800 Subject: [PATCH 078/581] update(i18n): public/content/translations/zh/contributing/index.md --- .../translations/zh/contributing/index.md | 54 ++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/public/content/translations/zh/contributing/index.md b/public/content/translations/zh/contributing/index.md index a6f0e32ac62..77ae597bfff 100644 --- a/public/content/translations/zh/contributing/index.md +++ b/public/content/translations/zh/contributing/index.md @@ -4,40 +4,46 @@ description: 了解你可以为 ethereum.org 做出贡献的几种方式 lang: zh --- -# 为 ethereum.org 贡献力量 🦄 {#contributing-to-ethereumorg} +# 为 ethereum.org 做贡献 🦄 {#contributing-to-ethereumorg} -Ethereum.org 是一个开源项目,有超过 **12,000** 名贡献者帮助翻译、编写、设计和维护网站。 +Ethereum.org 是一个开源项目,有 **12,000** 多名贡献者帮助翻译、编写、设计和维护网站。 我们是一个热情的社区,将帮助你在以太坊生态系统中学习和成长,同时也做出有意义的贡献并获得相关的实践经验! -## 如何做出贡献 {#ways-to-contribute} +## 贡献方式 {#ways-to-contribute} **翻译** -- [加入翻译计划](/contributing/translation-program/) – 帮助我们为 ethereum.org 增加新语言支持 + +- [加入翻译计划](/contributing/translation-program/) – 帮助我们将 ethereum.org 带给新的语言 **开发** -- [处理有待解决的问题](https://github.com/ethereum/ethereum-org-website/issues) - 我们确定需要开展的工作 + +- [处理待解决的问题](https://github.com/ethereum/ethereum-org-website/issues) – 我们已确定需要完成的工作 **设计** -- [帮助设计网站](/contributing/design/) — 任何水平的设计者都可以做出贡献来改进网站。 + +- [帮助设计网站](/contributing/design/) – 任何水平的设计师都可以为改进网站做出贡献 **内容** + - [创建/编辑内容](/contributing/#how-to-update-content) – 建议新页面或对现有内容进行调整 - [添加社区资源](/contributing/content-resources/) – 将有用的文章或资源添加到相关页面 -- [对设计资源提出建议](/contributing/design/adding-design-resources/) - 添加、更新和删除有用的设计资源 +- [建议设计资源](/contributing/design/adding-design-resources/) – 添加、更新和删除有用的设计资源 - [测验](/contributing/quizzes/) – 为相关页面添加、更新和删除测试题库 **功能创意** -- [申请功能](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) – 让我们了解你在新功能或设计方面的任何想法 + +- [请求新功能](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) – 让我们了解你对新功能或新设计的任何想法 **产品列表** + - [添加交易所](/contributing/adding-exchanges/) – 将交易所添加到我们的[交易所查找器](/get-eth/#country-picker) - [添加产品](/contributing/adding-products/) – 将去中心化应用程序或钱包添加到相关页面 - [添加开发者工具](/contributing/adding-developer-tools/) – 将开发者工具添加到相关页面 - [添加二层网络](/contributing/adding-layer-2s/) – 将二层网络添加到相关页面 -- [添加质押产品或服务](/contributing/adding-staking-products/) – 添加有助于促进单独质押、联合质押或质押即服务的项目 -- [添加钱包](/contributing/adding-wallets/) – 为[查找钱包页面](/wallets/find-wallet/)添加钱包 -- [为我们的去中心化科学页面建议项目](/contributing/adding-desci-projects/) – 添加基于以太坊构建的项目,为去中心化科学做贡献 +- [添加质押产品或服务](/contributing/adding-staking-products/) – 添加有助于促进个人质押、联合质押或质押即服务的项目 +- [添加钱包](/contributing/adding-wallets/) – 为[钱包查找页面](/wallets/find-wallet/)添加钱包 +- [为我们的 DeSci 页面建议项目](/contributing/adding-desci-projects/) – 添加基于以太坊构建、为去中心化科学做贡献的项目 有疑问吗? 🤔 加入我们的 [Discord 服务器](https://discord.gg/ethereum-org) @@ -49,27 +55,27 @@ Ethereum.org 是一个开源项目,有超过 **12,000** 名贡献者帮助翻 查看所有任务 -## 如何在 ethereum.org 上工作 {#how-to-update-content} +## 如何参与 ethereum.org 的工作 {#how-to-update-content} -如果你希望为[翻译计划](/contributing/translation-program/)做贡献,那么你需要在 [Crowdin](https://crowdin.com/project/ethereum-org) 上创建一个帐户。 对于其他所有任务,例如在网站上添加或编辑内容或视觉效果、修复错误、处理开放任务,你都需要一个 [GitHub](https://github.com/) 帐户。 +如果你希望参与[翻译计划](/contributing/translation-program/),你需要在 [Crowdin](https://crowdin.com/project/ethereum-org) 上创建一个帐户。 对于其他所有事项 – 在网站上添加或编辑内容或视觉效果、修复漏洞、处理开放任务 – 你都需要一个 [GitHub](https://github.com/) 帐户。 所有更新都是通过 GitHub 拉取请求流程进行的。 这意味着你要在网站上创建本地副本,做出你的更改,以及请求合并你的更改。 如果你以前从未这样做过,请按照我们 [GitHub 存储库](https://github.com/ethereum/ethereum-org-website)底部的说明进行操作。 你不需要权限来处理任何事情,但是最好让我们知道你打算做什么。 你可以这样做: -- 评论 [GitHub](https://github.com/ethereum/ethereum-org-website) 中的一个问题或拉取请求 +- 在 [GitHub](https://github.com/ethereum/ethereum-org-website) 上对议题或拉取请求 (PR) 发表评论 - 在我们的 [Discord 服务器](https://discord.gg/ethereum-org)上发消息 在做出贡献之前,请你了解以下内容: -- 不断发展的 [ethereum.org 愿景](/about/) +- ethereum.org 不断演进的[愿景](/about/) - 我们的[设计原则](/contributing/design-principles/) - 我们的[风格指南](/contributing/style-guide/) - 我们的[行为准则](/community/code-of-conduct) -## 如何做出有关网站的决定 {#how-decisions-about-the-site-are-made} +## 关于网站的决策是如何制定的 {#how-decisions-about-the-site-are-made} 关于个人拉取请求、设计演变和重大升级的决策,由来自整个以太坊生态系统的团队做出。 该团队包括项目管理人员、开发者、设计师、营销和通信人员以及主题专家。 社区的参与将为每项决策提供信息:因此请提出问题、提交拉取请求或联系该团队: @@ -81,29 +87,29 @@ Ethereum.org 是一个开源项目,有超过 **12,000** 名贡献者帮助翻 在向 ethereum.org 贡献任何内容或创意时,请仅使用你有权使用的原创作品或内容。 以太坊生态系统内的许多项目都使用开源许可,以便于自由分享信息。 但是,如果你找不到相关信息,请不要尝试将其添加到 ethereum.org。 被视为抄袭的拉取请求都将被拒绝。 -## 新接触开源项目? {#new-to-open-source} +## 新接触开源项目? 开源新手?{#new-to-open-source} -我们的 GitHub 存储库中有一些准入门槛较低的问题,专为刚接触开源设计的开发者设计,我们将这类问题标记为[入门优选问题](https://github.com/ethereum/ethereum-org-website/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)。 +我们的 GitHub 代码库中有一些低门槛的问题,专门为刚接触开源的开发者设计,并被标记为 [good first issue](https://github.com/ethereum/ethereum-org-website/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)。 -## 领取链上成就代币 (OAT) {#oat} +## 领取你的链上成就代币 (OAT) {#oat} -如果你的贡献被合并到 ethereum.org 中,你将有机会在 [Galxe](https://app.galxe.com/quest/ethereumorg) 上领取特殊徽章。 链上成就代币 (OAT) 是你助力改善生态系统的证明。 +如果你的贡献被合并到 ethereum.org,你将有机会在 [Galxe](https://app.galxe.com/quest/ethereumorg) 上领取一个特殊徽章。 链上成就代币 (OAT) 是你助力改善生态系统的证明。 -[关于链上成就代币的更多信息](https://help.galxe.com/en/articles/9645630-create-quest-rewards#h_1c5d63ba03) +[关于 OAT 的更多信息](https://help.galxe.com/en/articles/9645630-create-quest-rewards#h_1c5d63ba03) ### 如何领取 + 1. 加入我们的 [Discord 服务器](https://discord.gg/ethereum-org)。 -2. 在 `#🥇 | proof-of-contribution` 频道中粘贴指向你贡献的链接。 +2. 在 `#🥇 | proof-of-contribution` 频道中粘贴你的贡献链接。 3. 等待我们团队的成员向你发送链上成就代币链接。 4. 领取你的链上成就代币! 你只能使用自已保管的钱包来领取链上成就代币。 请勿使用交易所帐户或你未持有私人密钥的其他帐户,因为这些帐户不允许你访问和管理你的链上成就代币。 -## 领取你的 GitPOAP 徽章 {#claim-gitpoap} +## 领取你的 GitPOAP {#claim-gitpoap} GitPOAP 还将自动表彰你做出的合并贡献,并让你在其平台上单独铸造一枚特别贡献者 POAP 徽章! - ### 如何领取 {#how-to-claim} 1. 访问 [GitPOAP](https://www.gitpoap.io)。 From 0f28fe52fcf10ada71be1379a1732b585e719b82 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:11 -0800 Subject: [PATCH 079/581] update(i18n): public/content/translations/zh/staking/saas/index.md --- .../translations/zh/staking/saas/index.md | 44 +++++++++---------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/public/content/translations/zh/staking/saas/index.md b/public/content/translations/zh/staking/saas/index.md index 12d8f264269..486841eebdc 100644 --- a/public/content/translations/zh/staking/saas/index.md +++ b/public/content/translations/zh/staking/saas/index.md @@ -1,6 +1,6 @@ --- title: 质押即服务 -description: 简要介绍如何开始以太币联合质押 +description: 了解质押即服务 lang: zh template: staking emoji: ":money_with_wings:" @@ -17,19 +17,19 @@ summaryPoints: 质押即服务 (“SaaS") 代表一类质押服务,采用这种服务的用户会存入 32 个以太币用于验证者,但是将节点运营委托给第三方运营商执行。 这个过程通常需要你按引导完成初始设置,包括密钥生成和存款,然后将你的签名密钥上传给运营商。 这项服务将代表你运行验证者,通常按月收费。 -## 为什么需要质押服务? {#why-stake-with-a-service} +## 为什么需要质押服务? 为何要通过服务进行质押{#why-stake-with-a-service} 以太坊协议本身并不支持质押委托,于是这类服务便为了满足这一需求而建。 如果你有 32 个以太币需要质押,但是没有合适的硬件设备,那么质押即服务可以使你在使用运营商硬件设施的同时获得区块奖励。 - - - + + + -## 需考虑事项 {#what-to-consider} +## 应注意事项{#what-to-consider} 为了满足人们质押以太币的需求,质押即服务提供商的数量不断增长,但每位提供商的优势与风险不尽相同。 相比于自行质押,所有质押即服务方案都需要进一步的信任假设。 质押即服务方案可能使用更多代码包装以太坊客户端,而且这些代码未公开且不可审计。 质押即服务还会对网络去中心化造成有害影响。 取决于设置情况,你可能无法控制自己的验证者 - 运营者在使用你的以太币时可能会缺失诚信。 @@ -37,7 +37,7 @@ summaryPoints: -## 探索质押服务提供商 {#saas-providers} +## 探索质押服务提供商{#saas-providers} 以下是一些可用的质押即服务提供商。 你可以利用上述指标来辅助你选择。 @@ -47,49 +47,45 @@ summaryPoints: -请注意支持[客户端多样性](/developers/docs/nodes-and-clients/client-diversity/)的重要性,因为它可以提高网络安全性,并限制你的风险。 “执行客户端多样性”“共识客户端多样性”表明服务可证明其在限制使用主流客户端。 +请注意支持[客户端多样性](/developers/docs/nodes-and-clients/client-diversity/)的重要性,因为这可以提高网络安全性并限制您的风险。 “执行客户端多样性”“共识客户端多样性”能够表明服务可证明其在限制使用主流客户端。 ### 密钥生成器 -想要推荐其他未提到的质押即服务提供商吗? 可以查看我们的[产品上线政策](/contributing/adding-staking-products/),确定你推荐的质押工具是否合适,合适的话,请提交以供审核。 +想要推荐其他未提到的质押即服务提供商吗? 查看我们的[产品上架政策](/contributing/adding-staking-products/),了解您的产品是否合适,并提交审核。 -## 常见问题 {#faq} +## 常见问题{#faq} - + 不同的提供商会有不同的安排,但通常情况下,他们都会指导你设置所需的签名密钥(每 32 个以太币需要一个签名密钥),并将这些密钥上传给你的服务提供商,让他们代表你进行验证。 这些签名密钥本身并没有提现、转帐或者花费你资金的权限。 他们只提供为达成共识而投票的权限,如果投票执行方式不恰当,可能会受到离线处罚或罚没。 - + 由此可见, 每个帐户都由 BLS 签名密钥和 BLS 提款密钥组成。 为了让验证者证明链的状态、参与同步委员会并提出区块建议,签名密钥必须易于验证者客户端访问。 为此签名密钥必须以某种形式与互联网连接,所以它们本质上被认为是“热”密钥。 这是验证者能够参与证明的必要条件,因此,出于安全原因,用于转移或提取资金的密钥是单独分开的。 BLS 提款密钥用于签署一次性信息,声明质押奖励和退出的资金应该转入哪个执行层帐户。 在该信息广播后,不再需要 BLS 提款密钥。 然而,已提取资金的控制权将永久委托给你提供的地址。 因此,你可以设置一个用自己的冷存储保护的提款地址,即使有人控制了你的验证者签名密钥,也可以最大程度降低验证者资金的风险。 更新提款凭证是进行提款的必需步骤\*。 此过程包括使用自己的助记词生成提款密钥。 -确保安全备份该助记词,否则在需要时将无法生成提款密钥。 +请务必安全备份此助记词,否则届时您将无法生成取款密钥。 -\*提供了提款地址和初始存款的质押人不需要设置此项。 如需有关准备验证者方面的支持,请联系你的质押即服务提供商。 - +\*在初始存款时提供了取款地址的质押者无需进行此项设置。 如需有关准备验证者方面的支持,请联系你的质押即服务提供商。 - -2023 年 4 月,上海/卡佩拉升级实现了质押提款功能。 质押人需要提供一个提款地址(如果在初始存款时没有提供),并将开始每隔几天定期自动分发奖励支付。 +\n质押者需要提供取款地址(如果初始存款时没有提供),奖励金将每隔几天定期自动发放。 验证者还能够以验证者身份完全退出,这种情况下,他们剩余的以太币余额将解锁以供提取。 提供执行提款地址并完成退出流程的帐户将在下次验证者扫描时在提供的提款地址收到其全部余额。 -更多关于质押提款的信息 - +关于质押提款的更多信息 - + 使用质押即服务提供商,你需要将节点运营委托给别人。 这伴随着一些你不能控制的节点性能不佳的风险。 如果你的验证者受到罚没,你的验证者余额将因处罚而遭受损失,验证者也将从验证者池中强行移除。 在罚没/退出流程结束后,这些资金将转移到分配给验证者的提款地址。 需要提供一个提款地址才能实现资金转移。 提款地址可能已在初次存款时提供。 如果没有提供,就需要使用验证者提款密钥签署一条声明提款地址的信息。 如果没有提供提款地址,资金将保持锁定状态,直到提供提款地址为止。 -有关任何担保或保险方案的详细信息,以及如何提供提款地址的说明,请联系各质押即服务提供商。 如果你想完全控制你的验证者设置,[请详细了解如何单独质押以太币](/staking/solo/)。 - +有关任何担保或保险方案的详细信息,以及如何提供提款地址的说明,请联系各质押即服务提供商。 如果你想完全控制你的验证者设置,[请详细了解如何单独质押 ETH](/staking/solo/)。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [以太坊质押目录](https://www.staking.directory/) - _Eridian 和 Spacesider_ +- [以太坊质押目录](https://www.staking.directory/) - _Eridian and Spacesider_ - [评估质押服务](https://www.attestant.io/posts/evaluating-staking-services/) - _Jim McDonald 2020_ From 1e45187f0a2c54aa91fe0f71b74b54f618c7960b Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:14 -0800 Subject: [PATCH 080/581] update(i18n): src/intl/zh/page-resources.json --- src/intl/zh/page-resources.json | 97 +++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/intl/zh/page-resources.json diff --git a/src/intl/zh/page-resources.json b/src/intl/zh/page-resources.json new file mode 100644 index 00000000000..64485e04088 --- /dev/null +++ b/src/intl/zh/page-resources.json @@ -0,0 +1,97 @@ +{ + "page-resources-network-title": "网络", + "page-resources-using-title": "使用以太坊", + "page-resources-scaling-title": "以太坊扩容", + "page-resources-resilience-title": "以太坊弹性", + "page-resources-privacy-security-title": "隐私和安全", + "page-resources-network-layer2-title": "第2层以太网网络", + "page-resources-network-layer2-chart-label": "以太坊链上交易费用中位数", + "page-resources-network-layer2-l2beat-description": "L2BEAT的创建是为了给新兴的第二层(L2)技术提供透明和可验证的见解,这些技术符合以滚动为中心的以太坊扩展路线图,旨在扩展以太坊。", + "page-resources-network-layer2-growthepie-description": "growthepie 将以太坊主网和二层网络的使用和增长情况进行可视化。提供实时费用、经济数据、应用程序吸引力、稳定币数据、数据驱动的文章等等。", + "page-resources-block-explorers-title": "区块浏览器", + "page-resources-block-explorers-chart-label": "下一区块时间", + "page-resources-block-explorers-blockscout-description": "开源区块浏览器由Blockscout提供完整的区块链数据和以太坊网络api。", + "page-resources-block-explorers-etherscan-description": "Etherscan是以太坊的块浏览器和分析平台,是一个分散的智能合约平台。", + "page-resources-block-explorers-beaconchain-description": "显示以太坊主网的开源以太坊浏览器。", + "page-resources-block-explorers-txcity-description": "一个有趣的实时以太坊区块可视化工具。", + "page-resources-block-explorers-panda-ops-description": "以太坊信标链区块生产的实时仪表盘,由 ethPandaOps 提供。", + "page-resources-block-explorers-otterscan-description": "一款速度极快的本地自托管以太坊区块浏览器", + "page-resources-eth-asset-title": "以太坊资产", + "page-resources-eth-asset-etherealize-description": "以太坊是全球使用中最大、最安全和最开放的区块链。同时以太坊也适用于商业领域。", + "page-resources-eth-asset-ultrasound-description": "Ultra sound money 是一个以太坊社区创造的加密文化概念(meme),指通过通缩机制(EIP-1559 燃烧手续费 + POS 质押锁定)使 ETH 供应量持续减少。", + "page-resources-eth-asset-ethismoney-description": "一系列狂热者持有、质押以太坊,并把它当作货币来宣传。", + "page-resources-gas-title": "燃料", + "page-resources-gas-etherscan-description": "追踪 gas 的所有关键绩效指标(KPI)。", + "page-resources-gas-ethgastracker-description": "监控整个以太坊主网(L1)和 L2 的 gas 价格。", + "page-resources-gas-blocknative-description": "Web3最准确的燃料费用预测。", + "page-resources-gas-gasfees-description": "以太坊网络 gas 成本监控系统。", + "page-resources-defi-title": "去中心化金融 (DeFi)", + "page-resources-defi-defillama-description": "DefiLlama 是 DeFi(去中心化金融)领域最大的 TVL 聚合器。", + "page-resources-defi-eigenphi-description": "想了解 DeFi 交易和交易策略吗?", + "page-resources-defi-defiscan-description": "关于 DeFi 成熟度与风险的可验证洞察。", + "page-resources-stablecoins-title": "稳定币", + "page-resources-stablecoins-stablecoinswtf-description": "本站专为加密 degens 科普稳定币知识而生。", + "page-resources-stablecoins-visa-description": "Visa 链上分析仪表盘(The Visa Onchain Analytics Dashboard)实时追踪与法币挂钩的稳定币在全球公共区块链间的流动轨迹。", + "page-resources-stablecoins-rwa-description": "探索加密资产锚定与实物资产支撑稳定币的链上动态。", + "page-resources-nft-title": "非同质化代币", + "page-resources-nft-etherscan-description": "头部 NFT 合约。", + "page-resources-nft-nftgo-description": "全球 NFT 市场实时数据。", + "page-resources-applications-title": "应用", + "page-resources-applications-ecosystem-description": "深入探索以太坊生态系统,掌握数百款热门应用与工具的操作。", + "page-resources-applications-farcaster-description": "来自 Farcaster 使用的数据。", + "page-resources-applications-dappradar-description": "探索顶尖区块链去中心化应用、NFT、链游、DeFi 项目、代币及空投活动。追踪实时排行榜,发掘市场深度洞见,捕捉热门趋势项目,通过全球 DApp 聚合平台解锁专属奖励。", + "page-resources-adoption-title": "以太坊的采用率", + "page-resources-adoption-ethereumadoption-description": "一份基于以太坊进行构建的知名机构/实体清单。", + "page-resources-adoption-cryptowerk-description": "基于 Cryptwerk 数据库的以太坊采用情况分析——地图、国家、公司、企业、类别、评级。", + "page-resources-adoption-reserves-description": "以太坊战略储备计划的仪表盘。", + "page-resources-roadmap-title": "以太坊路线图", + "page-resources-roadmap-metric-label": "最新升级", + "page-resources-roadmap-ethroadmap-description": "以太坊路线图及下次网络升级详解。", + "page-resources-blobs-title": "Ethereum Blobs", + "page-resources-blobs-metric-total-label": "Blob 总数", + "page-resources-blobs-metric-fee-label": "平均 Blob 费用", + "page-resources-blobs-blobscan-description": "全方位Blob扫面工具。", + "page-resources-blobs-blobsguru-description": "以太坊 Blob 浏览器:分析 L2 交易与 EIP-4844 数据。", + "page-resources-nodes-title": "节点", + "page-resources-nodes-nodewatch-description": "节点概览。", + "page-resources-nodes-ethernodes-description": "以太坊主网统计数据。", + "page-resources-nodes-etherscan-description": "日常。", + "page-resources-nodes-luckystaker-description": "每日提案获得块的概率。", + "page-resources-nodes-pectrified-description": "以太坊 Pectra 分叉的验证者统计数据。", + "page-resources-nodes-validatorqueue-description": "显示以太坊验证者进出队列及预估等待时间的仪表盘。", + "page-resources-network-resilience-title": "网络适应", + "page-resources-network-resilience-neutralitywatch-description": "以太坊可用性监控。", + "page-resources-network-resilience-sunshine-description": "一个用于衡量以太坊去中心化健康状况的仪表盘。", + "page-resources-network-resilience-clientdiversity-description": "通过使用非主流客户端来增强以太坊的韧性。", + "page-resources-network-resilience-supermajority-description": "以太坊执行层的绝大多数客户风险,特别是质押服务的客户端使用风险。", + "page-resources-attestations-title": "认证", + "page-resources-attestations-eas-description": "EAS 使任何人都能在以太坊上创建和验证链上和链下证明。", + "page-resources-relays-title": "中继器", + "page-resources-relays-beaconchain-description": "验证者可以使用中继器(relay)将区块生产外包给专门从事额外收益的实体。", + "page-resources-relays-ratednetwork-description": "以太坊网络的 MEV 中继市场份额、中继总价值、每区块价值及其他相关统计数据。", + "page-resources-relays-relayscan-description": "MEV-Boost 数据分析。", + "page-resources-mev-title": "最大可提取价值", + "page-resources-mev-mevboost-description": "本站专为加密 degens 科普稳定币知识而生。", + "page-resources-mev-mevwatch-description": "部分 MEV-Boost 中继器受 OFAC 监管,会审查某些交易。使用此工具观察其对以太坊区块的影响。", + "page-resources-wallets-title": "钱包", + "page-resources-wallets-wallet-beat-description": "一个简洁的以太坊钱包仪表盘与汇总工具。", + "page-resources-wallets-bundlebear-description": "ERC-4337 和 EIP-7702 智能账户的仪表盘和分析。", + "page-resources-zk-adoption-title": "零知识证明(ZK)技术采用情况", + "page-resources-zk-adoption-ethproofs-description": "用于扩展以太坊的 SNARK 技术。", + "page-resources-zk-adoption-l2beat-description": "L2BEAT 的 ZK Catalog 是一个社区驱动的资源,提供有关各种区块链项目所使用的 ZK 技术的详细见解。", + "page-resources-mempool-title": "内存池", + "page-resources-mempool-mempool-description": "关于以太坊内存池的可视化比较示例。", + "page-resources-meta-title": "以太坊资源仪表盘", + "page-resources-meta-description": "探索由社区精心整理的资源列表,随时了解以太坊生态系统的最新动态。", + "page-resources-hero-title": "资源", + "page-resources-hero-header": "以太坊仪表盘", + "page-resources-hero-description": "探索由社区精心整理的资源列表,随时了解以太坊生态系统的最新动态。", + "page-resources-find-more": "更多精彩内容,请访问", + "page-resources-contribute-title": "贡献", + "page-resources-contribute-description": "此仪表板是一个频繁更新的动态页面,以协助寻找最佳资源,全面概览以太坊生态系统。", + "page-resources-suggest-resource": "推荐资源", + "page-resources-found-bug": "遇到了Bug", + "page-resources-whats-on-this-page": "本页面内容", + "page-resources-banner-notification-message": "资源仪表盘全新上线!", + "page-resources-share-feedback": "请与我们分享您的反馈意见 🙏" +} From bd872110671b207b901378703475928feab6e3b4 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:17 -0800 Subject: [PATCH 081/581] update(i18n): public/content/translations/zh/what-are-apps/index.md --- .../translations/zh/what-are-apps/index.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 public/content/translations/zh/what-are-apps/index.md diff --git a/public/content/translations/zh/what-are-apps/index.md b/public/content/translations/zh/what-are-apps/index.md new file mode 100644 index 00000000000..8bb9c6c0b49 --- /dev/null +++ b/public/content/translations/zh/what-are-apps/index.md @@ -0,0 +1,81 @@ +--- +title: 以太坊应用程序 +metaTitle: 以太坊应用 | 以太坊上的去中心化应用程序 +description: 以太坊的应用是免费的,全球化的,并且使用的是公共区块链而不是私人公司服务器。 这意味着你可以每一个项目使用相同的账户并保持你的私密性。 +lang: zh +template: use-cases +emoji: ":handshake:" +sidebarDepth: 2 +showDropdown: false +image: /images/doge-computer.png +summary: 以太坊的应用是免费的,全球化的,并且使用的是公共区块链而不是私人公司服务器。 这意味着你可以每一个项目使用相同的账户并保持你的私密性。 +--- + +## 拥有强大能力的应用程序{#apps-with-superpowers} + +以太坊的应用可能感觉像常规的应用程序。 但是在幕后他们拥有一些特殊的特质。 + +一旦一个应用在以太坊区块链上架,它将变得不可阻挡。 这是因为以太坊网络分散在世界各地数以千计的计算机上。 没有人可以关闭以太坊上的应用,因为没有单一的服务器可作为目标。 以太坊也是中立的,所以世界各地的任何人都可以使用它,甚至连接到它并在它的基础上进行修改。 + +## 什么是去中心化应用? {#what-is-a-dapp} + +以太坊应用的逻辑在以太坊区块链上运行而不是在中心化的服务器上。 这就是为什么它常常会被叫做去中心化应用或者简称为dapps。 + + + + + + + +## 为什么这很重要{#why-does-this-matter} + +以太坊应用可以做一些传统应用无法做到的事情。 像借钱给一个完全陌生的人,且可以保证能拿回本金和收益。 不必向类似律师的“值得信赖的”中介付费来处理交易。 + +有各种各样的应用:游戏,金融,工作,消息传递,储存等等。 使用大部分应用时,你不会受限于广告或访问限制。 + +您只需一个以太坊钱包和少量的以太币,就可开始使用任何以太坊应用。 + +## 它是如何工作的{#how-does-it-work} + +应用程序由智能合约提供支持——位于以太坊区块链上的代码。 不像传统应用程序,他们不需要公司去运行他们。 + +| 特征 | 传统应用 | 以太坊应用 | +| ----- | ------- | -------- | +| 控制权 | 一个公司 | 没有人 | +| 运行方 | 私人公司服务器 | 以太坊公有区块链 | +| 能否被审查 | 是 | 否 | +| 数据拥有权 | 通常不是你个人 | 你拥有自己的数据 | + + + +
+ +![](./developers-eth-blocks.png) + +
+ +## 以太坊应用程序就像乐高{#ethereum-apps-are-like-legos} + +当应用程序建立在以太坊上时,他们就都是兼容的。 一个应用的代币,也可以用在另一个完全不同的应用上。 这就像能把你的推文发到你的脸书墙上一样。 事实上,您通常可以在不同的以太坊应用上重复使用相同的配置文件,而不需要在每个地方单独注册。 + + + +## 扩展阅读{#further-reading} + +- [以太坊初学者指南](/what-is-ethereum) +- [什么是智能合约](/developers/docs/smart-contracts/) +- [Dapp技术文档](/developers/docs/dapps/) + +## 常见问题{#faq} + + +

Dapp代表去中心化应用。 那些是建立在以太坊等区块链网络上的应用程序。 他们被称为去中心化的,因为底层网络是去中心化的。

+
+ + +

有一些应用确实可以让你交易或者买加密代币,但并不是全部应用都是用来做这个的。 若您第一次打算购买 ETH,请访问[获取ETH](/get-eth)。

+
+ + +

加密钱包可以让你持有你的代币并管理你的以太坊账户。 有许多好用的钱包,每一个都有不同的用途。 要了解哪种钱包最适合您,请访问我们的[钱包列表](/wallets/find-wallet)。

+
\ No newline at end of file From 35ffe0c03b625b6bbb0ea35644d218b3fb0296d4 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:20 -0800 Subject: [PATCH 082/581] update(i18n): public/content/translations/zh/roadmap/merge/index.md --- .../translations/zh/roadmap/merge/index.md | 99 +++++++++---------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/public/content/translations/zh/roadmap/merge/index.md b/public/content/translations/zh/roadmap/merge/index.md index 95924cb71e1..ad0758e4204 100644 --- a/public/content/translations/zh/roadmap/merge/index.md +++ b/public/content/translations/zh/roadmap/merge/index.md @@ -17,17 +17,17 @@ summaryPoint4: 合并将使以太坊的能源消耗减少大约 99.95%。 ## 什么是合并? {#what-is-the-merge} -合并是指以太坊的原有执行层(从[创世块](/ethereum-forks/#frontier)开始就一直存在的主网)加入其新的权益证明共识层,即信标链。 合并摒弃了消耗大量能源的挖矿,而是通过质押以太币来保护网络的安全。 这是实现以太坊愿景 — 可扩展性、安全性和可持续性更强 — 这一过程中真正激动人心的一步。 +合并是以太坊原有的执行层(自[创世](/ethereum-forks/#frontier)以来一直存在的主网)与新的权益证明共识层(信标链)的结合。 合并摒弃了消耗大量能源的挖矿,而是通过质押以太币来保护网络的安全。 这是实现以太坊愿景 — 可扩展性、安全性和可持续性更强 — 这一过程中真正激动人心的一步。 -[信标链](/roadmap/beacon-chain/)最初是与[主网](/glossary/#mainnet)分开上线的。 以太坊主网(所有帐户、余额、智能合约和区块链状态)仍继续由[工作量证明](/developers/docs/consensus-mechanisms/pow/)保护,即便与此同时,与之一起运行的信标链采用[权益证明](/developers/docs/consensus-mechanisms/pos/)。 合并是指这两个系统最终整合在一起之时,而工作量证明被权益证明永久取代。 +最初,[信标链](/roadmap/beacon-chain/)与[主网](/glossary/#mainnet)是分开交付的。 以太坊主网(包括其所有的帐户、余额、智能合约和区块链状态)继续由[工作量证明](/developers/docs/consensus-mechanisms/pow/)机制保障安全,而信标链则使用[权益证明](/developers/docs/consensus-mechanisms/pos/)机制并行运行。 合并是指这两个系统最终整合在一起之时,而工作量证明被权益证明永久取代。 -想象一下,以太坊是一艘还没有完全准备好进行星际航行的就已经起飞的宇宙飞船。 借助信标链,社区构建了新的引擎和坚固的外壳。 经过大量测试,是时候在飞行途中通过“热插拔”用新引擎更换旧引擎了。 将新的、更高效引擎装入现有飞船后,飞船就能够开始许多光年的航行并占领整个宇宙。 +想象一下,以太坊是一艘还没有完全准备好进行星际航行的就已经起飞的宇宙飞船。 借助信标链,社区构建了新的引擎和坚固的外壳。 经过大量测试,是时候在飞行途中通过“热插拔”用新引擎更换旧引擎了。 这次合并将新的、更高效的引擎并入现有的飞船,使其能够跨越光年,探索宇宙。 ## 与主网合并 {#merging-with-mainnet} -直到合并之前,工作量证明一直保护着以太坊主网的安全。 这使得我们都习惯的以太坊区块链在 2015 年 7 月诞生,并且具有我们熟悉的所有功能 — 交易、智能合约、帐户等等。 +直到合并之前,工作量证明一直保护着以太坊主网的安全。 这才让我们所熟悉的以太坊区块链于 2015 年 7 月诞生,并具备了所有我们熟知的功能——交易、智能合约、帐户等。 纵观以太坊的历史,开发人员一直在为从工作量证明到权益证明的最终过渡做准备。 信标链于 2020 年 12 月 1 日创建,它作为独立的区块链与主网一起运行。 @@ -40,29 +40,29 @@ summaryPoint4: 合并将使以太坊的能源消耗减少大约 99.95%。 -这种向权益证明的过渡改变了以太币的发行方式。 了解有关[合并前后以太币发行的更多信息](/roadmap/merge/issuance/)。 +向权益证明的过渡改变了以太币的发行方式。 了解更多关于[合并前后的以太币发行](/roadmap/merge/issuance/)的信息。 -### 用户与持有者 {#users-holders} +### 用户和持有者 {#users-holders} **对于持有者/用户而言,合并不会带来任何变化。** -_再次提醒:_作为以太币或以太坊上任何其他数字资产的用户或持有者,以及非节点运营的质押人,**不需要在合并之前对你的资金或钱包做任何事情以加入合并。**以太币还是以太币。 没有像“旧以太币”/“新以太币”或“以太坊 1”/“以太坊 2”这样说法,钱包在合并前后的工作方式一样 — 告诉你其他说法人很可能是骗子。 +_这一点值得重复_:作为 ETH 或以太坊上任何其他数字资产的用户或持有者,以及非节点运营的质押者,\*\*你无需对你的资金或钱包进行任何操作来应对合并。\*\*ETH 仍然是 ETH。 没有像“旧以太币”/“新以太币”或“以太坊 1”/“以太坊 2”这样说法,钱包在合并前后的工作方式一样 — 告诉你其他说法人很可能是骗子。 -虽然权益证明替代了工作量证明,但是以太坊自创世块以来的全部历史记录都完整保留且没有改变。 合并前你钱包里的所有资金在合并后仍可使用。 **你不需要采取任何行动来升级。** +虽然权益证明替代了工作量证明,但是以太坊自创世块以来的全部历史记录都完整保留且没有改变。 合并前你钱包里的所有资金在合并后仍可使用。 **你无需进行任何操作来完成升级。** -[有关以太坊安全的更多内容](/security/#eth2-token-scam) +[关于以太坊安全的更多信息](/security/#eth2-token-scam) -### 节点运营商与去中心化应用程序开发者 {#node-operators-dapp-developers} +### 节点运营商和去中心化应用程序开发者 {#node-operators-dapp-developers} -主要操作项目包括: +关键操作项目包括: 1. 同时运行共识层客户端和执行层客户端;合并之后,获取执行数据的第三方端点将不可用。 2. 使用共享 JWT 密钥对执行层和共识层客户端进行身份验证,以便它们能够安全地通信。 @@ -70,11 +70,10 @@ id="staking-node-operators"> 如果没有完成上述操作的前两项,会导致你的节点被视为“离线”,直到这两层都完成同步和身份验证。 -不设置“费用接收人”将仍然允许验证者像往常一样运行,但你将无法获得交易费小费和矿工可提取价值,这些你原本可以在你的验证者提出的区块中赢得。 - +不设置“费用接收人”将仍然允许验证者像往常一样运行,但你将无法获得交易费小费和矿工可提取价值,这些你原本可以在你的验证者提出的区块中赢得。
@@ -82,17 +81,17 @@ id="node-operators"> 因此,一个完整的以太坊节点现在同时需要执行层客户端和共识层客户端。 这两种客户端使用一个新的引擎应用程序接口协同工作。 该引擎应用程序接口需要使用 JWT 密钥进行身份验证,密钥提供给两种客户端以允许安全通信。 -主要行动项目包括: +关键操作项目包括: -- 除了安装执行客户端外,还需要安装共识客户端 -- 使用共享的 JWT 秘钥对执行客户端和共识客户端进行身份验证,以便它们可以安全地彼此通信。 +- 除了执行客户端之外,再安装一个共识客户端 +- 使用共享的 JWT 密钥对执行客户端和共识客户端进行身份验证,以便它们之间能够安全地通信。 如果不能及时完成上述项目,在合并之后你的节点会显示为“离线”,直到两层都同步并通过身份验证。 @@ -110,82 +109,82 @@ id="developers"> -## 合并和能源消耗 {#merge-and-energy} +## 合并与能源消耗 {#merge-and-energy} -合并标志着以太坊工作量证明的终结,从此以太坊进入一个可持续性更强、更加环保的时代。 以太坊的能耗预计会下降 99.95%,这使得以太坊成为一个绿色环保的区块链。 了解有关[以太坊能源消耗](/energy-consumption/)的更多信息。 +合并标志着以太坊工作量证明的终结,从此以太坊进入一个可持续性更强、更加环保的时代。 以太坊的能耗预计会下降 99.95%,这使得以太坊成为一个绿色环保的区块链。 了解更多关于[以太坊能源消耗](/energy-consumption/)的信息。 ## 合并与扩容 {#merge-and-scaling} -合并还为工作量证明下无法实现的进一步可扩展性升级奠定了基础,使以太坊距离实现[以太坊愿景](/roadmap/vision/)中概述的全面可扩展、安全性和可持续性更近一步。 +合并也为在工作量证明机制下无法进行的进一步可扩展性升级奠定了基础,使以太坊向着[其路线图](/roadmap/)所规划的完全可扩展性、安全性和可持续性目标更近了一步。 -## 合并的误区 {#misconceptions} +## 关于合并的误解 {#misconceptions} +title="误解:"运行一个节点需要质押 32 ETH。"" +contentPreview="错误。 任何人都可以自由地同步他们自己验证的以太坊副本(即,运行一个节点)。 无论是在合并前、合并后还是在任何时候,都不需要 ETH。"> 以太坊节点有两种类型:可以提议区块的节点和不能提议区块的节点。 可以提议区块的节点只占以太坊节点总数的一小部分。 这类节点包括工作量证明 (PoW) 下的挖矿节点和权益证明 (PoS) 下的验证者节点。 该类别需要投入经济资源(例如工作量证明中的图形处理单元哈希算力或权益证明中的质押以太币),以换取有时提出下一个区块并获得协议奖励的能力。 -网络上的其他节点(例如大部分节点)不需要投入任何经济资源,只需一台有着 1 到 2 TB的可用存储空间并且可以连接互联网的消费级计算机即可。 这些节点不提出区块,但它们仍然在网络安全中扮演着关键的角色,通过监听新的区块,在区块到达时根据网络共识规则验证它们的有效性,并对所有的区块产出负责任。 如果区块是有效的,节点将继续通过网络传播它。 如果区块出于任何原因无效,节点软件将会忽略它将他视为无效区块并停止传播。 +网络上的其他节点(即大多数节点)不需要投入任何经济资源,只需要一台具有 1-2 TB 可用存储空间和互联网连接的消费级计算机。 这些节点不提出区块,但它们仍然在网络安全中扮演着关键的角色,通过监听新的区块,在区块到达时根据网络共识规则验证它们的有效性,并对所有的区块产出负责任。 如果区块是有效的,节点将继续通过网络传播它。 如果区块出于任何原因无效,节点软件将会忽略它将他视为无效区块并停止传播。 在任一共识机制(工作量证明或权益证明)下,任何人都可以运行非区块生产节点;我们强烈建议所有有能力的用户都这样做。 运行一个节点对以太坊非常有价值,并为任何运行节点的个人提供额外的好处,如改进的安全性、隐私性和抗审查性。 让任何人都拥有运行自己的节点的能力对于维持以太坊网络的去中心化极其重要。 -[更多关于运行你自己的节点的信息](/run-a-node/) +[有关运行自己节点的更多信息](/运行节点/) +title="误解:"合并未能降低燃料费。"" +contentPreview="错误。 合并是共识机制的改变,而不是网络容量的扩张,其目的从来不是为了降低燃料费。"> 燃料费用是网络需求受限于网络容量的产物。 合并弃用了工作量证明,过渡到权益证明共识机制,但这并不会明显改变直接影响网络容量和吞吐量的任何参数。 -根据以卷叠为中心的路线图,工作重点是扩展用户在[二层网络](/layer-2/)的活动,同时使一层主网成为安全的去中心化结算层,针对卷叠数据存储进行优化,帮助迅速降低卷叠交易费用。 转变成权益证明机制是实现这一点的关键先导步骤。 [更多关于燃料和费用的信息。](/developers/docs/gas/) +根据以卷叠为中心的路线图,工作重点是扩展用户在[二层网络](/layer-2/)的活动,同时使一层主网成为安全的去中心化结算层,针对卷叠数据存储进行优化,帮助迅速降低卷叠交易费用。 转变成权益证明机制是实现这一点的关键先导步骤。 [有关燃料和费用的更多信息。](/developers/docs/gas/) -交易的“速度”可用多种方式衡量,既可以是入块时间,也可以是最终确定的时间。 这些变化都是很轻微的,用户不会注意到 +title="误解:"合并大幅加快了交易速度。"" +contentPreview="错误。 虽然存在一些微小的变化,但现在 Layer 1 上的交易速度与合并前基本相同。"> +交易的“速度”可以通过几种方式来衡量,包括交易被打包到区块中的时间以及交易最终确认的时间。 这些变化都是很轻微的,用户不会注意到 -以前,工作量证明机制的目标是每 13.3 秒产生一个新的区块。 在权益证明机制下,时隙每 12 秒精确出现一次,每个时隙都是验证者发布区块的机会。 大多数时隙都有区块产出,但不一定全部都有(即验证者离线)。 在权益证明机制下,区块的产生频率比工作量证明下提升了约 10%。 这是一个相当微不足道的变化,用户不太可能注意到。 +以前,工作量证明机制的目标是每 13.3 秒产生一个新的区块。 在权益证明机制下,时隙每 12 秒精确出现一次,每个时隙都是验证者发布区块的机会。 大多数时隙都有区块,但不一定全部都有(例如,某个验证者离线)。 在权益证明机制下,区块的产生频率比工作量证明下提升了约 10%。 这是一个相当微不足道的变化,用户不太可能注意到。 -权益证明引入了以前不存在的交易最终确定概念。 在工作量证明机制下,回滚一个区块的难度将随着在它之后因交易产生的区块数目的增加而呈指数增长,但这个难度却永远不会归零。 在权益证明机制下,区块打包在一起放入由验证者投票的时段中,时段为 6.4 分钟的时间跨度,包含 32 次出块机会。 当一个时段结束时,验证者投票来决定是否认为该时段“合理”。 如果验证者同意证明该时段的合理性,它将在下一个时段中最终确定。 撤销最终确定的交易在经济上是不可行的,因为它需要获得并销毁超过 1/3 的质押以太币总量。 +权益证明引入了以前不存在的交易最终确定概念。 在工作量证明机制下,回滚一个区块的难度将随着在它之后因交易产生的区块数目的增加而呈指数增长,但这个难度却永远不会归零。 在权益证明机制下,区块打包在一起放入由验证者投票的时段中,时段为 6.4 分钟的时间跨度,包含 32 次出块机会。 当一个时段结束时,验证者投票来决定是否认为该时段“合理”。 如果验证者同意证明该时段的合理性,它将在下一个时段中最终确定。 撤销最终确定的交易在经济上是不可行的,因为它需要获得并销毁超过总质押 ETH 的三分之一。 在刚刚合并后,质押者只能获得因提议区块而赚取的小费和最大可提取价值。 这些奖励会被记入由验证者(称为费用接收者)控制的非质押帐户,并可以立即获得。 这些奖励与因履行验证者职责而获得的协议奖励区分开。 在上海/卡佩拉网络升级后,质押者现在可以指定一个提款地址,开始接收自动支付的任何超额质押余额(协议奖励中超过 32 以太币的部分)。 这次升级还使验证者可以在退出网络时解锁并收回全部余额。 -[更多关于质押提款的信息](/staking/withdrawals/) +[关于质押提款的更多信息](/staking/withdrawals/) -上海/卡佩拉升级启用提款功能后,我们鼓励所有验证者将超过 32 以太币的质押余额提取出来,因为这些资金不会增加收益并且不提取还会被锁定。 根据年化利率(由质押的以太币总量决定),验证者可能会退出以提取他们的全部余额,或者使用他们的奖励增加质押,以赚取更多收益。 +title="误解:"既然合并已经完成,并且提款也已启用,质押者就可以一次性全部退出。"" +contentPreview="错误。 出于安全原因,验证者的退出受到速率限制。"> +由于上海/卡佩拉升级启用了提款,验证者有动机提取超过 32 ETH 的质押余额,因为这些资金不会增加收益,否则将被锁定。 根据年化利率(由质押的以太币总量决定),验证者可能会退出以提取他们的全部余额,或者使用他们的奖励增加质押,以赚取更多收益。 这里有一项重要限制,协议对验证者的退出速度设置了限制,每个时段只允许退出一定数量的验证者(每 6.4 分钟退出 1 个)。 这一限制会根据活跃验证者的数量浮动,但每天可以退出网络的验证者数量为质押以太币总数的大约 0.33%。 这样可以防止质押资金大规模流出。 另外,还可以防止掌握一大部分质押以太币总量的潜在攻击者进行可遭致罚没的行为,然后在同一时段、协议能够执行罚没之前退出/提取违规所得的所有验证者余额。 -以太坊故意将年化利率设置为动态,以便市场上的质押人权衡他们愿意为保护网络付出多少资金。 如果利率过低,验证者将按照协议限制的速度退出。 这样会逐渐提高所有留下来的验证者的年化利率,从而吸引新的质押人加入或者退出的质押人回归。 - +以太坊故意将年化利率设置为动态,以便市场上的质押人权衡他们愿意为保护网络付出多少资金。 如果利率过低,验证者将按照协议限制的速度退出。 这样会逐渐提高所有留下来的验证者的年化利率,从而吸引新的质押人加入或者退出的质押人回归。
## “以太坊 2”发生了什么? {#eth2} -“以太坊 2”一词已弃用。 在将“以太坊 1”和“以太坊 2”合并为一条链之后,将不再需要区分两个不同 的以太坊网络;只有以太坊。 +“以太坊 2”一词已弃用。 在将“以太坊 1”和“以太坊 2”合并为一条链之后,将不再需要区分两个不同 +的以太坊网络;只有以太坊。 为了减少混乱,社区更新了这些条款: @@ -194,15 +193,15 @@ contentPreview="False. Validator exits are rate limited for security reasons."> 这些术语的更新仅会改变命名约定;不会改变以太坊的目标及路线图。 -[了解有关“以太坊 2”重命名的更多信息](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) +[了解更多关于“Eth2”重命名的信息](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) -## 升级间的关系 {#relationship-between-upgrades} +## 升级之间的关系 {#relationship-between-upgrades} -以太坊所有升级都存在一些关联。 因此,让我们回顾一下合并与其他升级的关系。 +以太坊的所有升级都存在一些关联。 因此,让我们回顾一下合并与其他升级的关系。 ### 合并与信标链 {#merge-and-beacon-chain} -合并表示正式采用信标链作为原有主网执行层的新共识层。 合并之后,将分配验证者以保护以太坊主网的安全,[工作量证明](/developers/docs/consensus-mechanisms/pow/)机制下的挖矿将不再是有效的区块生产方式。 +合并表示正式采用信标链作为原有主网执行层的新共识层。 自合并以来,验证者被指派来保护以太坊主网的安全,基于[工作量证明](/developers/docs/consensus-mechanisms/pow/)的挖矿不再是有效的区块生产方式。 相反,区块由验证节点提出,验证节点质押以太币以获得参与共识的权利。 这些升级为未来的可扩展性升级(包括分片)奠定了基础。 @@ -214,11 +213,11 @@ contentPreview="False. Validator exits are rate limited for security reasons."> 为了简化并确保顺利过渡到权益证明,合并升级没有包括某些预期的功能,如提取质押以太币的功能。 该功能是通过上海/卡佩拉升级单独启用的。 -如果感兴趣,请参阅 Vitalik 在 2021 年 4 月的 ETHGlobal 活动中发表的演讲“[合并后会发生什么](https://youtu.be/7ggwLccuN5s?t=101)”,了解更多信息。 +感兴趣的读者可以观看 Vitalik 在 2021 年 4 月 ETHGlobal 活动上发表的 [合并后会发生什么](https://youtu.be/7ggwLccuN5s?t=101) 演讲,了解更多信息。 ### 合并与分片 {#merge-and-data-sharding} -最初的计划是在合并之前进行分片,以解决可扩展性问题。 然而,随着[二层网络扩容解决方案](/layer-2/)方兴未艾,工作重点已经变成首先从工作量证明过渡到权益证明。 +最初的计划是在合并之前进行分片,以解决可扩展性问题。 然而,随着[二层网络扩容解决方案](/layer-2/)的蓬勃发展,优先级转变为首先将工作量证明转换为权益证明。 分片计划正在迅速发展,但随着扩展交易执行的二层网络技术的兴起和成功,分片计划已变为寻找最佳的负载分配方式,来存储来自卷叠合约中的压缩调用数据,这使得网络容量呈指数级增长。 如果不先过渡到权益证明,这是不可能的。 @@ -226,7 +225,7 @@ contentPreview="False. Validator exits are rate limited for security reasons."> 分片
-## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} From efcf9fad57107c9df53305c8e38aa7f113e3a931 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:23 -0800 Subject: [PATCH 083/581] update(i18n): public/content/translations/zh/staking/pools/index.md --- .../translations/zh/staking/pools/index.md | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/public/content/translations/zh/staking/pools/index.md b/public/content/translations/zh/staking/pools/index.md index 6748a44fb09..6e83bf5219b 100644 --- a/public/content/translations/zh/staking/pools/index.md +++ b/public/content/translations/zh/staking/pools/index.md @@ -1,6 +1,6 @@ --- title: 联合质押 -description: 简要介绍如何开始以太币联合质押 +description: 了解质押池 lang: zh template: staking emoji: ":money_with_wings:" @@ -17,21 +17,21 @@ summaryPoints: 激活一组验证者密钥需要 32 个以太币,而质押池这种协作方式使拥有少量以太币的人能够满足这一条件。 协议本身并不支持联合功能,因此需要单独创建解决方案来满足这一需求。 -一些资金池使用智能合约运行,资金会存入一个合约中,该合约以去信任的方式管理和跟踪你的质押,并向你发放代表该价值的代币。 其他资金池不涉及智能合约,而是在链下促成。 +一些资金池使用智能合约运行,资金会存入一个合约中,该合约以去信任的方式管理和跟踪你的质押,并向你发放代表该价值的代币。 其他资金池不涉及智能合约,而是在链下调解。 -## 为什么要联合质押? {#why-stake-with-a-pool} +## 为什么要联合质押? 为什么要通过质押池进行质押?{#why-stake-with-a-pool} -除了我们在[质押简介](/staking/)中概述的好处之外,联合质押还有许多独有益处。 +除了我们在[质押简介](/staking/)中概述的好处之外,通过质押池进行质押还具有许多独特的优势。 - - - + + + -## 需考虑事项 {#what-to-consider} +## 应注意事项{#what-to-consider} 联合质押和委托质押并未得到以太坊的原生支持,但是为满足用户质押少于 32 个以太币的需求,越来越多的方案已经开始建立。 @@ -39,13 +39,13 @@ summaryPoints: 然而,这些被质押的以太币往往会导致类似垄断的行为 — 大量质押的以太币最终处于少数中心化组织的控制之下,而非散布于许多独立的个人手中。 这就为审查或价值提取创造了条件。 质押的黄金标准应该始终是尽可能在自己的硬件上运行验证者的个人。 -[更多关于质押代币相关风险的信息](https://notes.ethereum.org/@djrtwo/risks-of-lsd)。 +[关于质押代币风险的更多信息](https://notes.ethereum.org/@djrtwo/risks-of-lsd)。 下面使用属性指标来表示所列质押池可能具有的显著优势或劣势。 选择要加入的池时,请使用本节作为参考,了解我们如何定义这些属性。 -## 探索质押池 {#explore-staking-pools} +## 浏览质押池{#explore-staking-pools} 有多种方案可帮助你进行设置。 上述指标可引导你了解如何使用下方的工具。 @@ -53,34 +53,32 @@ summaryPoints: -请注意,选择重视[客户端多样性](/developers/docs/nodes-and-clients/client-diversity/)的服务很重要,因为这样可以提高网络安全性,还可以限制你的风险。 “执行客户端多样性”“共识客户端多样性”表明服务可证明其在限制使用主流客户端。 +请注意,选择重视[客户端多样性](/developers/docs/nodes-and-clients/client-diversity/)的服务非常重要,因为这可以提高网络安全性并限制您的风险。 “执行客户端多样性”“共识客户端多样性”能够表明服务可证明其在限制使用主流客户端。 -想要推荐其他未提到的质押工具吗? 可以查看我们的[产品上线政策](/contributing/adding-staking-products/),确定你推荐的质押工具是否合适,合适的话,请提交以供审核。 +想要推荐其他未提到的质押工具吗? 查看我们的[产品上架政策](/contributing/adding-staking-products/),了解您的产品是否合适,并提交审核。 -## 常见问题 {#faq} +## 常见问题{#faq} - + 通常,ERC-20 质押代币会发行给质押人,代表其质押以太币的价值以及奖励。 请记住,不同资金池向用户发放质押奖励的方法也略有不同,但主题却是相同的。 - + 现在!马上! 上海/卡佩拉网络升级发生在 2023 年 4 月,并引入了质押提款。 支持质押池的验证者帐户现在能够退出并将以太币提取到他们指定的提款地址。 这样你便能够赎回自己那部分质押的底层以太币。 请咨询你的提供商,了解他们如何支持此功能。 或者,使用 ERC-20 质押代币的资金池允许用户在公开市场上交易该代币,从而使你能够出售你的质押头寸,有效地“提款”,而无需实际从质押合约中移除以太币。 -更多关于质押提款的信息 - +关于质押提款的更多信息 - -这些联合质押方案和中心化交易所之间有许多相似之处,例如能够质押少量以太币并将它们捆绑在一起以激活验证者。 + +这些联合质押选项与中心化交易所之间有许多相似之处,例如能够质押少量 ETH 并将其捆绑在一起以激活验证者。 与中心化交易所不同,许多其他联合质押方案使用智能合约和/或质押代币,质押代币通常是 ERC-20 代币,可以保存在你自己的钱包中并像其他任何代币一样买卖。 这样你就可以控制自己的代币,从而获得了一定的自主权和安全性,但仍旧你还是无法直接控制在后台代表你进行验证的验证者客户端。 -涉及到支持它们的节点时,一些联合质押方案比其他方案更加分散。 为了加强网络的健康和去中心化程度,我们始终鼓励质押人选择一种无需许可即可实现节点运营商去中心化的联合服务。 - +涉及到支持它们的节点时,一些联合质押方案比其他方案更加分散。 为了加强网络的健康和去中心化程度,我们始终鼓励质押人选择一种无需许可即可实现节点运营商去中心化的联合服务。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [以太坊质押目录](https://www.staking.directory/) - _Eridian 和 Spacesider_ -- [火箭池质押 - 质押概述](https://docs.rocketpool.net/guides/staking/overview.html) - _火箭池文档_ -- [用 Lido 质押以太坊](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _Lido 帮助文档_ +- [以太坊质押目录](https://www.staking.directory/) - _Eridian and Spacesider_ +- [通过 Rocket Pool 进行质押 - 质押概述](https://docs.rocketpool.net/guides/staking/overview.html) - _RocketPool 文档_ +- [使用 Lido 质押以太坊](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _Lido 帮助文档_ From 3a7b514c39175cd4e444cd5512af5e2e150fb71c Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:27 -0800 Subject: [PATCH 084/581] update(i18n): public/content/translations/zh/developers/docs/frameworks/index.md --- .../zh/developers/docs/frameworks/index.md | 92 +++++++++---------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/public/content/translations/zh/developers/docs/frameworks/index.md b/public/content/translations/zh/developers/docs/frameworks/index.md index f30fefc21f1..5292e32a417 100644 --- a/public/content/translations/zh/developers/docs/frameworks/index.md +++ b/public/content/translations/zh/developers/docs/frameworks/index.md @@ -4,73 +4,73 @@ description: 探索框架的优势并比较现有的选项。 lang: zh --- -## 框架介绍 {#introduction-to-frameworks} +## 框架简介 {#introduction-to-frameworks} 构建一个完整的去中心化应用程序需要不同的技术。 软件框架包括许多需要的功能,或提供简单的插件系统来选择你需要的工具。 这些框架带有很多非常规的功能,比如: -- 编一个本地区块链的程序功能。 +- 编写一个本地区块链程序的功能。 - 编辑和测试你智能合约的实用工具。 -- 客户端开发附加组件,以在同一项目/仓库中构建你的面向用户的应用。 -- 无论是在本地运行的实例,还是在以太坊的公共网络之一,可以连接到以太网并且部署合约的配置。 -- 去中心化的应用分发 - 与诸如 IPFS 之类的存储选项集成。 +- 客户端开发附加组件,用于在同一项目/代码库中构建面向用户的应用程序。 +- 用于连接以太坊网络和部署合约的配置,无论是连接到本地运行的实例,还是以太坊的某个公共网络。 +- 去中心化应用程序分发——与 IPFS 等存储方案集成。 -## 前置要求 {#prerequisites} +## 前提条件 {#prerequisites} -在更深入介绍这个框架之前,我们推荐你先阅读下面对于[去中心化应用程序](/developers/docs/dapps/)的简介以及[以太坊堆栈](/developers/docs/ethereum-stack/)。 +在深入了解框架之前,我们建议你先阅读我们对[去中心化应用程序](/developers/docs/dapps/)和[以太坊堆栈](/developers/docs/ethereum-stack/)的介绍。 -## 可用的框架 {#available-frameworks} +## 可用框架 {#available-frameworks} -**Foundry** - **_Foundry 是一款快速、便携、模块化的以太坊应用程序开发工具包_** +**Foundry** - **_Foundry 是一款极其快速、可移植的模块化工具包,用于以太坊应用程序开发_** - [安装 Foundry](https://book.getfoundry.sh/) -- [Foundry 手册](https://book.getfoundry.sh/) +- [Foundry 指南](https://book.getfoundry.sh/) - [Telegram 上的 Foundry 社区聊天](https://t.me/foundry_support) -- [强大的 Foundry](https://github.com/crisgarner/awesome-foundry) +- [Awesome Foundry](https://github.com/crisgarner/awesome-foundry) -**安全帽 -** **_ 面向专业人员的以太坊开发环境。_** +**Hardhat -** **_面向专业人士的以太坊开发环境。_** - [hardhat.org](https://hardhat.org) - [GitHub](https://github.com/nomiclabs/hardhat) -**Ape -** **_ 面向 Pythonista、数据科学家和安全专业人员的智能合约开发工具。_** +**Ape -** **_面向 Python 爱好者、数据科学家和安全专业人士的智能合约开发工具。_** -- [相关文档](https://docs.apeworx.io/ape/stable/) +- [文档](https://docs.apeworx.io/ape/stable/) - [GitHub](https://github.com/ApeWorX/ape) -**Web3j -** **_ Java 虚拟机上的区块链应用程序开发平台。_ ** +**Web3j -** **_一个用于在 JVM 上开发区块链应用程序的平台。_** - [主页](https://www.web3labs.com/web3j-sdk) -- [相关文档](https://docs.web3j.io) +- [文档](https://docs.web3j.io) - [GitHub](https://github.com/web3j/web3j) -**Ethers-kt - ****_ 面向基于以太坊虚拟机区块链的高性能异步 Kotlin/Java/Android 库。_** +**ethers-kt -** **_用于基于 EVM 的区块链的异步、高性能 Kotlin/Java/Android 库。_** - [GitHub](https://github.com/Kr1ptal/ethers-kt) - [示例](https://github.com/Kr1ptal/ethers-kt/tree/master/examples) - [Discord](https://discord.gg/rx35NzQGSb) -**Create Eth App -** **_ 使用一个命令创建以太坊支持的应用程序。 提供众多 UI 框架和去中心化金融模板供选择。_** +**Create Eth App -** **_通过一个命令创建以太坊赋能的应用程序。 提供多种 UI 框架和 DeFi 模板供您选择。_** - [GitHub](https://github.com/paulrberg/create-eth-app) - [模板](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates) -**Scaffold-Eth -** **_Ethers.js + 安全帽 + React 组件和 web3 钩子函数:构建智能合约支持的去中心化应用程序所需的一切资源,这里都有。_** +**Scaffold-Eth -** **_Ethers.js + Hardhat + 用于 web3 的 React 组件和钩子:开始构建由智能合约驱动的去中心化应用程序所需的一切。_** - [GitHub](https://github.com/scaffold-eth/scaffold-eth-2) -**Tenderly -** **_Web3 开发平台,可帮助区块链开发者构建、测试、调试、监测和操作智能合约并改善去中心化应用程序的用户体验。_** +**Tenderly -** **_Web3 开发平台,区块链开发者能够用它来构建、测试、调试、监控和运营智能合约,并改善去中心化应用程序的用户体验。_** - [网站](https://tenderly.co/) -- [相关文档](https://docs.tenderly.co/) +- [文档](https://docs.tenderly.co/) -**The Graph -** **_ 用于高效查询区块链数据的图表。_** +**The Graph -** **_用于高效查询区块链数据的 The Graph。_** - [网站](https://thegraph.com/) - [教程](/developers/tutorials/the-graph-fixing-web3-data-querying/) -**Alchemy -** **_以太坊开发平台_** +**Alchemy -** **_以太坊开发平台。_** - [alchemy.com](https://www.alchemy.com/) - [GitHub](https://github.com/alchemyplatform) @@ -82,68 +82,68 @@ lang: zh - [GitHub](https://github.com/node-real) - [Discord](https://discord.gg/V5k5gsuE) -**thirdweb SDK -** **_使用我们强大的软件开发工具包和命令行接口,构建能够与你的智能合约交互的 web3 应用程序。_** +**thirdweb SDK -** **_使用我们强大的软件开发工具包和命令行界面,构建能够与你的智能合约交互的 web3 应用程序。_** -- [相关文档](https://portal.thirdweb.com/sdk/) +- [文档](https://portal.thirdweb.com/sdk/) - [GitHub](https://github.com/thirdweb-dev/) -**Chainstack -** **_Web3(以太坊和其他区块链)开发平台。_** +**Chainstack -** **_Web3(以太坊及其他)开发平台。_** - [chainstack.com](https://www.chainstack.com/) - [GitHub](https://github.com/chainstack) - [Discord](https://discord.gg/BSb5zfp9AT) -**Crossmint -** **_企业级 Web3 开发平台,允许你在各大链以太坊虚拟机链(及其他链)上构建非同质化代币应用程序。_** +**Crossmint -** **_企业级 web3 开发平台,允许你在所有主流 EVM 链(及其他链)上构建 NFT 应用程序。_** - [网站](https://www.crossmint.com) -- [相关文档](https://docs.crossmint.com) +- [文档](https://docs.crossmint.com) - [Discord](https://discord.com/invite/crossmint) -**Brownie -** **_ 基于 Python 的开发环境和测试框架。_** +**Brownie -** **_基于 Python 的开发环境和测试框架。_** -- [相关文档](https://eth-brownie.readthedocs.io/en/latest/) +- [文档](https://eth-brownie.readthedocs.io/en/latest/) - [GitHub](https://github.com/eth-brownie/brownie) - **Brownie 当前未维护** -**OpenZeppelin SDK -** **_终极智能合约工具包:一套帮助你开发、编译、升级、部署智能合约并与之交互的工具。_** +**OpenZeppelin SDK -** **_终极智能合约工具包:一套可帮助你开发、编译、升级、部署智能合约并与之交互的工具。_** -- [OpenZeppelin SDK](https://openzeppelin.com/sdk/) +- [OpenZeppelin Defender SDK](https://docs.openzeppelin.com/defender/sdk) - [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk) - [社区论坛](https://forum.openzeppelin.com/c/support/17) - **OpenZeppelin SDK 开发已结束** -**Catapulta -** **_多链智能合约部署工具,在区块浏览器中自动执行验证,追踪已部署的智能合约并分享部署报告,使 Foundry 和 Hardhat 项目即插即用。_** +**Catapulta -** **_多链智能合约部署工具,可在区块浏览器中自动验证,跟踪已部署的智能合约并共享部署报告,为 Foundry 和 Hardhat 项目提供即插即用功能。_** - [网站](https://catapulta.sh/) -- [相关文档](https://catapulta.sh/docs) +- [文档](https://catapulta.sh/docs) - [Github](https://github.com/catapulta-sh) -**Covalent - ****_适用于 200 多条链的丰富区块链应用程序接口。_** +**GoldRush (由 Covalent 提供支持) -** **_GoldRush 为开发者、分析师和企业提供最全面的区块链数据 API 套件。 无论你是在构建 DeFi 看板、钱包、交易机器人、人工智能代理还是合规平台,数据 API 都能让你快速、准确且对开发者友好地访问所需的基本链上数据_** -- [covalenthq.com](https://www.covalenthq.com/) -- [相关文档](https://www.covalenthq.com/docs/api/) +- [网站](https://goldrush.dev/) +- [文档](https://goldrush.dev/docs/chains/ethereum) - [GitHub](https://github.com/covalenthq) - [Discord](https://www.covalenthq.com/discord/) -**Wake -** **_用于合约测试、模糊测试、部署、漏洞扫描和代码导航的一体化 Python 框架。_** +**Wake -** **_集合约测试、模糊测试、部署、漏洞扫描和代码导航于一体的 Python 框架。_** - [主页](https://getwake.io/) -- [相关文档](https://ackeeblockchain.com/wake/docs/latest/) +- [文档](https://ackeeblockchain.com/wake/docs/latest/) - [GitHub](https://github.com/Ackee-Blockchain/wake) -- [VS Code 扩展程序](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity) +- [VS Code 扩展](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity) -**Veramo -** **_开源、模块化且不受限的框架,使去中心化应用程序开发者能够轻松在其应用程序内构建去中心化身份和可验证凭证。_** +**Veramo -** **_一个开源、模块化、不限平台的框架,可让去中心化应用程序的开发者轻松地在其应用程序中构建去中心化身份和可验证凭证。_** - [主页](https://veramo.io/) -- [相关文档](https://veramo.io/docs/basics/introduction) +- [文档](https://veramo.io/docs/basics/introduction) - [GitHub](https://github.com/uport-project/veramo) - [Discord](https://discord.com/invite/FRRBdjemHV) -- [NPM 软件包](https://www.npmjs.com/package/@veramo/core) +- [NPM 包](https://www.npmjs.com/package/@veramo/core) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_ +_你还知道哪些对你有帮助的社区资源? 请编辑本页面并添加进来!_ -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} - [设置本地开发环境](/developers/local-environment/) From 099903edfe0ecd264beee43f964c6a071eb3a05b Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:30 -0800 Subject: [PATCH 085/581] update(i18n): public/content/translations/zh/roadmap/pectra/index.md --- .../translations/zh/roadmap/pectra/index.md | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 public/content/translations/zh/roadmap/pectra/index.md diff --git a/public/content/translations/zh/roadmap/pectra/index.md b/public/content/translations/zh/roadmap/pectra/index.md new file mode 100644 index 00000000000..95a431fd295 --- /dev/null +++ b/public/content/translations/zh/roadmap/pectra/index.md @@ -0,0 +1,127 @@ +--- +title: 布拉格-埃莱特拉(Pectra) +description: 了解 Pectra 协议升级 +lang: zh +--- + +# Pectra{#pectra} + +Pectra 网络升级在 [Dencun](/roadmap/dencun/) 之后进行,为以太坊的执行层和共识层都带来了变更。 缩写名称Pectra是“Prague”和“Electra”这两个词的结合,它们分别代表执行层和共识层规范的变化。 总之,这些变化为以太坊用户、开发人员和验证者带来了许多改进。 + +此次升级已于以太坊主网时段 `364032` 成功激活,具体时间为 **2025年5月7日 10:05(UTC)**。 + + + + +Pectra 升级只是以太坊长期发展目标中的其中一环。 了解更多关于[协议路线图](/roadmap/)和[之前升级](/ethereum-forks/)的信息。 + + + + +## Pectra 的改进 {#new-improvements} + +Pectra 带来了迄今为止所有升级中数量最多的 [EIP](https://eips.ethereum.org/)! 有些细微的变化,但也有一些重要的新功能。 完整的更改列表及技术细节可在各自包含的EIP中查阅。 + +### EOA帐户代码{#7702} + +[EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) 标志着向广泛实现 [账户抽象](/roadmap/account-abstraction/) 迈出的重要一步。 通过此功能,用户可以将自己的([EOA](/glossary/#eoa)) 地址扩展为智能合约。 EIP 引入了一种具有特定功能的新型交易——允许地址拥有者授权,将其地址设置为模拟选定的智能合约。 + +通过此EIP,用户可以选择可编程钱包,该钱包支持交易打包、无gas交易以及为多种钱包恢复方案提供的自定义资产访问等新功能。 这种混合方法将 EOA 的简单性与基于合约的账户的可编程性相结合。 + +阅读关于7702的深度解析点击[这里](/roadmap/pectra/7702/) + +### 提高有效质押最高账户余额 {#7251} + +验证者目前有效质押的金额正好是32ETH。 这是参与共识所需的最低金额,同时也是单个验证者可以质押的最高金额。 + +[EIP-7251](https://eips.ethereum.org/EIPS/eip-7251) 将单笔有效质押金额的最大值提升至 2048 ETH,这意味着单个验证者现在可以质押 最低32 至 2048 ETH 之间的任意数额。 也就是说,质押者不再需要多笔质押32的倍数,他们可以选择质押任意数量的ETH,并且每超过最低要求的1 ETH就可以获得奖励。 例如,如果验证者的质押余额随着奖励增加至33 ETH,额外的1 ETH也被视为有效质押的一部分并获得奖励。 + +为验证者带来更优化的奖励机制仅仅是这一改进的一部分。 运行多个验证器的 [质押者](/staking/) 现在可以将它们聚合为一个验证器,从而简化操作并减少网络开销。 这是因为 Beacon Chain 中的每个验证者在每个周期都需提交一个签名,因此随着验证者的增多和需要传播的签名数量的增加,带宽需求也会随之增长。 因此, 聚合验证者将减轻网络负载,并在维持网络相同的经济安全性的同时,为新的扩展开启可能性。 + +阅读关于maxEB的深度解析,请点击[此处](/roadmap/pectra/maxeb/) + +### Blob 吞吐量提升{#7691} + +Blobs 为 L2 提供 [数据可用性](/developers/docs/data-availability/#data-availability-and-layer-2-rollups)。 它们是在[上一次网络升级](/roadmap/dencun/)中被引入的。 + +目前,网络的目标是每个区块平均处理3个Blob,最多可处理6个Blob。 随着 [EIP-7691](https://eips.ethereum.org/EIPS/eip-7691)的引入,平均每个区块的Blob数量将增加到6个,最多可达到9个区块,从而提升以太坊Rollup的容量。 该EIP有助于填补这一空白,直到[PeerDAS](https://eips.ethereum.org/EIPS/eip-7594)的引入,实现更高的Blob数量。 + +### 增加calldata成本 {#7623} + +在[Dencun升级中的blobs](/roadmap/danksharding)引入之前,L2网络一直使用[calldata](/developers/docs/data-availability/blockchain-data-storage-strategies/#calldata)来存储其在以太坊上的数据。 Blob 和 calldata 都会影响以太坊的带宽使用情况。 虽然大多数区块仅使用最少量的calldata,但包含许多 blob 的数据密集型区块可能会对以太坊的 p2p 网络造成危害。 + +为了解决这个问题,[EIP-7623](https://eips.ethereum.org/EIPS/eip-7623) 提高了calldata价格,但仅影响数据密集型交易。 这限制了区块变得过于庞大,激励 L2 仅使用 blobs,从而保证99% 以上的交易不受影响。 + +### 执行层的可触发退出机制{#7002} + +目前,一个验证者退出并 [提取质押的ETH](/staking/withdrawals/) 是一个共识层操作,要求拥有一个活跃的验证者密钥,这个密钥是验证者用来执行如证明等活跃任务的相同的BLS 密钥。 提取凭证是一个独立的冷存储密钥,用于接收已退出的质押资金,但无法触发退出操作。 质押者退出的唯一方式是向信标链网络(Beacon Chain)发送来自活跃验证者密钥签名的特殊消息。 在下面两种情况里这种机制存在局限性:当提币凭证和验证密钥由不同实体持有,或验证密钥丢失时。 + +[EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) 引入了一种新合约,可以用来通过执行层的提取凭证触发退出。 质押者无需使用验证者签名密钥或访问信标链,即可通过调用该特殊合约中的函数退出其验证者角色。 重要的是,启用链上验证者提币功能,使得质押协议能够对节点运营商降低信任假设。 + +### 链上验证者质押{#6110} + +验证者质押目前通过[eth1data poll](https://eth2book.info/capella/part2/deposits-withdrawals/deposit-processing/)进行处理,该功能位于信标链上( Beacon Chain),用于从执行层获取数据。 这有点像是合并(The Merge)之前遗留下来的技术逻辑。那时信标链(Beacon Chain)还是一个独立的网络,不得不考虑工作量证明(PoW)链上的重组问题。 + +[EIP-6110](https://eips.ethereum.org/EIPS/eip-6110) 是一种将质押从执行层传递到共识层的新方法,它能够实现即时处理并降低实施的复杂性。 这是一种更安全地处理以太坊合并后原生质押的方式。 EIP-6110 的机制让节点不必依赖历史存款记录来启动,这对于实现历史数据过期(history expiry)是必要的,为以太坊协议提供未来适应性。 + +### BLS12-381 的预编译{#2537} + +预编译是直接内置于以太坊虚拟机([EVM](/developers/docs/evm/))的一组特殊的智能合约。 与普通合约不同,预编译合约不是由用户部署的,而是由以太坊客户端直接实现,使用客户端的原生语言编写(例如 Go、Java 等,而不是 Solidity)。 预编译合约用于执行使用广泛且标准化的功能,例如加密运算。 智能合约开发者可以像调用普通合约一样调用预编译合约,优势在于:效率更高,安全性更高。 + +[EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) 为 [BLS12-381](https://hackmd.io/@benjaminion/bls12-381) 上的曲线运算新增了预编译合约。 由于其实用特性,椭圆曲线方案(BLS12-381)在加密生态系统中已经得到了广泛的应用。 实际上, 以太坊已选择 BLS12-381 作为其共识层的主要签名方案,供验证者使用。 + +新的预编译功能使每位开发者都能轻松、高效且安全地使用该曲线进行加密操作,例如在验证签名中。 依赖该曲线的链上应用可以通过使用预编译合约,而不是自定义合约,变得更加节省 Gas 并提高安全性。 这主要适用于希望在 EVM 内部对验证者进行推理的应用程序,例如质押池、[再质押](/restaking/)、轻客户端、链桥以及零知识应用。 + +### 从状态中读取历史区块哈希值{#2935} + +目前EVM 通过提供了 BLOCKHASH 操作码,使合约开发者能够直接在执行层中获取某个区块的哈希值。 然而,这一功能仅限于最近的 256 个区块,对于未来的无状态客户端(不保存完整状态的轻量化客户端)来说可能会带来问题。 + +[EIP-2935](https://eips.ethereum.org/EIPS/eip-2935)创建了一个新的系统合约,可以将最近 8192 个区块哈希作为存储槽提供。 这有助于确保协议在未来能够实现无状态执行,并且在采用 verkle tries 时会变得更加高效。 除此之外,Rollups 可以立刻从中受益,因为它们可以直接通过合约查询更长时间跨度的历史数据。 + +### 将委员会索引移出认证 {#7549} + +信标链共识基于验证者对最新区块和最终周期的投票。 该认证包含三个要素,其中两个是投票,第三个是委员会索引值。 + +[EIP-7549](https://eips.ethereum.org/EIPS/eip-7549) 将此索引移出已签名的认证消息,这使得验证和聚合共识投票更加容易。 这将使每个共识客户端的效率得到提升,并为验证以太坊共识的零知识电路带来显著的性能提升。 + +### 将 blob 添加到执行层的( EL) 配置文件 {#7840} + +[EIP-7840](https://eips.ethereum.org/EIPS/eip-7840) 是一个简单的更改,它为执行层客户端配置添加了一个新字段。 可以配置区块数量,允许动态设置每个区块的目标blob和最大 blob 数量,以及 blob 手续费调整。 通过直接定义配置参数,客户端无需再通过Engine API(以太坊的一种协议接口)交换此类信息, 简化了操作。 + + + + +要了解 Pectra 对以太坊用户、开发者或验证者的具体影响,请查阅Pectra 常见问题解答。 + + + + +## 这次升级会影响所有以太坊节点和验证者吗? {#client-impact} + +是的,Pectra 升级需要更新[执行客户端和共识客户端](/developers/docs/nodes-and-clients/)。 所有主要以太坊客户端都将发布支持硬分叉的版本,并将其列为优先级。 为了在升级后与以太坊网络保持同步,节点运营者必须确保正在运行支持的客户端版本。 请注意,关于客户端发布的信息具有时效性,用户应参考最新更新以获取最新详情。 + +## 硬分叉后如何转换以太币? {#scam-alert} + +- **您的 ETH 无需采取任何行动**:以太坊 Pectra 升级后,无需转换或升级您的 ETH。 硬分叉后,你的帐户余额不会改变,你目前持有的以太币仍将以其现有的形式保持可用。 +- **当心诈骗!** **任何引导你对以太币进行“升级”的人都是骗子**。你不需要进行任何与此升级有关的操作。 你的资产不会受到任何影响。 请记住,随时了解动态是防御诈骗的最佳手段。 + +[更多关于识别和规避诈骗的信息](/security/) + +## 更愿意通过视频学习? {#visual-learner} + + + +_Pectra 升级将包含哪些内容? - Christine Kim_ + + + +_以太坊Pectra升级:质押者需要了解的内容 — Blockdaemon_ + +## 扩展阅读{#further-reading} + +- [以太坊路线图](/roadmap/) +- [Pectra 常见问题解答](https://epf.wiki/#/wiki/pectra-faq) +- [Pectra.wtf 信息页面](https://pectra.wtf) +- [Pectra 如何提升质押者体验](https://www.kiln.fi/post/next-ethereum-upgrade-how-pectra-will-enhance-the-staking-experience) +- [EIP7702 信息页面](https://eip7702.io/) +- [Pectra 开发者测试网络](https://github.com/ethereum/pm/blob/master/Pectra/pectra-pm.md) From b8c0546ebce1f01c58eb1d1811ccdd1c105d1528 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:34 -0800 Subject: [PATCH 086/581] update(i18n): public/content/translations/zh/roadmap/dencun/index.md --- public/content/translations/zh/roadmap/dencun/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/content/translations/zh/roadmap/dencun/index.md b/public/content/translations/zh/roadmap/dencun/index.md index d73516213ab..a0c8cf41c1a 100644 --- a/public/content/translations/zh/roadmap/dencun/index.md +++ b/public/content/translations/zh/roadmap/dencun/index.md @@ -68,9 +68,9 @@ Proto-Danksharding 为 [Danksharding](/roadmap/danksharding/) 的完全实现奠 共识客户端处理验证者软件,该软件已全部更新为支持升级的版本。 -## Cancun-Deneb (坎昆) 升级如何影响 Goerli 或其他以太坊测试网? {#testnet-impact} +## Cancun-Deneb(Dencun)如何影响以太坊测试网络? {#testnet-impact} -- Devnets、Goerli、Sepolia 和 Holesky 已经全部经历坎昆升级,并且 Proto-Danksharding 完全正常运行 +- Devnets、Sepolia 和 Holesky 网络都已经完成了 Dencun 升级,同时 Proto-Danksharding 已经完全启用。 - 卷叠开发者可以使用这些网络来测试 EIP-4844 - 大多数用户完全不会受到这些测试网改变的影响 From 9b4b2860117b4c5dd48764d76549dead23acfe45 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:36 -0800 Subject: [PATCH 087/581] update(i18n): public/content/translations/zh/smart-contracts/index.md --- .../translations/zh/smart-contracts/index.md | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/public/content/translations/zh/smart-contracts/index.md b/public/content/translations/zh/smart-contracts/index.md index e7aa34a7b14..eb4eab87b8e 100644 --- a/public/content/translations/zh/smart-contracts/index.md +++ b/public/content/translations/zh/smart-contracts/index.md @@ -1,23 +1,27 @@ --- title: 智能合约 -metaTitle: "智能合约:有什么优势?" +metaTitle: "智能合约:是什么以及其优势" description: 智能合约的非技术性介绍 lang: zh --- # 智能合约简介 {#introduction-to-smart-contracts} -智能合约是以太坊应用程序层的基石。 它们是存储在[区块链](/glossary/#blockchain)上的计算机程序,遵循“如果...那么...”(IFTTT) 逻辑,并且保证按照其代码定义的规则执行,智能合约一旦创建就无法更改。 +
+ +
-Nick Szabo 创造了“智能合约”这一术语。 1994 年,他撰写了[智能合约简介](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html);1996 年,他撰写了[对智能合约潜在功能的探索](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html)。 +智能合约是以太坊应用程序层的基石。 它们是存储在[区块链](/glossary/#blockchain)上的计算机程序,遵循“如果……那么……”逻辑,并保证按照其代码定义的规则执行,该代码一旦创建便无法更改。 -Szabo 构想了一个数字市场,在这个市场中,交易和商业功能可在不需要受信任中介的情况下通过[加密学保证安全](/glossary/#cryptography)的自动化流程进行。 以太坊上的智能合约将这一设想付诸实践。 +Nick Szabo 创造了“智能合约”这一术语。 1994 年,他撰写了[一篇关于此概念的介绍文章](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html),并在 1996 年撰写了[一篇探索智能合约功能的文章](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html)。 + +Szabo 构想了一个数字市场,在这个市场中,通过自动化的、[密码学安全的](/glossary/#cryptography)流程,交易和业务功能可以在没有可信中介的情况下进行。 以太坊上的智能合约将这一设想付诸实践。 观看 Finematics 解释智能合约: -## 传统合约中的信任问题 {#trust-and-contracts} +## 传统合约中的信任 {#trust-and-contracts} 传统合约的最大问题之一是需要可信的个人来执行合约的结果。 @@ -49,7 +53,7 @@ Alice 和 Bob 要进行一场自行车比赛。 假设 Alice 和 Bob 打赌 $10 传统合约比较含糊,因为它们依赖于人来解释和执行。 例如,两位法官可能会对合同有不同的解释,这可能会导致不一致的判决和不公平的结果。 智能合约消除了这种可能性。 然而,智能合约会根据合约代码中写入的条件精确执行。 这种精确性意味着在相同情况下,智能合约将产生相同的结果。 -## 公开的记录 {#public-record} +## 公共记录 {#public-record} 智能合约可用于审计和跟踪。 由于以太坊智能合约位于公共区块链上,任何人都可以立即跟踪资产转移和其他相关信息。 例如,你可以检查是否有人向自己的地址发送了资金。 @@ -57,7 +61,7 @@ Alice 和 Bob 要进行一场自行车比赛。 假设 Alice 和 Bob 打赌 $10 智能合约还可以保护你的隐私。 由于以太坊是匿名网络(你的交易公开绑定到唯一的加密地址,而不是你的身份),你可以保护你的隐私不受观察者窥探。 -## 可查看的条款 {#visible-terms} +## 可见条款 {#visible-terms} 最后一点,与传统合约一样,你可以在签署(或以其他方式与之交互)之前检查智能合约的内容。 智能合约的透明性保证了任何人都可以进行审查。 @@ -65,18 +69,22 @@ Alice 和 Bob 要进行一场自行车比赛。 假设 Alice 和 Bob 打赌 $10 其他计算机程序可以做的事情,智能合约基本上都可以做。 -它们可以执行计算、创建货币、存储数据、铸造[非同质化代币](/glossary/#nft)、发送通信甚至生成图形。 以下是一些常见的真实示例: +它们可以执行计算、创造货币、存储数据、铸造 [NFTs](/glossary/#nft)、发送通信甚至生成图形。 以下是一些常见的真实示例: - [稳定币](/stablecoins/) - [创建和分发独特的数字资产](/nft/) - [自动、开放的货币交易所](/get-eth/#dex) - [去中心化游戏](/apps/categories/gaming) -- [自动赔付的保单](https://etherisc.com/) -- [允许创建定制、可互操作货币的标准](/developers/docs/standards/tokens/) +- [自动赔付的保险单](https://etherisc.com/) +- [允许人们创建定制化、可互操作货币的标准](/developers/docs/standards/tokens/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [智能合约将如何改变世界](https://www.youtube.com/watch?v=pA6CGuXEKtQ) - [面向开发者的智能合约](/developers/docs/smart-contracts/) - [学习编写智能合约](/developers/learning-tools/) -- [精通以太坊 — 什么是智能合约?](https://github.com/ethereumbook/ethereumbook/blob/openedition/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract) +- [精通以太坊 - 什么是智能合约?](https://github.com/ethereumbook/ethereumbook/blob/openedition/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract) + + + + From 3096a440b63af15954856999da15bca5d23c4069 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:38 -0800 Subject: [PATCH 088/581] update(i18n): public/content/translations/zh/roadmap/scaling/index.md --- .../translations/zh/roadmap/scaling/index.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/public/content/translations/zh/roadmap/scaling/index.md b/public/content/translations/zh/roadmap/scaling/index.md index d9661c7489f..526f89c60ca 100644 --- a/public/content/translations/zh/roadmap/scaling/index.md +++ b/public/content/translations/zh/roadmap/scaling/index.md @@ -7,12 +7,12 @@ alt: "以太坊路线图" template: roadmap --- -以太坊使用[二层](/layer-2/#rollups)网络(也称为“卷叠”)进行扩展,卷叠批量处理交易并将结果发送到以太坊上。 尽管卷叠比以太坊主网便宜多达八倍,但还可以进一步优化,以降低最终用户的成本。 卷叠还依赖于一些中心化的组件,随着卷叠的成熟,开发者可以逐步移除这些组件。 +以太坊使用[二层网络](/layer-2/#rollups)(也称为“卷叠”)进行扩展,卷叠批量处理交易并将结果发送到以太坊上。 尽管卷叠比以太坊主网便宜多达八倍,但还可以进一步优化,以降低最终用户的成本。 卷叠还依赖于一些中心化的组件,随着卷叠的成熟,开发者可以逐步移除这些组件。 - 交易费 + 交易成本
  • 目前,卷叠比以太坊一层网络便宜大约 5-20 倍
  • @@ -23,7 +23,7 @@ template: roadmap -## 让数据更实惠 {#making-data-cheaper} +## 降低数据成本 {#making-data-cheaper} 卷叠会收集、执行大量的交易,并将结果提交到以太坊。 这会生成大量数据,这些数据需要公开,以便任何人都能执行交易并验证卷叠运营商的诚实性。 如果有人发现交易有出入,就会提出质疑。 @@ -31,26 +31,28 @@ template: roadmap 过去卷叠数据永久存储在以太坊上,这导致费用高昂。 用户在卷叠中支付的超过 90% 的交易费用是由于这种数据存储造成的。 为了减少交易费用,我们可以将数据转移到新的临时“二进制大对象”中存储。 由于二进制大对象不是永久性存储,所以相对便宜。一旦不再需要这些数据,可以将它们从以太坊中删除。 长期存储卷叠数据成为需要者的责任,例如卷叠运营者、交易所、索引服务等。 向以太坊添加数据块交易是被称作“Proto-Danksharding”的升级的一部分。 -使用 Proto-Danksharding,可以向以太坊区块中添加许多二进制大对象。 这会进一步大幅(>100 倍)提高以太坊吞吐量、降低交易费用。 +使用 Proto-Danksharding,可以向以太坊区块中添加许多二进制大对象。 这使得以太坊的吞吐量能够再次大幅(>100 倍)提升,并大幅降低交易成本。 ### Danksharding {#danksharding} -扩展二进制大对象数据的第二阶段非常复杂,因为它需要以新的方式检查卷叠数据在网络上的可用性,并依赖[验证者](/glossary/#validator)来分离他们的[区块](/glossary/#block)构建和区块提议责任。 同时,它还需要以一种加密方式证明验证者已验证二进制大对象数据的小子集。 +扩展 blob 数据的第二阶段很复杂,因为它需要用新方法来检查网络上是否有可用的卷叠数据,并且依赖于[验证者](/glossary/#validator)将其[区块](/glossary/#block)构建和区块提议的职责分开。 同时,它还需要以一种加密方式证明验证者已验证二进制大对象数据的小子集。 -这个第二步名为[“Danksharding”](/roadmap/danksharding/)。 **它可能需要几年时间**才能完全实现。 Danksharding 依赖于其他开发工作,例如[分离区块构建和区块提出](/roadmap/pbs),以及进行新网络设计,让网络能够通过一次性随机采样少许千字节数据即可高效确认数据可用性,这称为“[数据可用性采样 (DAS)](/developers/docs/data-availability)”。 +这第二步被称为 ["Danksharding"](/roadmap/danksharding/)。 实施工作仍在继续,在一些先决条件上已取得进展,例如[分离区块构建和区块提议](/roadmap/pbs)以及新的网络设计,这些设计使网络能够通过一次随机抽样几千字节来有效确认数据可用,这被称为[数据可用性采样 (DAS)](/developers/docs/data-availability)。 -更多关于 Danksharding 的信息 +关于 Danksharding 的更多信息 -## 去中心化卷叠 {#decentralizing-rollups} +## 卷叠去中心化 {#decentralizing-rollups} -[卷叠](/layer-2)已经在对以太坊扩容。 一个[丰富的卷叠项目生态系统](https://l2beat.com/scaling/tvl)正在使用户能够在一系列安全保证下快速和低成本地进行交易。 然而,卷叠目前是通过中心化的排序者(在提交给以太坊之前进行所有交易处理和聚合的计算机)来引导的。 这容易审查,因为这些排序运营商可能会受到制裁、受贿、或因其他原因妥协。 与此同时,[卷叠在验证传入数据的方式上也存在差异](https://l2beat.com)。 最好的方法是让“验证者”提交[欺诈证明](/glossary/#fraud-proof)或有效性证明,但不是所有卷叠都实现了这一点。 甚至那些使用了有效性/欺诈证明的卷叠也仅使用少数已知的证明者。 因此,以太坊扩容的下一个重要步骤是向更多人分配运行排序者和证明者的责任。 +[卷叠](/layer-2)已在为以太坊扩容。 一个[丰富的卷叠项目生态系统](https://l2beat.com/scaling/tvs)让用户能够在一系列安全保证下,快速、低成本地进行交易。 然而,卷叠目前是通过中心化的排序者(在提交给以太坊之前进行所有交易处理和聚合的计算机)来引导的。 这容易审查,因为这些排序运营商可能会受到制裁、受贿、或因其他原因妥协。 与此同时,[卷叠在验证传入数据的方式上也存在差异](https://l2beat.com/scaling/summary)。 最好的方法是让“证明者”提交[欺诈证明](/glossary/#fraud-proof)或有效性证明,但并非所有卷叠都已实现这一点。 甚至那些使用了有效性/欺诈证明的卷叠也仅使用少数已知的证明者。 因此,以太坊扩容的下一个重要步骤是向更多人分配运行排序者和证明者的责任。 -更多关于卷叠的信息 +关于卷叠的更多信息 ## 当前进展 {#current-progress} -Proto-Danksharding 是这些路线图项目中首个要实现的项目,将作为 2024 年 3 月的 Cancun-Deneb (“Dencun”)网络升级的一部分实现。 由于完整 Danksharding 依赖于其他几个路线图项目首先完成,所以**距离其实现可能仍需数年时间**。 卷叠基础设施去中心化很可能是一个渐进过程 - 存在许多不同的卷叠,它们正在建立的系统略有不同,并且完全去中心化的速度也不同。 +Danksharding(以太坊未来的分片方案)的前期版本Proto-Danksharding 作为 Cancun-Deneb ("Dencun") 网络升级的一部分,在 2024 年 3 月成功部署完成。 从此,rollups 就开始使用 blob 存储,从而降低了用户的交易成本,并在 blobs 中处理了数百万笔交易。 -[更多关于 Dencun 网络升级的信息](/roadmap/dencun/) +全面的分片方案(Danksharding )仍在构建中,相关前提工作也在不断推进,例如 PBS(提议者-构建者分离) 和 DAS(数据可用性采样)。 rollup 基础设施的去中心化是一个渐进的过程——目前有很多的 rollups 因为它们正在构建的系统略有不同,所以它们的去中心化进度也会不一样。 + +[关于 Dencun 网络升级及其影响的更多信息](/roadmap/dencun/) From c9b17d1626752b5ec71a60a34ce80311d50a913b Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:41 -0800 Subject: [PATCH 089/581] update(i18n): public/content/translations/zh/community/events/index.md --- .../translations/zh/community/events/index.md | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/public/content/translations/zh/community/events/index.md b/public/content/translations/zh/community/events/index.md index 783d50e7e6e..e93ed894076 100644 --- a/public/content/translations/zh/community/events/index.md +++ b/public/content/translations/zh/community/events/index.md @@ -1,26 +1,38 @@ --- -title: 以太坊活动 +title: 发现社区活动和社区中心 description: 如何加入以太坊社区。 lang: zh hideEditButton: true --- -# 活动预告 {#events} +# 发现社区活动和社区中心 {#discover-community-events-and-community-hubs} -**每个月,世界各地都会举办大型以太坊活动。**你可以考虑参加附近的一个活动,认识更多的社区成员,了解就业机会,并培养新的技能。 +以太坊因人而生—从小型见面会和社区聚会到大型会议、黑客松,以及巩固世界各地本地生态系统的永久性社区中心。 - +每个联合办公日、见面会或活动都是一个学习新知识、结识志同道合的人、分享想法以及就塑造我们未来的真实项目开展合作的机会。 无论您是开发者、研究员、设计师,还是只是好奇,总有一个地方让您交流、贡献和成长。 -这是一个由我们社区维护的不完整列表。 想要将了解到的即将举行的以太坊活动添加到此列表? [请添加](https://github.com/ethereum/ethereum-org-website/blob/dev/src/data/community-events.json)! +💡 想要组织活动,或是有社区相关的想法? 请向遍布世界的以太坊团队寻求支持! → [在此处联系我们](https://docs.google.com/forms/d/e/1FAIpQLSeA-W8iy2PJxrY3TD4lMYXyky_wLd4QB_7NRwqSxCd0e19MUg/viewform) - +想发现您所在地区的以太坊活动或社区中心吗? 查看下面的列表,寻找您的下一次见面会、联合办公日或聚会! + +## 以太坊社区中心 {#ethereum-community-hubs} + +以太坊社区中心是永久性的包容空间,可用作联合办公区、定期举办活动,并作为创新和知识中心,以激发合作,建立强大、互联的本地生态系统。 + +无论您是本地人、数字游民还是临时居民,都可以参加联合办公会议、研讨会和见面会,发现机会,甚至举办自己的活动。 每个社区中心都有自己的注册流程——您可以在下面找到更多信息和链接。 + + -## 以太坊聚会 {#meetups} +## 以太坊社区活动 {#ethereum-community-events} + + + +这是一个由我们社区维护的不完整列表。 想要将了解到的即将举行的以太坊活动添加到此列表?[请在此添加](https://github.com/ethereum/ethereum-org-website/blob/dev/src/data/community-events.json)! + +## 以太坊见面会 {#meetups} 找不到适合你的活动? 尝试加入一个聚会。 聚会是指由各个以太坊爱好者团体举办的小型活动——这是对以太坊感兴趣的人们聚集在一起的机会,他们可以一起谈论并了解以太坊的最新发展。 -有兴趣举办自己的聚会? 查看 [BUIDL 网络](https://consensys.net/developers/buidlnetwork/),这是由 ConsenSys 发起的一项举措,旨在帮助支持以太坊的各个聚会社区。 - -这是一个由我们社区制定的不完整列表。 你可以[在此处查找更多以太坊聚会](https://www.meetup.com/topics/ethereum/)。 想要将了解到的活跃聚会小组添加到此列表? [请添加](https://github.com/ethereum/ethereum-org-website/blob/dev/src/data/community-meetups.json)! + From 1496e8825d7f94cf7d719d587cbb85b0513734c4 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:45 -0800 Subject: [PATCH 090/581] update(i18n): public/content/translations/zh/community/online/index.md --- .../translations/zh/community/online/index.md | 54 ++++++------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/public/content/translations/zh/community/online/index.md b/public/content/translations/zh/community/online/index.md index e34b964cfd3..3dc66eb62fb 100644 --- a/public/content/translations/zh/community/online/index.md +++ b/public/content/translations/zh/community/online/index.md @@ -1,6 +1,7 @@ --- -title: 线上社区 -description: 以太坊生态系统的资助方案清单。 +title: | + 线上社区 +description: 探索以太坊爱好者聚集讨论并互相协作的线上论坛、聊天室和社交媒体社区。 lang: zh --- @@ -12,65 +13,44 @@ lang: zh 为维护所列社区的正直诚信和价值观,ethereum.org 遵循严格的资格判定政策: -### 资格条件 {#eligibility-criteria} +### 资格标准 {#eligibility-criteria} - **相关性**:社区必须与以太坊及其生态系统直接相关。 - **活跃程度**:社区应该活跃,定期进行互动、发帖或讨论。 休眠或不活跃的社区可能会被移除。 - **包容性**:社区应营造一个尊重多样性、鼓励各种背景的人参与的温馨环境。 -- **不注重商务**:上架旨在提供社区空间,而非商业或宣传平台。 +- **非商业性质**:上架旨在提供社区驱动的空间,而非商业或推广平台。 ### 内容准则 {#content-guidelines} - **适当的内容**:社区必须有自己的审核准则,避免垃圾邮件、仇恨言论、骚扰或任何宣传非法活动的内容。 -- **语言**:虽然在社区中英语是主要语言,但只要能保持包容和尊重的氛围,我们也鼓励使用其他语言的社区提交作品。 -- **透明度**: 应向成员提供有关社区宗旨、规则和版主的明确信息。 +- **语言**:虽然英语是主要语言,但只要能保持包容和尊重的氛围,我们也鼓励使用其他语言的社区提交申请。 +- **透明度**:应向成员提供有关社区宗旨、规则和版主的明确信息。 ### 其他建议 {#other-recommendations} -- **可访问性**:社区论坛应可供所有人阅读,无需注册或登记。 -- **Discord 服务器邀请**:建议只在 ethereum.org 上添加可靠的 Discord 服务器邀请。 理想情况下,这些邀请应链接到网站上的社区页面(例如 [ethglobal.com/discord](https://ethglobal.com/discord)) 或来自官方 URL(例如 [discord.gg/ethstaker](https://discord.gg/ethstaker) 或 [discord.com/invite/ethstaker](https://discord.com/invite/ethstaker))。 - -如果你认为应根据这些准则添加或移除某个社区,请[在我们的 GitHub 储存库中创建一个提议](https://github.com/ethereum/ethereum-org-website/issues)。 +- **可访问性**:社区论坛应可供所有人阅读,无需注册。 +- **Discord 服务器邀请**:建议只在 ethereum.org 上添加可靠的 Discord 服务器邀请。 理想情况下,这些邀请应链接到网站上的社区页面(例如 [ethglobal.com/discord](https://ethglobal.com/discord)),或来自官方 URL(例如 [discord.gg/ethstaker](https://discord.gg/ethstaker) 或 [discord.com/invite/ethstaker](https://discord.com/invite/ethstaker))。 +如果您认为应根据这些准则添加或移除某个社区,请在我们的 GitHub 存储库[提交一个 issue](https://github.com/ethereum/ethereum-org-website/issues)。 ## 论坛 {#forums} -r/ethereum - 所有内容皆关乎以太坊 -r/ethfinance - 以太坊金融领域,包括去中心化金融 -r/ethdev - 专注于以太坊开发 -r/ethtrader - 趋势和市场分析 -r/ethstaker - 欢迎所有对以太坊质押感兴趣者 -Fellowship of Ethereum Magicians - 聚集于太坊技术标准的社区 -Ethereum Stackexchange - 让以太坊开发者相互讨论和并向他们提供帮助 -Ethereum Research - 最具影响力的加密经济研究留言板 +r/ethereum - 关于以太坊的一切 r/ethfinance - 以太坊的金融方面,包括 DeFi r/ethdev - 专注于以太坊开发 r/ethtrader - 趋势和市场分析 r/ethstaker - 欢迎所有对以太坊质押感兴趣的人 Fellowship of Ethereum Magicians - 围绕以太坊技术标准的社区 Ethereum Stackexchange - 为以太坊开发者提供讨论和帮助 Ethereum Research - 最具影响力的加密经济学研究论坛 ## 聊天室 {#chat-rooms} -Ethereum Cat Herders - 专注于为以太坊开发提供项目管理支持的社区。 -Ethereum Hackers - 由 ETHGlobal 管理的 Discord 聊天室:全世界以太坊黑客的线上社区。 -CryptoDevs - 关注以太坊发展的 Discord 社区 -EthStaker Discord - 社区为现有和潜在的质押人提供的指导、教育、支持和资源。 -Ethereum.org 网站团队 - 拜访社区中的团队和成员并与他们讨论 ethereum.org 的网络开发和设计 -Matos Discord - Web3 创作者社区,构建者、业界人士和以太坊爱好者在这里聚会。 我们热衷于 Web3 的开发、设计和文化。 来吧,我们一起来构建。 -Solidity Gitter - 有关 Solidity 开发的聊天 (Gitter) -Solidity Matrix - 有关 Solidity 开发的聊天 (Matrix) -以太坊堆栈交易所 *- 问答论坛* -Peera Community Forum *- 去中心化问答论坛* - -## YouTube 和 X(原 Twitter) {#youtube-and-twitter} - -以太坊基金会 - 及时了解以太坊基金会的最新动态 -@ethereum - 以太坊社区的主帐户 -@ethereumfndn - 以太坊基金会的官方帐户 -@ethdotorg - 为我们不断发展的全球社区构建的以太坊门户网站 -有影响力的以太坊 Twitter 帐户清单 +Ethereum Cat Herders - 为以太坊开发提供项目管理支持的社区 Ethereum Hackers - 由 ETHGlobal 运营的 Discord 聊天室:一个面向全球以太坊黑客的在线社区 CryptoDevs - 专注于以太坊开发的 Discord 社区 EthStaker Discord - 为现有和潜在质押者提供社区运营的指导、教育、支持和资源 Ethereum.org 网站团队 - 来与团队和社区成员聊聊 ethereum.org 网站的开发和设计 Matos Discord - Web3 创建者社区,这里聚集了构建者、行业领袖和以太坊爱好者。 我们热衷于 Web3 的开发、设计和文化。 与我们一起构建。 Solidity Gitter - Solidity 开发聊天室 (Gitter) Solidity Matrix - Solidity 开发聊天室 (Matrix) Ethereum Stack Exchange - 问答论坛 Peera Community Forum - 去中心化问答论坛 + +## YouTube 和 X (前身为 Twitter) {#youtube-and-twitter} + +以太坊基金会 - 了解以太坊基金会的最新动态 @ethereum - 面向社区的主要以太坊帐户 @ethereumfndn - 以太坊基金会的官方帐户 @ethdotorg - 通往以太坊的门户,为我们不断增长的全球社区而构建
    - 了解更多有关去中心化自治组织的信息 + 了解更多有关 DAO 的信息
    From 0775dbd7af70006632a78b8e313a5ed75507dfaa Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:47 -0800 Subject: [PATCH 091/581] update(i18n): public/content/translations/zh/roadmap/security/index.md --- .../translations/zh/roadmap/security/index.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/public/content/translations/zh/roadmap/security/index.md b/public/content/translations/zh/roadmap/security/index.md index 58f254d63ce..f901af21a84 100644 --- a/public/content/translations/zh/roadmap/security/index.md +++ b/public/content/translations/zh/roadmap/security/index.md @@ -7,31 +7,31 @@ alt: "以太坊路线图" template: roadmap --- -**以太坊已经是一个非常安全的**去中心化[智能合约](/glossary/#smart-contract)平台。 然而,我们仍可以进行一些改进,以确保以太坊能够抵御未来各种攻击。 这些改进包括对[以太坊客户端](/glossary/#consensus-client)处理竞争[区块](/glossary/#block)的方式进行微调,以及提高网络认为区块[“最终确定”](/developers/docs/consensus-mechanisms/pos/#finality)(这意味着在不对攻击者造成巨大经济损失的情况下无法改变区块)的速度。 +**以太坊已经是一个非常安全的**、去中心化的[智能合约](/glossary/#smart-contract)平台。 然而,我们仍可以进行一些改进,以确保以太坊能够抵御未来各种攻击。 这些改进包括对[以太坊客户端](/glossary/#consensus-client)处理竞争[区块](/glossary/#block)的方式进行微调,以及提高网络认为区块被[“最终确认”](/developers/docs/consensus-mechanisms/pos/#finality)(意味着在不对攻击者造成极端经济损失的情况下无法改变)的速度。 -此外,还可以进行一些改进,使审查交易变得更加困难,比如对区块提议者隐藏区块的实际内容,或者采用新的方法来识别客户端何时在审查。 这些改进将共同升级[权益证明](/glossary/#pos)协议,使从个人到企业在内的所有用户都对他们在以太坊上的应用程序、数据和资产随即产生信心。 +此外,还可以进行一些改进,使审查交易变得更加困难,比如对区块提议者隐藏区块的实际内容,或者采用新的方法来识别客户端何时在审查。 这些改进将共同升级[权益证明](/glossary/#pos)协议,使从个人到企业的所有用户都对他们在以太坊上的应用程序、数据和资产随即产生信心。 ## 质押提款 {#staking-withdrawals} -从[工作量证明](/glossary/#pow)升级到权益证明的过程始于以太坊的先驱们在存款合约中“质押”以太币。 这些以太币用于保护网络。 2023 年 4 月 12 日进行了第二次更新,允许提取质押的以太币。 自那时起,验证者可以自由地质押或提取以太币。 +从[工作量证明](/glossary/#pow)到权益证明的升级始于以太坊先驱在存款合约中“质押”其 ETH。 这些以太币用于保护网络。 2023 年 4 月 12 日进行了第二次更新,允许验证者提取已质押的 ETH。 自那时起,验证者可以自由地质押或提取以太币。 阅读关于提款的信息 -## 防御攻击 {#defending-against-attacks} +## 防范攻击 {#defending-against-attacks} -可以对以太坊的权益证明协议进行一些改进。 其中一项称为[视图合并](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739) - 这是一种更安全的[分叉](/glossary/#fork)选择算法,可以增加实施某些复杂攻击的难度。 +可以对以太坊的权益证明协议进行一些改进。 其中一个是 [view-merge](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739),这是一种更安全的[分叉](/glossary/#fork)选择算法,可使某些复杂的攻击类型更加困难。 -减少以太坊[最终确定](/glossary/#finality)区块所需的时间可以改善用户体验,并防止复杂的“重组”攻击,即攻击者试图重组最近的区块以获取利润或审查特定交易。 [**单时隙最终确定性 (SSF)**](/roadmap/single-slot-finality/) 是一种**尽可能减少最终确定延迟的方式**。 现在,攻击者理论上可以说服其他验证者重新配置 15 分钟的区块。 采用单时隙确定性后,该数值为 0。 从个人到应用程序和交易所,所有用户都可以从中受益,快速确保他们的交易不会被撤销,而网络也可以从中受益,防范一整类攻击。 +减少以太坊[最终确定](/glossary/#finality)区块所需的时间可以改善用户体验,并防止复杂的“重组”攻击,即攻击者试图重组最近的区块以获取利润或审查特定交易。 [**单时隙确定性 (SSF)**](/roadmap/single-slot-finality/)是**一种最大限度减少最终确定延迟的方法**。 现在,攻击者理论上可以说服其他验证者重新配置 15 分钟的区块。 采用单时隙确定性后,该数值为 0。 从个人到应用程序和交易所,所有用户都可以从中受益,快速确保他们的交易不会被撤销,而网络也可以从中受益,防范一整类攻击。 了解单时隙确定性 ## 防范审查 {#defending-against-censorship} -去中心化可以防止个人或一小部分[验证者](/glossary/#validator)的影响力过大。 新型质押技术有助于确保以太坊的验证者尽可能保持去中心化,同时还能防范硬件、软件和网络故障。 其中包括将验证者责任分散到多个[节点](/glossary/#node)的软件。 这被称为**分布式验证者技术 (DVT)**。 由于分布式验证者技术允许多台计算机共同参与验证,从而增加了冗余和容错性,因此我们鼓励[质押池](/glossary/#staking-pool)使用分布式验证者技术。 它还能将验证者密钥分散到多个系统中,而不是由一个运营商运行多个验证者。 这增加了不诚实运营商协调对以太坊的攻击的难度。 总之,它的想法是由_社区_而非个人运行验证者,从而提高安全性。 +去中心化可以防止个人或一小部分[验证者](/glossary/#validator)的影响力过大。 新型质押技术有助于确保以太坊的验证者尽可能保持去中心化,同时还能防范硬件、软件和网络故障。 这包括将验证者责任分散到多个[节点](/glossary/#node)的软件。 这被称为**分布式验证者技术 (DVT)**。 [质押池](/glossary/#staking-pool)会受到激励去使用分布式验证者技术 (DVT),因为它允许多台计算机共同参与验证,从而增加冗余和容错性。 它还能将验证者密钥分散到多个系统中,而不是由一个运营商运行多个验证者。 这增加了不诚实运营商协调对以太坊的攻击的难度。 总而言之,其理念是通过让验证者以_社区_而非个人形式运行来获得安全收益。 了解分布式验证者技术 -实施**提议者-构建者器分离 (PBS)** 将大大提高以太坊对审查的固有防范能力。 提议者-构建者器分离可以让一个验证者创建区块,另一个验证者在以太坊网络中广播区块。 这可以确保在整个网络中更加公平地分享利润最大化的区块构建算法带来的收益,**防止质押随着时间的推移集中到表现最好的机构质押人**。 区块提议者可以从区块建造商市场中选择收益最高的区块。 要进行审查,区块提议者往往需要选择收益较低的区块,这**在经济上不合理,而且很容易被网络上的其他验证者发现**。 +实施**提议者-构建者分离 (PBS)** 将大大提高以太坊对审查的内置防御能力。 提议者-构建者器分离可以让一个验证者创建区块,另一个验证者在以太坊网络中广播区块。 这可以确保在整个网络中更加公平地分享利润最大化的区块构建算法带来的收益,**防止质押随着时间的推移而集中**到表现最好的机构质押者。 区块提议者可以从区块建造商市场中选择收益最高的区块。 要进行审查,区块提议者往往需要选择收益较低的区块,这**在经济上不合理,而且很容易被网络上的其他验证者发现**。 提议者-构建者器分离还有一些潜在的附件功能,如加密交易和纳入清单,可以进一步提高以太坊的抗审查性。 这使得区块构建者和提议者无法看到其区块中包含的实际交易。 @@ -39,10 +39,10 @@ template: roadmap ## 保护验证者 {#protecting-validators} -老练的攻击者有可能识别出即将到来的验证者,并向它们发送垃圾邮件,以阻止它们提议区块。这被称为**拒绝服务 (DoS)**攻击。 实施[**秘密领袖选举 (SLE)**](/roadmap/secret-leader-election)可防止预先知道区块提议者,从而防范此类攻击。 其工作原理是对代表候选区块提议者的加密承诺进行不断混洗,并利用它们的顺序来决定选择哪个验证者,从而使验证者自己才能事先知道它们的顺序。 +老练的攻击者有可能识别出即将到来的验证者,并向它们发送垃圾邮件,以阻止它们提议区块;这被称为**拒绝服务 (DoS)** 攻击。 实施[**秘密领袖选举 (SLE)**](/roadmap/secret-leader-election)将能防止区块提议者被提前知晓,从而抵御这种类型的攻击。 其工作原理是对代表候选区块提议者的加密承诺进行不断混洗,并利用它们的顺序来决定选择哪个验证者,从而使验证者自己才能事先知道它们的顺序。 了解秘密领袖选举 ## 当前进展 {#current-progress} -**路线图上的安全升级已进入高级研究阶段**,但预计在一段时间内不会实现。 视图合并、提议者-构建者器分离、单时隙确定性和秘密领袖选举的下一步工作是最终确定规范并开始构建原型。 +**路线图上的安全升级已进入高级研究阶段**,但预计在一段时间内不会实施。 view-merge、提议者-构建者分离 (PBS)、单时隙确定性 (SSF) 和秘密领袖选举 (SLE) 的后续步骤是敲定规范并开始构建原型。 From d72f9ede1c0bdb72342b991ed329abd90fa1176a Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:50 -0800 Subject: [PATCH 092/581] update(i18n): public/content/translations/zh/community/grants/index.md --- .../translations/zh/community/grants/index.md | 67 ++++++++++++------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/public/content/translations/zh/community/grants/index.md b/public/content/translations/zh/community/grants/index.md index b58aeaf5957..b147bc25d37 100644 --- a/public/content/translations/zh/community/grants/index.md +++ b/public/content/translations/zh/community/grants/index.md @@ -1,5 +1,5 @@ --- -title: 以太坊基金会与社区资助方案 +title: 以太坊基金会与社区资助计划 description: 以太坊生态系统的资助方案清单。 lang: zh --- @@ -10,38 +10,59 @@ lang: zh 这个列表由我们的社区管理。 如果有内容缺失或错误,请编辑此页面! -## 庞大的以太坊生态系统 {#broad-ethereum-ecosystem} + + +
    创始人,需要帮助加速您的业务吗? [前往创始人支持](/founders/)
    +
    + +## 广泛的以太坊生态系统 {#broad-ethereum-ecosystem} 这些计划通过向大量项目提供资助来支持庞大的以太坊生态系统。 其中包括可扩容性、社区建设、安全、隐私等解决方案。 这些资助并非专门针对任何一个以太坊平台,如果不确定,可以从这里开始。 -- [以太坊基金会生态系统资助方案](https://esp.ethereum.foundation) - _资助有利于以太坊的开源项目,重点资助通用工具、基础设施、研究和公共物品_ -- [Moloch 去中心化自治组织](https://www.molochdao.com/) - _隐私、二层网络扩容、客户端安全性等_ -- [去中心化自治组织资助](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _资助组织的 Google 电子表格_ -- [学术资助](https://esp.ethereum.foundation/academic-grants) - _为以太坊相关学术工作提供资助_ +- [EF 生态系统支持计划](https://esp.ethereum.foundation) - _为有利于以太坊的开源项目提供资金,尤其侧重于通用工具、基础设施、研究和公共物品_ +- [学术资助](https://esp.ethereum.foundation/academic-grants) - _为支持以太坊相关学术工作而设的资助_ + +## 资助列表聚合器和平台 {#grant-list-aggregators} + +这些资源汇总并且整理了以太坊生态系统中的各类资助机会,让你更容易发现与项目需求匹配的资金支持。 我们根据用户特色对它们进行了分类,帮助你根据自身的资金需求快速找到最相关的资源。 + +### 面向所有资助申请者:综合目录 {#comprehensive-directories} + +这类通用平台涵盖了整个 Web3 领域内的各类资助项目,对于任何寻求资金支持的人来说,都是极具价值的起点: + - [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _Blockworks 编译了一份包含所有资助、提案征求和漏洞悬赏的完整名录。_ +- [Blockchain Grants](https://www.blockchaingrants.org/) - _区块链和加密货币资助目录_ +- [Karma Funding Map](https://gap.karmahq.xyz/funding-map) - 所有 Web3 资助计划目录,每周更新 + +### 面向开发者和构建者 {#for-developers-and-builders} + +- [Grant Programs Viewer](https://airtable.com/shr86elKgWTSCP4AY) - _公开的资助项目 Airtable 数据库_ +- [Web3 Grants Spreadsheet](https://docs.google.com/spreadsheets/d/1c8koZCI-GLnD8MG-eFcXPOBCNu1v8-aXIfwAAvc7AMc/edit#gid=0) - _提供 Web3 资助机会的 Google 电子表格_ +- [Arbitrum Grants](https://arbitrum.foundation/grants) — Arbitrum DAO 和 [The Arbitrum Foundation](https://arbitrum.foundation/) + +### 面向 DeFi 项目和金融应用 {#for-defi-projects} + +- [LlamaoGrants](https://wiki.defillama.com/wiki/LlamaoGrants) - _DeFi Llama 的资助计划目录_ +- [AlphaGrowth Grants](https://alphagrowth.io/crypto-web3-grants-list) - _加密货币和 Web3 资助的综合列表_ +- [Uniswap Foundation Grants](https://www.uniswapfoundation.org/build) - _为 DeFi 构建者提供的 Unichain 和 Uniswap v4 资助与支持_ -## 特定项目 {#project-specific} +### 面向 DAO 贡献者和治理创新者 {#for-dao-contributors} -这些项目为旨在开发和实验自己技术的项目建立了自己的资助。 +面向社区驱动项目和治理实验的资源 -- [Aave 资助方案](https://aavegrants.org/) – _[Aave](https://aave.com/) 资助去中心化自治组织_ -- [Balancer](https://grants.balancer.community/) – _[Balancer](https://balancer.fi/) 生态系统基金_ -- [Chainlink 资助方案](https://chain.link/community/grants) - _[Chainlink](https://chain.link/) 社区资助_ -- [Decentraland 资助方案](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/) 去中心化自治组织元宇宙_ -- [Lido 生态系统资助组织 (LEGO)](https://lido.fi/lego) – _[Lido](https://lido.fi/) 金融生态系统_ -- [MetaMask 方案](https://metamaskgrants.org/) - _-[MetaMask](https://metamask.io/) 员工主导的资助去中心化自助组织_ -- [SKALE 网络资助方案](https://skale.space/developers#grants) - _[SKALE 网络](https://skale.space/)生态系统_ -- [Swarm 基金会资助计划](https://my.ethswarm.org) - _[Swarm 基金会](https://www.ethswarm.org/)生态系统_ -- [The Graph](https://thegraph.com/ecosystem/grants/) – _[The Graph](https://thegraph.com/) 生态系统_ -- [Uniswap 资助计划](https://www.uniswapfoundation.org/approach) – _[Uniswap](https://uniswap.org/) 社区_ +- [DAO Grants](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _提供资助的组织的 Google 电子表格_ +- [MetaGov Database](https://docs.google.com/spreadsheets/d/1e5g-dlWWsK2DZoZGBgfxyfGNSddLk-V7sLEgfPjEhbA/edit#gid=780420708) - _综合 Web3 资助地图_ -## 二次方融资 {#quadratic-funding} +### 公共物品和影响 {#public-goods-and-impact} -以太坊的开源属性催生了一种有趣的新型募资模式:二次方融资。 这有可能改进我们在未来为各种公共产品募资的方式。 二次方募资确保获得最多资金的项目是那些具有最独特需求的项目。 换句话说,就是那些能够改善大多数人生活的项目。 [关于二次方融资的更多信息。](/defi/#quadratic-funding) +这些项目专注于资助那些更广泛的社区、公共产品以及更具影响力的计划。 这些平台包括资助提供方,以及利用链上资金分配机制(包括[二次方募资](/defi/#quadratic-funding))的捐赠平台: -- [Gitcoin](https://gitcoin.co/grants) -- [clr.fund](https://clr.fund/) +- [Gitcoin](https://www.gitcoin.co/program) - _Gitcoin Grants 利用多种资金分配机制为以太坊生态系统中的开源项目和公共产品提供资金_ +- [Octant](https://octant.app/home) - _公共产品资助生态系统,平衡公共利益与个人财务赋能_ +- [Giveth](https://giveth.io/) - _加密捐赠平台,支持公益项目直接捐赠,且不收取任何额外费用_ +- [Artizen](https://artizen.fund/) - _助力创作者对接资源,为艺术、科学、技术与文化前沿领域的新项目提供资金支持_ +- [Quadratic Accelerator](https://qacc.giveth.io/) - _初创企业加速计划,利用二次方募资支持造福公共产品的项目_ ## 在以太坊工作 {#work-in-ethereum} -没有准备好启动你自己的项目? 有数百家公司正在积极寻求热情人士的加入,为以太坊生态系统奉献力量。 正在寻找更多信息? [点击查看更多以太坊相关工作](/community/get-involved/#ethereum-jobs) +没有准备好启动你自己的项目? 有数百家公司正在积极寻求热情人士的加入,为以太坊生态系统奉献力量。 正在寻找更多信息? [查看以太坊相关工作](/community/get-involved/#ethereum-jobs) From 620924c35ab57bfae2b914338af95547da94f0e5 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:53 -0800 Subject: [PATCH 093/581] update(i18n): src/intl/zh/page-roadmap-vision.json --- src/intl/zh/page-roadmap-vision.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/intl/zh/page-roadmap-vision.json b/src/intl/zh/page-roadmap-vision.json index 063403a444d..a39cb8e0a16 100644 --- a/src/intl/zh/page-roadmap-vision.json +++ b/src/intl/zh/page-roadmap-vision.json @@ -16,15 +16,15 @@ "page-roadmap-vision-scalability-desc": "以太坊需要在不增加网络中节点容量的情况下能够增加每秒种处理的交易量。节点是重要的网络参与者,它存储并运行区块链。增加节点容量并不现实,因为只有功能强大、价格昂贵的计算机才能做到。为了扩容,以太坊需要每秒钟处理更多的交易并需要更多节点。节点越多意味着越安全。", "page-roadmap-vision-scalability-desc-3": "二层网络卷叠通过将交易移到链下并仅将摘要数据发布到以太坊来扩展以太坊。这种批量处理增加了以太坊的吞吐量,同时大大降低了用户的费用。", "page-roadmap-vision-scalability-desc-4": "卷叠需要使用一层网络上的低成本存储空间,以尽可能降低用户的交易费用。存储空间将采用附加到以太坊区块的二进制大对象的形式。最终,将有许多二进制大对象附加到以太坊区块,为许多卷叠提供低廉的存储空间。", - "page-roadmap-vision-security": "安全性", + "page-roadmap-vision-security": "安全性。", "page-roadmap-vision-security-desc": "计划进行的升级将提升以太坊面对协同攻击时的安全性。", "page-roadmap-vision-security-desc-3": "权益证明机制下,增强的安全性源自于对发动攻击的更强的加密经济遏制措施。这是因为,在权益证明机制下,保证网络安全的验证者们必须向协议中质押大量以太币。如果他们试图攻击网络,协议可以自动销毁他们的以太币。", "page-roadmap-vision-security-desc-5": "但是同样重要的是,即将实施一些升级,保护验证者免遭拒绝服务攻击、增强验证者的匿名性并将区块构建和区块传播分离。这些升级防止验证者个人和整个网络免受活性攻击并且抗审查。", "page-roadmap-vision-security-desc-5-link": "有关权益证明的更多信息", "page-roadmap-vision-security-desc-10": "质押还意味着你无需投资购买高性能硬件即可直接参与共识。这样,应该会促使更多的人成为验证者,提升网络的去中心化并减少攻击面。", - "page-roadmap-vision-security-staking": "质押ETH", + "page-roadmap-vision-security-staking": "质押以太币", "page-roadmap-vision-security-validator": "你可以通过质押以太币成为验证者。", - "page-roadmap-vision-staking-lower": "关于质押的更多信息", + "page-roadmap-vision-staking-lower": "有关质押的更多信息", "page-roadmap-vision-subtitle": "以太坊将持续增长,直到造福全人类。", "page-roadmap-vision-sustainability": "可持续性", "page-roadmap-vision-sustainability-desc-1": "如今以太坊已成为一条绿色环保的区块链。在工作量证明过渡到权益证明后,能耗将会减少大约 99.95%。", @@ -47,7 +47,7 @@ "page-roadmap-vision-trilemma-p-2": "以太坊升级致力于摆脱这种三难困境,但是面临很大的挑战。", "page-roadmap-vision-trilemma-press-button": "点击三角形上的按钮以更好地理解去中心化扩容问题。", "page-roadmap-vision-trilemma-text-1": "去中心化", - "page-roadmap-vision-trilemma-text-2": "安全性", + "page-roadmap-vision-trilemma-text-2": "安全性。", "page-roadmap-vision-trilemma-text-3": "可扩展性", "page-roadmap-vision-trilemma-title-1": "探索可扩展性三难困境", "page-roadmap-vision-trilemma-title-2": "以太坊升级和去中心化扩容", From ac425f70499bbc853533eceb336a00f4ff261ca4 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:56 -0800 Subject: [PATCH 094/581] update(i18n): public/content/translations/zh/prediction-markets/index.md --- .../zh/prediction-markets/index.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 public/content/translations/zh/prediction-markets/index.md diff --git a/public/content/translations/zh/prediction-markets/index.md b/public/content/translations/zh/prediction-markets/index.md new file mode 100644 index 00000000000..ba13d4f7453 --- /dev/null +++ b/public/content/translations/zh/prediction-markets/index.md @@ -0,0 +1,84 @@ +--- +title: 预测市场 +lang: zh +template: use-cases +image: /images/use-cases/prediction-markets.png +sidebarDepth: 2 +summaryPoint1: 通过精准预测获取经济回报 +summaryPoint2: 关于未来事件的高质量预测 +buttons: + - content: 了解更多 + toId: how-prediction-markets-work + - content: 探索应用程序 + toId: find-a-prediction-market + isSecondary: false +--- + +预测市场使用群体智慧和财务激励来预测事件。 它们提供多样化、高质量的数据,并在 2024 年美国大选期间获得广泛关注。 选举。 + +## 预测市场如何运作 {#how-prediction-markets-work} + +与依赖专家意见、有限的调查样本或历史数据的传统预测方法不同,预测市场通过**实时财务激励**和**群体智慧**,针对特定事件(如选举、加密货币价格、体育赛事结果等任何领域)生成动态预测洞察。 + +这使得任何人都可通过资金投入来表明对具体结果的支持。 +预测市场通过允许用户对现实事件进行投注,并根据不断涌入的新信息动态调整赔率,使具备深度信息支撑的观点获得更高价值权重,同时让精准的预测结果能够得到实质性回报。 + +理论上而言,由于投注者可通过正确预判获取收益,预测市场对现实事件结果的推演精度较高。 基于区块链的预测市场更加令人兴奋,因为几乎任何人都可以参与预测并有可能获得稳定币或加密货币奖励。 + +## 为什么这很重要? {#why-does-this-matter} + +与传统预测不同,基于区块链的预测市场具有以下特点: + + + + + + + +即便作为市场旁观者,也有几率通过链上透明的博弈行为与价格信号,获取一些常规渠道无法获得数据。 可以这样想: + +1. 预测与特定事件相关(例如,Beam Chain 会在 2030 年前部署吗?)。 +2. 参与者将根据对不同结果的概率判断进行代币化份额交易,这种市场博弈过程本质上通过价格波动形成群体预期的可视化指标。 +3. 市场通过价格发现机制随参与者质押其预测判断持续调整估值,这种动态博弈过程不断生成事件结果的实时动态预期画像。 +4. 押注正确的参与者,将根据其质押金额的比例获得相应收益。 +5. 市场观察者可依托开放数据,为其研究分析或讨论提供依据。 + +## 寻找可预测的市场 {#find-a-prediction-market} + +目前市面上已有许多基于以太坊构建的预测市场平台。 以下举例的是当前最具代表性的几个预测平台: + + + + + + + +

    警惕风险

    +

    只下注你能承受的金额,并注意潜在的上瘾行为。

    +
    +
    +
    + +## 挑战与风险{#challenges-and-risks} + +区块链上的预测市场可能面临一些影响公平性、合法性和准确性的挑战。 + +⚠️ **市场操控**——富有的玩家可以通过洗盘交易影响结果。 +💧 **流动性问题**——参与度低([流动性差](https://www.investopedia.com/terms/t/thinmarket.asp))会降低该市场的可信度。 +🏛 **监管不确定性**——政府对某些平台施加了限制。 + +为了缓解这些问题,以太坊开发人员正在尝试诸如 futarchy(预测市场治理)和去中心化身份验证等解决方案。 + +## 预测市场实验 {#experimenting-with-prediction-markets} + +预测市场正在重塑数字时代的决策方式 通过利用以太坊,他们提供了**公平、开放和有奖励机制的预测未来的方式**。 + +除了金融方面, 预测工具还有多方用途。 例如,在 [DevCon 改进提案](https://forum.devcon.org/t/futarchy-decision-markets-for-deciding-next-devcon/5305) (DIP) 中,有人建议 DevCon 的组织者使用预测市场来预估未来活动的出席人数。 + +这将有助于组织者提前预知哪个地点能带来规模最大的活动,哪个地点能带来最国际化的参与度。 这样做的好处是,DevCon 的组织者可以更快的完成签证政策、机场交通和当地生活成本等的考察,同时还可以通过收集来的数据了解参会人员最感兴趣的地点。 + +## 扩展阅读{#further-reading} + +[从预测市场到信息金融](https://vitalik.eth.limo/general/2024/11/09/infofinance.html) - Vitalik Buterin +[以太坊上的去中心化预测市场开发](https://blockchain.oodles.io/dev-blog/decentralized-prediction-market-development-ethereum/) +[Augur 项目白皮书](https://github.com/AugurProject/whitepaper) \ No newline at end of file From 27b17e18e218767e2bda12bcd2924e28c7ea78fd Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:11:59 -0800 Subject: [PATCH 095/581] update(i18n): public/content/translations/zh/energy-consumption/index.md --- .../zh/energy-consumption/index.md | 61 +++++++++---------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/public/content/translations/zh/energy-consumption/index.md b/public/content/translations/zh/energy-consumption/index.md index 73ecbc8998f..5eb38f93547 100644 --- a/public/content/translations/zh/energy-consumption/index.md +++ b/public/content/translations/zh/energy-consumption/index.md @@ -6,9 +6,9 @@ lang: zh # 以太坊的能源消耗 {#proof-of-stake-energy} -以太坊是一个绿色区块链。 以太坊的[权益证明](/developers/docs/consensus-mechanisms/pos)共识机制,使用以太币而不是[能源](/developers/docs/consensus-mechanisms/pow)来保护网络安全。 整个以太坊全球网络的能源消耗约为 [0.0026 亿千瓦时/年](https://carbon-ratings.com/eth-report-2022)。 +以太坊是一个绿色区块链。 以太坊的[权益证明](/developers/docs/consensus-mechanisms/pos)共识机制使用 ETH 而不是[能源来保障网络安全](/developers/docs/consensus-mechanisms/pow)。 以太坊全球网络的能源消耗约为 [~0.0026 TWh/年](https://carbon-ratings.com/eth-report-2022)。 -以太坊的能耗估算值来自[加密碳评级机构 (CCRI)](https://carbon-ratings.com) 的一项研究。 该机构对以太坊网络的电力消耗和碳足迹进行了自下而上的估算([查看报告](https://carbon-ratings.com/eth-report-2022))。 他们测量了具有各种硬件和客户端软件配置的各种不同节点的耗电量。 以太坊网络的年耗电量估算值为 **2,601 兆瓦时**(0.0026 亿千瓦时),相当于应用了区域特定碳强度因子的 **870 吨二氧化碳当量**的年碳排放量。 在节点加入和退出网络时,该值会随之变化 - 可通过使用[剑桥区块链网络可持续性指数](https://ccaf.io/cbnsi/ethereum)提供的连续 7 天的平均估算值进行跟踪(请注意他们使用的估算方式略有不同 - 详细信息请参见其网站)。 +以太坊的能耗估算值来自 [CCRI(加密货币碳评级研究所)](https://carbon-ratings.com) 的一项研究。 他们对以太坊网络的电力消耗和碳足迹进行了自下而上的估算([查看报告](https://carbon-ratings.com/eth-report-2022))。 他们测量了具有各种硬件和客户端软件配置的各种不同节点的耗电量。 该网络年耗电量估计为 **2,601 兆瓦时** (0.0026 TWh),应用特定区域碳强度因子后,相当于每年 **870 吨二氧化碳当量 (CO2e)** 的碳排放量。 该值会随着节点加入和离开网络而变化——您可以通过[剑桥区块链网络可持续性指数](https://ccaf.io/cbnsi/ethereum)提供的 7 日滚动平均估算值来跟踪(请注意,他们的估算方法略有不同——详情请见其网站)。 为全面了解以太坊的能源消耗,我们可以比较某些其他产品和行业的能源消耗年化估算值。 这将有助于我们更好地理解以太坊能源消耗估算值是高还是低。 @@ -16,34 +16,34 @@ lang: zh 上面的图表显示了以太坊与其他一些产品和行业的能源消耗估算值,单位为亿千瓦时/年。 所有估算值均来自 2023 年7 月获得的公开信息,其来源链接在下表列出。 -| | 年化能源消耗(亿千瓦时) | 和权益证明以太坊比较 | 来源 | -|:----------- |:------------:|:----------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| 全球数据中心 | 190 | 73,000 倍 | [来源](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | -| 比特币 | 149 | 53,000 倍 | [来源](https://ccaf.io/cbnsi/cbeci/comparisons) | -| 开采金矿 | 131 | 50,000 倍 | [来源](https://ccaf.io/cbnsi/cbeci/comparisons) | -| 美国游戏行业\* | 34 | 13,000 倍 | [来源](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | -| 工作量证明以太坊 | 21 | 8,100 倍 | [来源](https://ccaf.io/cbnsi/ethereum/1) | -| Google | 19 | 7,300 倍 | [来源](https://www.gstatic.com/gumdrop/sustainability/google-2022-environmental-report.pdf) | -| Netflix | 0.457 | 176 倍 | [来源](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | -| PayPal | 0.26 | 100 倍 | [来源](https://s202.q4cdn.com/805890769/files/doc_downloads/global-impact/CDP_Climate_Change_PayPal-(1).pdf) | -| AirBnB | 0.02 | 8 倍 | [来源](https://s26.q4cdn.com/656283129/files/doc_downloads/governance_doc_updated/Airbnb-ESG-Factsheet-(Final).pdf) | -| **权益证明以太坊** | **0.0026** | **1 倍** | [来源](https://carbon-ratings.com/eth-report-2022) | +| | 年化能源消耗(亿千瓦时) | 和权益证明以太坊比较 | 来源 | +| :---------- | :------------------------: | :--------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| 全球数据中心 | 190 | 73,000 倍 | [来源](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | +| 比特币 | 149 | 53,000 倍 | [来源](https://ccaf.io/cbnsi/cbeci/comparisons) | +| 开采金矿 | 131 | 50,000 倍 | [来源](https://ccaf.io/cbnsi/cbeci/comparisons) | +| 美国游戏行业\* | 34 | 13,000 倍 | [来源](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | +| 工作量证明以太坊 | 21 | 8,100 倍 | [来源](https://ccaf.io/cbnsi/ethereum/1) | +| Google | 19 | 7,300 倍 | [来源](https://www.gstatic.com/gumdrop/sustainability/google-2022-environmental-report.pdf) | +| Netflix | 0.457 | 176 倍 | [来源](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | +| PayPal | 0.26 | 100 倍 | [来源](https://s202.q4cdn.com/805890769/files/doc_downloads/global-impact/CDP_Climate_Change_PayPal-\(1\).pdf) | +| AirBnB | 0.02 | 8 倍 | [来源](https://s26.q4cdn.com/656283129/files/doc_downloads/governance_doc_updated/Airbnb-ESG-Factsheet-\(Final\).pdf) | +| **权益证明以太坊** | **0.0026** | **1倍** | [来源](https://carbon-ratings.com/eth-report-2022) | \*包括个人电脑、笔记本电脑和游戏机等用户终端设备。 -获得准确的能源消耗估算值比较复杂,尤其是被衡量对象有着复杂的供应链或部署细节影响效率时。 例如,Netflix 和 Google 的能源消耗估算值存在差异,这取决于估算值只包括用于维护系统和向用户提供内容的能耗(_直接能耗_),还是也包括制作内容、运营公司、投放广告等方面所需的能耗(_间接能耗_)。 间接能耗还包括用于在用户终端设备(例如电视,电脑和手机)上消费内容的能耗。 +获得准确的能源消耗估算值比较复杂,尤其是被衡量对象有着复杂的供应链或部署细节影响效率时。 例如,Netflix 和 Google 的能耗估算值会有所不同,这取决于它们是仅包括用于维护系统和向用户交付内容的能源(_直接支出_),还是包括了制作内容、运营公司办公室、广告等所需的支出(_间接支出_)。 间接能耗还包括用于在用户终端设备(例如电视,电脑和手机)上消费内容的能耗。 以上估算值的比较并不完美。 间接能耗的数量因来源而异,并且很少包括来自用户终端设备的能耗。 每一个数据来源都有关于被衡量对象的更多详细信息。 -上面的表格与图表还包括与比特币及工作量证明以太坊的比较。 需要注意的是,工作量证明以太坊网络的能源消耗不是静态的,它每天都在变化。 不同来源的能耗估算值也会有很大差异。 这个话题引起了一些微妙的[争论](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/),不仅涉及能源消耗量,还涉及能源来源和相关伦理问题。 能源消耗不一定与环境足迹精确对应,因为不同的项目可能使用不同的能源,例如更低或更高比例的可再生能源。 例如,[剑桥比特币耗电量指数](https://ccaf.io/cbnsi/cbeci/comparisons)指出,理论上讲,天然气燃除或在输配电过程中损失的电力就可以满足比特币网络的能源需求。 以太坊的可持续性路线是用一种环保替代方案取代网络中的高能耗部分。 +上面的表格与图表还包括与比特币及工作量证明以太坊的比较。 需要注意的是,工作量证明以太坊网络的能源消耗不是静态的,它每天都在变化。 不同来源的能耗估算值也会有很大差异。 这个话题引发了微妙的[辩论](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/),不仅涉及消耗的能源量,还涉及能源来源和相关伦理问题。 能源消耗不一定与环境足迹精确对应,因为不同的项目可能使用不同的能源,例如更低或更高比例的可再生能源。 例如,[剑桥比特币耗电量指数](https://ccaf.io/cbnsi/cbeci/comparisons)指出,理论上,比特币网络的电力需求可以通过天然气燃除或在输配电过程中本会损失的电力来满足。 以太坊的可持续性路线是用一种环保替代方案取代网络中的高能耗部分。 -可以在[剑桥区块链网络可持续性指数网站](https://ccaf.io/cbnsi/ethereum)上查看多个不同行业的能源消耗和一氧化碳排放估算值。 +您可以在[剑桥区块链网络可持续性指数网站](https://ccaf.io/cbnsi/ethereum)上浏览许多行业的能源消耗和碳排放估算值。 -## 每笔交易的能耗估算值 {#per-transaction-estimates} +## 每笔交易的估算值 {#per-transaction-estimates} 许多文章估算的是区块链上“每笔交易”的能源消耗。 然而,这种估算可能会产生误导,因为提出和验证区块所需的能源与区块中的交易数量无关。 如果以每笔交易为单位计算能源消耗,意味着交易越少能源消耗越少,反之亦然,但事实并非如此。 而且,每笔交易的能源消耗估算值高度依赖于区块链的交易吞吐量是如何定义的,并且可以通过调整这个定义来使估算值看起来更大或更小。 -例如,在以太坊上,交易吞吐量不仅是基础层的交易吞吐量,还包括所有“[二层网络](/layer-2/)”卷叠的交易吞吐量总和。 二层网络的交易吞吐量总和通常未包含在计算中,但可以解释排序者使用的额外能源(少量)以及他们处理的交易数量(大量)可能会大幅降低每笔交易的能源消耗估算值。 这就是为什么跨平台比较每笔交易的能源消耗可能造成误导的原因之一。 +例如,在以太坊上,交易吞吐量不仅是基础层的吞吐量,还是其所有“[二层网络](/layer-2/)”卷叠的交易吞吐量总和。 二层网络的交易吞吐量总和通常未包含在计算中,但可以解释排序者使用的额外能源(少量)以及他们处理的交易数量(大量)可能会大幅降低每笔交易的能源消耗估算值。 这就是为什么跨平台比较每笔交易的能源消耗可能造成误导的原因之一。 ## 以太坊的碳债务 {#carbon-debt} @@ -51,15 +51,15 @@ lang: zh 创立伊始,以太坊就计划实施权益证明共识机制,但要施这种共识机制而不牺牲安全性和去中心化,需要多年的重点研究和开发。 因此,我们使用了工作量证明机制启动以太坊网络。 工作量证明机制要求矿工使用计算硬件进行值计算,而这个过程中会消耗能源。 -![合并前后以太坊能源消耗比较,左侧 330 米高的埃菲尔铁塔表示以太坊合并前的高能耗,右侧 4 厘米高的乐高小人代表以太坊合并后大幅降低的能耗](energy_consumption_pre_post_merge.png) +![合并前后以太坊的能源消耗对比,左边是埃菲尔铁塔(330 米高),象征着合并前的高能耗,右边是一个 4 厘米高的小乐高人仔,代表合并后能源使用量的大幅减少](energy_consumption_pre_post_merge.png) -CCRI 估计,以太坊的年化耗电量会因合并减少 **99.988%** 以上。 同样,以太坊的碳足迹减少了大约 **99.992%**(二氧化碳当量从 11,016,000 吨减少到 870 吨)。 比较而言,排放减少量就如同从埃菲尔铁塔的高度下降到小塑料玩偶一般巨大,如上图所示。 因此,保护网络的环境成本大大降低。 同时,据信网络安全也得到改善。 +CCRI 估计,合并将以太坊的年化用电量减少了 **99.988%** 以上。 同样,以太坊的碳足迹减少了约 **99.992%**(二氧化碳当量从 11,016,000 吨降至 870 吨)。 比较而言,排放减少量就如同从埃菲尔铁塔的高度下降到小塑料玩偶一般巨大,如上图所示。 因此,保护网络的环境成本大大降低。 同时,据信网络安全也得到改善。 -## 绿色应用程序层 {#green-applications} +## 绿色应用层 {#green-applications} -尽管以太坊的能源消耗非常低,但以太坊上也出现了大量不断增长且高度活跃的[**再生金融 (ReFi)**](/refi/) 社区。 再生金融应用程序使用去中心化金融组件来构建具有积极外部影响,从而使环境受益的金融应用程序。 再生金融是更广泛的[“太阳朋克”](https://en.wikipedia.org/wiki/Solarpunk)运动的一部分,这项运动与以太坊高度契合,旨在将技术进步和环境管理结合起来。 以太坊具有去中心化、无需许可和可组合的特性,这使其成为再生金融和太阳朋克社区的理想基础层。 +虽然以太坊的能耗非常低,但在以太坊上还有一个庞大、不断增长且高度活跃的[**再生金融 (ReFi)**](/refi/) 社区正在建设中。 再生金融应用程序使用去中心化金融组件来构建具有积极外部影响,从而使环境受益的金融应用程序。 ReFi 是更广泛的[“太阳朋克”](https://en.wikipedia.org/wiki/Solarpunk)运动的一部分,该运动与以太坊密切相关,旨在将技术进步与环境管理相结合。 以太坊具有去中心化、无需许可和可组合的特性,这使其成为再生金融和太阳朋克社区的理想基础层。 -Web3 原生公共物品融资平台,如 [Gitcoin](https://gitcoin.co) 举行气候回合,推动在以太坊应用程序层上形成环境意识。 通过制定这些计划(以及其他,例如[去中心化科学](/desci/)),以太坊正在成为一项对环境和社会有益的技术。 +像 [Gitcoin](https://gitcoin.co) 这样的 Web3 原生公共物品募资平台会举办气候募资轮,以鼓励在以太坊应用层进行具有环保意识的建设。 通过这些倡议(以及其他,例如 [DeSci](/desci/))的发展,以太坊正在成为一种对环境和社会具有净积极影响的技术。 @@ -70,18 +70,17 @@ Web3 原生公共物品融资平台,如 [Gitcoin](https://gitcoin.co) 举行 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [剑桥区块链网络可持续性指数](https://ccaf.io/cbnsi/ethereum) -- [白宫关于工作量证明区块链的报告](https://web.archive.org/web/20221109005700/https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf) -- [以太坊排放量:一种自下而上的估算方法](https://kylemcdonald.github.io/ethereum-emissions/) - _Kyle McDonald_ -- [以太坊能源消耗指数](https://digiconomist.net/ethereum-energy-consumption/) - _Digiconomist_ +- [关于工作量证明区块链的白宫报告](https://web.archive.org/web/20221109005700/https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf) +- [以太坊排放量:自下而上的估算](https://kylemcdonald.github.io/ethereum-emissions/) - _Kyle McDonald_ +- [以太坊能耗指数](https://digiconomist.net/ethereum-energy-consumption/) - _Digiconomist_ - [ETHMerge.com](https://ethmerge.com/) - _[@InsideTheSim](https://twitter.com/InsideTheSim)_ -- [合并 - 对以太坊网络电力消耗和碳足迹的影响](https://carbon-ratings.com/eth-report-2022) - _CCRI_。 +- [合并 - 对以太坊网络用电量和碳足迹的影响](https://carbon-ratings.com/eth-report-2022) - _CCRI_ - [以太坊的能源消耗](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8) -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} -- [以太坊愿景](/roadmap/vision/) - [信标链](/roadmap/beacon-chain) - [合并](/roadmap/merge/) From da633f3d6ffce01bdad58e9ca56cd0b15238e45a Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:02 -0800 Subject: [PATCH 096/581] update(i18n): src/intl/zh/page-developers-docs.json --- src/intl/zh/page-developers-docs.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/intl/zh/page-developers-docs.json b/src/intl/zh/page-developers-docs.json index 1e0e420388e..bad1421c664 100644 --- a/src/intl/zh/page-developers-docs.json +++ b/src/intl/zh/page-developers-docs.json @@ -83,9 +83,9 @@ "docs-nav-oracles-description": "如何将信息注入到以太坊区块链中", "docs-nav-programming-languages": "编程语言", "docs-nav-programming-languages-description": "如何使用你可能已经知道的语言开始使用以太坊", - "docs-nav-proof-of-authority": "权威证明", - "docs-nav-proof-of-stake": "权益证明", - "docs-nav-proof-of-work": "工作量证明", + "docs-nav-proof-of-authority": "授权证明。", + "docs-nav-proof-of-stake": "权益证明。", + "docs-nav-proof-of-work": "工作量证明。", "docs-nav-python": "Python", "docs-nav-readme": "概述", "docs-nav-ruby": "Ruby", @@ -116,6 +116,7 @@ "docs-nav-transactions": "交易", "docs-nav-transactions-description": "转账和其他导致以太坊状态变化的行为", "docs-nav-upgrading-smart-contracts": "升级智能合约", + "docs-nav-naming-smart-contracts": "为智能合约命名", "docs-nav-verifying-smart-contracts": "验证智能合约", "docs-nav-web2-vs-web3": "Web2 与 Web3 的对比", "docs-nav-web2-vs-web3-description": "基于区块链的应用程序提供的基本差异", From 86ffcd304866663a667d53d50cfefeb5a2493645 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:05 -0800 Subject: [PATCH 097/581] update(i18n): public/content/translations/zh/staking/withdrawals/index.md --- .../zh/staking/withdrawals/index.md | 102 ++++++++---------- 1 file changed, 46 insertions(+), 56 deletions(-) diff --git a/public/content/translations/zh/staking/withdrawals/index.md b/public/content/translations/zh/staking/withdrawals/index.md index 6a85cf10661..497914e2869 100644 --- a/public/content/translations/zh/staking/withdrawals/index.md +++ b/public/content/translations/zh/staking/withdrawals/index.md @@ -13,13 +13,9 @@ summaryPoints: - 完全退出质押的验证者将收到他们的剩余余额 --- - -2023 年 4 月 12 日进行的上海/卡佩拉升级已实现质押提款功能。 更多关于上海/卡佩拉升级的信息 - +**质押提款**指的是将 ETH 从以太坊共识层(信标链)上的验证者账户转移到执行层,以便进行交易。 -**质押提款**是指将以太币从以太坊共识层(信标链)上的验证者帐户转移到可以进行交易的执行层。 - -用户提供提款地址后,超过 32 个以太币的余额的**奖励支付**将自动定期发送到和每个验证者相关的提款地址。 用户还可以**完全退出质押**,解锁他们全部的验证者余额。 +一旦用户提供了提款地址,超过 32 ETH 的**超额余额奖励**将自动并定期发送至每个验证者关联的提款地址。 用户也可以**完全退出质押**,解锁其全部验证者余额。 ## 质押奖励 {#staking-rewards} @@ -46,8 +42,7 @@ summaryPoints: - - 每个验证者帐户一次只能分配一个提款地址。一旦选择地址并提交到共识层,就无法撤消或再次更改。 在提交前,请仔细检查所提供地址的所有权和准确性。 +每个验证者账户只能分配一个提款地址,且仅可分配一次。 一旦选定地址并提交到共识层,便无法撤销或再次更改。 提交前,请仔细检查所提供地址的所有权和准确性。 @@ -56,22 +51,22 @@ summaryPoints: ## 完全退出质押 {#exiting-staking-entirely} -在从验证者帐户余额中转移_任何_资金之前,必须提供提款地址。 +必须先提供提款地址,然后才能将_任何_资金从验证者账户余额中转出。 希望完全退出质押并取回全部余额的用户还必须使用验证者密钥签署并广播一个“自愿退出”的消息,这将启动退出质押的过程。 此操作通过你的验证者客户端完成,并提交给你的共识节点,无需燃料。 验证者从抵押退出的过程所需时间不同,具体取决于同时退出的人数。 一旦完成,此帐户将不再负责执行验证者网络职责,不再有资格获得奖励,并且不再拥有“质押”的以太币。 此时,该帐户将被标记为完全“可提款”。 -一旦帐户被标记为“可提款”,并且已提供提款凭据,用户除了等待之外,无需再做任何事情。 区块提议者会自动且持续地扫描是否有可退出资金,并在下一次扫描期间将你帐户的余额全额转移(也称为“全额提款”)。 +一旦帐户被标记为“可提款”,并且已提供提款凭据,用户除了等待之外,无需再做任何事情。 区块提议者会自动并持续地清扫账户中符合条件的已退出资金,您的账户余额将在下一次清扫期间全额转出(也称为“全额提款”)。 -## 何时启用质押提款? {#when} +## 质押提款在什么时候启用? {#when} -质押提款已经上线! 提款功能已在 2023 年 4 月 12 日进行的上海/卡佩拉升级中实现。 +提款功能是上海/Capella 升级的一部分,该升级已于 **2023 年 4 月 12 日**进行。 上海/卡佩拉升级后,可以将之前质押的以太币收回到普通以太坊帐户中。 这就结束了质押流动性循环,并使以太坊向着建立一个可持续、可扩展、安全的去中心化生态系统迈进一步。 -- [更多关于以太坊历史的信息](/ethereum-forks/) -- [更多关于以太坊路线图的信息](/roadmap/) +- [关于以太坊历史的更多信息](/ethereum-forks/) +- [关于以太坊路线图的更多信息](/roadmap/) ## 提款支付是如何运作的? {#how-do-withdrawals-work} @@ -83,7 +78,7 @@ summaryPoints: -### 验证者“扫描” {#validator-sweeping} +### 验证者“清扫” {#validator-sweeping} 当验证者被安排提议下一个区块时,需要构建一个最多包含 16 个合格提款的提款队列。 首先从验证者索引 0 开始,根据协议规则判断该帐户是否有合格的提款,如果有,则将其添加到队列中。 被安排提议下一个区块的验证者将从上一个验证者离开的地方继续,无限期地按顺序进行。 @@ -91,29 +86,29 @@ summaryPoints: -想象一个模拟时钟。 时钟的指针指向小时,朝一个方向前进,不跳过任何小时,最后在达到最后一个数字后再次回到开始。

    -现在,想象这个时钟不再是 1 至 12,而是从 0 到 N(在共识层上注册的验证者帐户的总数,截至 2023 年 1 月已超过 500,000 个)。

    -时钟的指针指向需要检查是否符合提款条件的下一个验证者。 它从 0 开始,不跳过任何帐户,一直前进。 当达到最后一个验证者时,循环从头开始继续。 +想想模拟时钟。 时钟上的指针指向小时,朝一个方向前进,不会跳过任何小时,并且在到达最后一个数字后最终会绕回到开头。

    +现在,想象一下,时钟上的数字不是 1 到 12,而是 0 到 N (截至 2023 年 1 月,在共识层上注册过的验证者账户总数超过 500,000 个)。

    +时钟上的指针指向下一个需要检查是否有合格提款的验证者。 它从 0 开始,一直前进,不会跳过任何账户。 到达最后一个验证者时,循环从头开始。
    -#### 检查帐户的提款 {#checking-an-account-for-withdrawals} +#### 检查账户提款 {#checking-an-account-for-withdrawals} 在提议者扫描验证者以寻找可能的提款时,使用一系列简短的问题评估正接受检查的每个验证者,以确定是否应触发提款,如果是,应提取多少以太币。 -1. **是否已提供提款地址?**如果未提供提款地址,则跳过该帐户,不会发起提款。 -2. **验证者是否已退出且可提款?**如果验证者已完全退出,并且我们已到达帐户被视为“可提款”的时段,那么将处理全额提款。 这将把所有剩余余额转移到提款地址。 -3. **有效余额是否达到 32 的最大值?** 如果帐户具有提款凭证,尚未完全退出,并且有超过 32 的奖励在等待,将处理部分提款,只将超过 32 的奖励转移到用户的提款地址。 +1. \*\*是否已提供提款地址?\*\*如果未提供提款地址,则跳过该账户,不发起提款。 +2. \*\*验证者是否已退出且可提款?\*\*如果验证者已完全退出,并且我们已到达其账户被视为“可提款”的时期,则将处理全额提款。 这将把所有剩余余额转移到提款地址。 +3. \*\*有效余额是否已达到 32 ETH 的上限?\*\*如果账户具有提款凭证,未完全退出,并且有超过 32 ETH 的奖励等待领取,则将处理部分提款,仅将超过 32 ETH 的奖励转入用户的提款地址。 在验证者生命周期中,验证者操作员只会执行以下两个直接影响此流程的操作: - 提供提款凭证以启用任何形式的提款 - 退出网络,这将触发全额提款 -### 免燃料费 {#gas-free} +### 免 Gas 费 {#gas-free} -这种质押提款方法不需要质押人手动提交交易来请求提款特定数量以太币。 这意味着**不需要提交燃料费(交易费)**,并且提款也不争夺现有的执行层区块空间。 +这种质押提款方法不需要质押人手动提交交易来请求提款特定数量以太币。 这意味着**无需 gas(交易费)**,并且提款也不会占用现有的执行层区块空间。 ### 我会多久收到一次质押奖励? {#how-soon} @@ -123,42 +118,40 @@ summaryPoints: -| 提款数量 | 所需时间 | -| :-------------------: | :--------------: | -| 400,000 | 3.5 天 | -| 500,000 | 4.3 天 | -| 600,000 | 5.2 天 | -| 700,000 | 6.1 天 | -| 800,000 | 7.0 天 | +| 提款数量 | 完成时间 | +| :-----: | :-------------------: | +| 400,000 | 3.5 天 | +| 500,000 | 4.3 天 | +| 600,000 | 5.2 天 | +| 700,000 | 6.1 天 | +| 800,000 | 7.0 天 | 正如你所看到的,随着网络上的验证者数量增加,完成该过程的速度也会变慢。 错过的时隙数增加可能成比例减慢提款速度,但这通常代表了可能的结果中较慢的情况。 -## 常见问题 {#faq} +## 常见问题{#faq} -不,提供提款凭证的过程只需进行一次,一旦提交后就无法更改。 - +不能,提供提款凭证是单次操作,提交后无法更改。 -通过设置执行层提款地址,该验证者的提款凭证已永久更改。 这意味着旧的提款凭证将不再起作用,新的提款凭证将指向执行层帐户。 +设置执行层提款地址会永久更改该验证者的提款凭证。 这意味着旧的提款凭证将不再起作用,新的提款凭证将指向执行层帐户。 提款地址可以是智能合约(由其代码控制),也可以是外部拥有的帐户(EOA,由其私钥控制)。 目前,这些帐户无法向共识层传回信息以表示验证者凭证已更改,而添加此功能将给协议增加不必要的复杂性。 -作为更改特定验证者提款地址的替代方案,用户可以选择设置智能合约作为他们的提款地址,该智能合约可以处理密钥轮换,例如 Safe。 将资金去向设置为自己的外部帐户的用户可以执行完全退出以提取所有的质押资金,然后使用新的凭证重新进行质押。 - +作为更改特定验证者提款地址的替代方案,用户可以选择设置智能合约作为他们的提款地址,该智能合约可以处理密钥轮换,例如 Safe。 将资金去向设置为自己的外部帐户的用户可以执行完全退出以提取所有的质押资金,然后使用新的凭证重新进行质押。 @@ -170,15 +163,14 @@ eventName="read more"> -是的,只要你的验证者提供了提款地址。 提款地址必须要提供一次,以便在最初时启用任何提款,之后奖励支付将每隔几天在进行验证者扫描时自动分发。 - +是的,只要您的验证者提供了提款地址。 提款地址必须要提供一次,以便在最初时启用任何提款,之后奖励支付将每隔几天在进行验证者扫描时自动分发。 @@ -189,39 +181,37 @@ eventName="read more"> - -提款旨在自动推送,转移任何未积极为质押做贡献的以太币。 这包括已完成退出流程的帐户的全部余额。 +提款被设计为自动推送,转移任何未用于质押的 ETH。 这包括已完成退出流程的帐户的全部余额。 -无法手动请求要提取以太币的具体数量。 - +无法手动请求要提取以太币的具体数量。 建议验证者运营商访问质押启动板提款页面,你可以在其中找到有关如何准备验证者以便提款的更多详细信息、事件的时间安排,以及有关提款如何运作的更多详细信息。 -要首先在测试网上测试你的设置,请访问 Goerli 测试网质押启动板开始测试。 +如需先在测试网上试用您的设置,请访问 Hoodi 测试网质押启动板开始。 -否。 一旦验证者退出并提取其全部余额,存入该验证者的任何额外资金将在下一次验证者扫描期间自动转移到提款地址。 要重新质押以太币,必须激活新的验证者。 - +不可以。 一旦验证者退出并提取其全部余额,存入该验证者的任何额外资金将在下一次验证者扫描期间自动转移到提款地址。 要重新质押以太币,必须激活新的验证者。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [质押启动板提款](https://launchpad.ethereum.org/withdrawals) -- [EIP-4895:信标链提款推送操作](https://eips.ethereum.org/EIPS/eip-4895) -- [PEEPanEIP #94:质押以太币提取(测试)与 Potuz 和王筱维](https://www.youtube.com/watch?v=G8UstwmGtyE) -- [PEEPanEIP#68:与 Alex Stokes 讨论 EIP-4895:信标链推送提款操作](https://www.youtube.com/watch?v=CcL9RJBljUs) +- [EIP-4895:信标链将提款作为操作推送](https://eips.ethereum.org/EIPS/eip-4895) +- [PEEPanEIP #94:与 Potuz & Hsiao-Wei Wang 谈已质押 ETH 提款(测试)](https://www.youtube.com/watch?v=G8UstwmGtyE) +- [PEEPanEIP#68:与 Alex Stokes 谈 EIP-4895:信标链将提款作为操作推送](https://www.youtube.com/watch?v=CcL9RJBljUs) - [了解验证者有效余额](https://www.attestant.io/posts/understanding-validator-effective-balance/) From 4cfc1a69215231e1139621d19c8981da9a838148 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:09 -0800 Subject: [PATCH 098/581] update(i18n): public/content/translations/zh/contributing/design/index.md --- .../zh/contributing/design/index.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/public/content/translations/zh/contributing/design/index.md b/public/content/translations/zh/contributing/design/index.md index bbffffca9f7..a4433fb5e97 100644 --- a/public/content/translations/zh/contributing/design/index.md +++ b/public/content/translations/zh/contributing/design/index.md @@ -4,7 +4,7 @@ description: 为 ethereum.org 做出设计贡献 lang: zh --- -# 为 ethereum.org 做出设计贡献 {#design-contributions} +# 为 ethereum.org 贡献设计 {#design-contributions} 设计是任何项目的关键组成部分,通过将你的时间和设计技能奋献给 ethereum.org,可以帮助改善访问者的用户体验。 为开源项目做贡献为你提供了在协作环境中获得相关经验和发展技能的机会。 你将有机会和其他有独特观点及见解的设计师、开发者和社区成员合作。 @@ -12,7 +12,7 @@ lang: zh ## 如何做出贡献? -###  对早期设计原型提供反馈 {#design-critique} +###  针对早期设计原型提供反馈 {#design-critique} 有时我们需要一些帮助来检验我们的最初构想。 这是在没有任何技术知识的情况下做出贡献的好方法。 @@ -28,28 +28,28 @@ lang: zh 2. 点击右下角的反馈小组件,并回答与设计和内容相关的问题。 3. 重点关注开放式问题。 -###  发现网站上与设计相关的问题并进行报告 {#report-design-issues} +###  在网站上发现与设计相关的问题并进行报告 {#report-design-issues} ethereum.org 是一个快速发展的网站,拥有许多功能和内容。 一些用户界面很容易过时或需要改进。 如果你遇到任何此类情况,请向我们报告,以便引起我们的注意。 1. 浏览网站并关注网站的设计。 2. 如果发现任何视觉或用户体验方面的问题,请截图并记录下来。 -3. 使用[漏洞报告](https://github.com/ethereum/ethereum-org-website/issues/new/choose)来报告发现的问题。 +3. 使用 [bug 报告](https://github.com/ethereum/ethereum-org-website/issues/new/choose)报告发现的问题。 -###  提出设计变更 {#propose-design-changes} +###  提出设计更改 {#propose-design-changes} -如果你愿意接受设计挑战,可以访问我们的 GitHub 问题看板,并筛选出 [与设计相关的问题](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8)。 +如果你愿意接受设计挑战,可以访问我们的 GitHub 问题看板并筛选[与设计相关的问题](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8)。 -1. 请浏览我们的网站并关注其设计,或访问我们的 GitHub 存储库并查看标记有[“Design required”(需要设计参与)”标签](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8)的问题。 +1. 浏览我们的网站并注意其设计,或者转到我们的 GitHub 代码库,审查标记有 [“需要设计”标签](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8) 的问题。 2. 构思解决方案并进行设计。 (最好使用我们的[设计系统](https://www.figma.com/community/file/1134414495420383395))。 -3. 在相应的 GitHub 问题中提出解决方案,或者[创建一个新的问题](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)来提出建议。 +3. 在相应的 GitHub 问题中提出解决方案,或[创建一个新问题](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)。 4. 等待设计团队审核。 -###  一起构建设计系统 {#Contribute-to-design-system} +###  共同构建设计系统 {#Contribute-to-design-system} 使用我们的设计系统,设计 ethereum.org 将变得轻松有趣。 如果你是一位经验丰富的设计师,就可以帮助我们为网站准备许多组件。 -1. 从 GitHub 上的[设计系统看板](https://github.com/ethereum/ethereum-org-website/labels/design%20system)中选择一个要处理的问题,或者创建一个新问题。 +1. 从 GitHub 上的[设计系统看板](https://github.com/ethereum/ethereum-org-website/labels/design%20system)中选择一个要处理的问题,或创建一个新问题。 2. 请求将所选问题分配给自己。 3. 开始在 Figma 中设计要求的组件。 4. 一旦需要审查或指导,请在 GitHub 上将组件分享给设计团队。 @@ -58,10 +58,10 @@ ethereum.org 是一个快速发展的网站,拥有许多功能和内容。 一 ###  在网站上撰写与设计相关的内容 {#write-design-articles} -以太坊开发者社区很强大,但设计社区稍显落后。 如果你是一位拥有 Web3 知识的设计师,请考虑与大社区分享你的知识,以便我们大家能够共同成长和进步;我们有[一个关于为以太坊设计的页面](/developers/docs/design-and-ux/),你可以为其做出贡献。 你还可以查看我们的[上架政策](/contributing/design/adding-design-resources)。 +以太坊开发者社区很强大,但设计社区稍显落后。 如果你是具备 Web3 知识的设计师,请考虑与广大社区分享你的学习心得,以便我们共同成长和进步;我们有一个[关于为以太坊设计的页面](/developers/docs/design-and-ux/),欢迎你为此页面贡献内容。 你也可以查看我们的[收录政策](/contributing/design/adding-design-resources)。 1. 构思 ethereum.org 上应涵盖的设计主题,这些主题应对该领域的设计师有所裨益。 -2. 访问我们的 GitHub 存储库,[创建一个问题](https://github.com/ethereum/ethereum-org-website/issues/new)并提出一个主题(先不要写内容)。 +2. 前往我们的 GitHub 代码库,[提出一个问题](https://github.com/ethereum/ethereum-org-website/issues/new),建议一个主题(先不要写内容)。 3. 等待设计团队批准。 4. 获得批准后,开始撰写内容。 5. 在相应的 GitHub 问题中提交。 @@ -71,7 +71,7 @@ ethereum.org 是一个快速发展的网站,拥有许多功能和内容。 一 可视化是用来解释抽象主题最有力的工具之一。 通过添加图表和信息图表,可视化可以挖掘出巨大的潜力。 毕竟,一张图片胜过千言万语。 1. 访问我们的网站,查看可以添加新信息图表的页面。 -2. 确保插图风格与我们的[网站](/assets/)相符。 -3. 访问我们的 GitHub 存储库,[创建一个问题](https://github.com/ethereum/ethereum-org-website/issues/new)并提交插图。 +2. 确保插图风格与我们的[素材](/assets/)一致。 +3. 前往我们的 GitHub 代码库,[提出一个问题](https://github.com/ethereum/ethereum-org-website/issues/new)来建议该插图。 4. 设计团队将进行审查。 5. 我们创建一个新问题,邀请开发者来实现新图像。 From e465fe114176c52888086e17b4c13d3587c932f6 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:10 -0800 Subject: [PATCH 099/581] update(i18n): public/content/translations/zh/roadmap/pectra/7702/index.md --- .../zh/roadmap/pectra/7702/index.md | 149 ++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 public/content/translations/zh/roadmap/pectra/7702/index.md diff --git a/public/content/translations/zh/roadmap/pectra/7702/index.md b/public/content/translations/zh/roadmap/pectra/7702/index.md new file mode 100644 index 00000000000..003aea33aee --- /dev/null +++ b/public/content/translations/zh/roadmap/pectra/7702/index.md @@ -0,0 +1,149 @@ +--- +title: 以太坊 Pectra 升级:EIP-7702 指南 +description: 在pectra的发布中了解更多关于7702的信息 +lang: zh +--- + +# Pectra 7702 + +## 概要 {#abstract} + +EIP 7702 定义了一种向外部账户添加代码的机制。 该提案允许外部帐户,即传统以太坊帐户,获得短期的功能改进,增加了应用程序的可用性。 这是借助新的交易类型 4,把账户关联到已部署的代码上实现的。 + +这种新的交易类型引入了授权列表。 在列表中的每个授权元组的规定为 + +``` +[ chain_id, address, nonce, y_parity, r, s ] +``` + +**address** 字段表示委托目标(即已经部署好的字节码,外部账户会调用它) +**chain_id** 字段将授权限定在某一条特定链上(填 0 则表示适用于所有链) +**nonce** 将授权限定在某一个特定的账户 nonce 上 +(**y_parity, r, s**) 是授权元组的签名,定义为 keccak(0x05 || rlp([chain_id, address, nonce])),由发起授权的外部账户的私钥签发(这个签名也称为授权) + +可以通过将委托权限分配给空地址来重置委托。 + +外部账户的私钥在委托后仍对账户拥有完全控制权。 例如,委托给 Safe 并不会使帐户变成多重签名帐户,因为仍然存在一个可以绕过任何签名策略的单一密钥。 未来,开发者在设计时应假设系统中的任何参与者都可能是一个智能合约。 对于智能合约开发者而言, `tx.origin` 不再能被视为一定指向一个外部账户。 + +## 最佳实践 {#best-practices} + +**抽象账户**:委托合约应与以太坊更广泛的账户抽象(AA)标准保持一致,以实现最大兼容性。 尤其是,它理想情况下应当符合或兼容 ERC-4337 标准。 + +**无许可且抗审查的设计**:以太坊强调任何人都能自由参与。 委托合约**不得**硬编码或依赖任何单一的“可信”中继器或服务。 如果中继器离线,这将导致账户无法使用。 批量处理功能(例如批准+转账)可以由外部账户自身使用,无需中继器。 对于希望使用 7702 启用的高级功能(Gas代付、隐私保护提现)的应用程序开发者,您需要一个中继器。 虽然存在不同的中继器结构,我们仍推荐使用指向至少 [entry point 0.8](https://github.com/eth-infinitism/account-abstraction/releases/tag/v0.8.0) 的 [4337 bundlers](https://www.erc4337.io/bundlers),原因如下: + +- 他们提供标准化的接口用于中继 +- 包含内置的支付系统 +- 确保向前兼容性 +- 可通过[公共内存池](https://notes.ethereum.org/@yoav/unified-erc-4337-mempool)支持抗审查功能 +- 可以要求初始化函数仅被 [EntryPoint](https://github.com/eth-infinitism/account-abstraction/releases/tag/v0.8.0) 调用 + +换句话说,只要能够提供账户所需的有效签名或UserOperation,任何人都可以担任交易发起人或中继者。 这确保了抗审查性:如果不需要自定义基础设施,用户的交易就不会被恶意中继随意阻断。 例如,[MetaMask 的委托工具包](https://github.com/MetaMask/delegation-framework/releases/tag/v1.3.0) 可以明确地与任意链上的任何 ERC-4337 打包器或支付代理配合使用,而无需依赖于 MetaMask 专用服务器。 + +**去中心化应用通过钱包接口集成**: + +由于钱包只会将特定的委托合约列入白名单来支持 EIP-7702,因此 dApp 不应该指望自己能直接向用户请求 7702 授权。 相反,集成应通过标准化的钱包接口实现: + +- **ERC-5792 (`wallet_sendCalls`)**:允许去中心化应用程序请求钱包执行批量调用,从而实现批量交易和 gas 抽象等功能。 + +- **ERC-6900**:允许去中心化应用程序通过钱包管理的模块利用模块化智能账户功能,例如会话密钥和账户恢复功能。 + +通过使用这些接口,去中心化应用程序可以访问由 EIP-7702 提供的智能合约帐户功能,而无需直接管理委托,这确保了不同钱包实现之间的兼容性和安全性。 + +> 注意:目前尚无标准化方法允许去中心化应用直接请求 7702 授权签名。 去中心化应用程序必须依赖特定的钱包接口(如ERC-6900)才能利用EIP-7702的特性。 + +更多有关信息: + +- [ERC-5792 规范](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-5792.md) +- [ERC-6900 规范](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-6900.md) + +**避免单一服务锁定**:与上述原则一致,一个良好的实现应当保持服务商中立并具备互操作性。 这通常意味着遵循智能账户的新兴标准。 例如,[Alchemy 的模块化帐户](https://github.com/alchemyplatform/modular-account) 使用 ERC-6900 标准构建模块化智能合约帐户,并以“无需许可的互操作性使用”作为其设计理念。 + +**隐私保护**:尽管链上隐私有限,委托合约仍应尽量减少数据暴露和可链接性。 这可以通过支持一些功能来实现,例如使用 ERC-20 代币支付 gas (用户无需持有公共 ETH 余额,这提升了隐私和用户体验) 以及一次性会话密钥 (减少对单一长期密钥的依赖)。 例如,EIP-7702 允许通过赞助交易使用代币支付 gas,而良好的实现将使此类支付代理易于集成,而不会泄露多余的信息。 此外,对某些批准进行链下委托 (使用在链上验证的签名) 意味着使用用户主密钥的链上交易更少,有助于保护隐私。 需要使用中继器的账户会迫使用户透露其 IP 地址。 公共内存池对这一点做出了改进,当一笔交易或 UserOp 在内存池中传播时,你无法判断它是源自发送它的 IP,还是仅通过 p2p 协议经过此 IP 中继的。 + +**可扩展性和模块安全性**:账户实现应具备可扩展性,以便能够随着新功能和安全改进的推出而不断演进。 EIP-7702 原生支持可升级性 (由于外部账户总是可以将委托给未来的新合约以升级其逻辑)。 除了可升级性,良好的设计还应该支持模块化——例如针对不同签名方案或花费策略的插件模块——而无需完全重新部署。 Alchemy 的账户套件就是一个典型的例子,它允许开发者安装验证模块(适用于不同类型的签名,如 ECDSA、BLS 等) 以及用于自定义逻辑的执行模块。 为了在启用 EIP-7702 的帐户中实现更高的灵活性和安全性,建议开发者委托至代理合约而非直接指向特定实现合约。 这种方法允许实现无缝升级和模块化,而无需为每次更改额外申请 EIP-7702 授权。 + +代理模式的优势: + +- **可升级性**:通过将代理指向新的实现合约来更新合约逻辑。 + +- **自定义初始化逻辑**:在代理中加入初始化函数,以安全地设置非必要的状态变量。 + +例如,[SafeEIP7702Proxy](https://docs.safe.global/advanced/eip-7702/7702-safe) 展示了如何利用代理安全地初始化和管理 EIP-7702 兼容的帐户委托。 + +代理模式的缺点: + +- **对外部方的依赖**:您必须依赖外部团队来避免升级到不安全的合约。 + +## 安全考量 {#security-considerations} + +**重入保护**:随着 EIP-7702 委托的引入,用户的帐户可以在外部帐户 (EOA) 和智能合约 (SC) 之间动态切换。 这种灵活性使账户既能发起交易,又能成为调用的目标。 因此,在帐户调用自身并进行外部调用的场景中,`msg.sender` 将等于 `tx.origin`,这破坏了一些此前依赖于 `tx.origin` 始终为外部帐户的安全假设。 + +对于智能合约开发者而言,`tx.origin` 不再能被视为一定指向一个外部账户。 同样地,使用 `msg.sender == tx.origin` 作为防范重入攻击的防护措施,已不再是一种可靠的策略。 + +未来,开发者在设计时应假设系统中的任何参与者都可能是一个智能合约。 或者,他们可以使用带有 `nonReentrant` 修饰符模式的重入防护,来实现显示的重入保护。 我们建议使用经过审计的修饰符,如 [Open Zeppelin 的重入保护](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol)。 他们还可以使用一个[临时存储变量](https://docs.soliditylang.org/en/latest/internals/layout_in_storage.html)。 + +**初始化安全考虑事项** + +实现 EIP-7702 委托合约会带来特定的安全挑战,尤其是与初始化过程相关的部分。 当初始化函数(`init`)与委托过程一起执行时,会出现一个关键漏洞。 在这种情况下,抢先交易者可能会截获委托签名,并使用篡改后的参数执行 `init` 函数,从而可能使其接管帐户。 + +在尝试在不修改初始化机制的情况下通过 EIP-7702 使用现有的智能合约帐户 (SCA) 实现时,这一风险尤为突出。 + +缓解初始化漏洞的解决方案 + +- 使用 `initWithSig` + 用 `initWithSig` 函数替换标准的 `init` 函数,该函数要求用户对初始化参数进行签名。 此方法确保初始化操作仅在获得用户明确同意后方可进行,从而降低未经授权的初始化风险。 + +- 使用 ERC-4337 的 EntryPoint + 要求初始化函数只能由 ERC-4337 EntryPoint 合约调用。 该方法利用 ERC-4337 提供的标准化验证和执行框架,为初始化过程增添了一层额外的安全保障。 + _(见: [Safe 文档](https://docs.safe.global/advanced/eip-7702/7702-safe))_ + +通过采用这些解决方案,开发者可以增强 EIP-7702 委托合约的安全性,防止在初始化阶段可能发生的抢先交易攻击。 + +**存储冲突** 委托代码不会清除现有存储。 在从一个委托合约迁移到另一个委托合约时,前一个合约的剩余数据将保留。 如果新合约使用相同的存储槽但对其进行不同解读,可能会导致意外行为。 例如,如果最初的委托指向一个存储插槽代表 `bool` 的合约,而后续的委托指向同一存储插槽代表 `uint` 的合约,这种不匹配可能导致不可预测的结果。 + +**钓鱼攻击风险** 随着 EIP-7702 委托机制的实施,用户账户中的资产可能完全由智能合约控制。 如果用户在不知情的情况下将账户授权给恶意合约,攻击者便可轻松获取控制权并盗取资金。 当使用 `chain_id=0` 时,委托将应用于所有链。 只能委托给不可变合约 (永远不要委托给代理合约),并且只能委托给使用 CREATE2 部署的合约 (使用标准 initcode——非变形合约),以确保部署者无法在其他地方向同一地址部署不同的合约。 否则,您的委托将使您的账户在所有其他 EVM 链上面临风险。 + +当用户执行委托签名时,接收委托的目标合约应以清晰醒目的方式显示,以帮助降低钓鱼攻击风险。 + +**最小化可信面与安全性**:在提供灵活性的同时,委托合约应该保持其核心逻辑简洁且可供审计。 该合约实际上是用户外部地址的扩展,因此任何漏洞都可能导致灾难性后果。 实现应遵循智能合约安全社区的最佳实践。 例如,构造函数或初始化函数必须小心保护——正如 Alchemy 所强调的,如果在 7702 下使用代理模式,未受保护的初始化函数可能允许攻击者接管帐户。 团队应努力保持链上代码的简洁性:Ambire 的 7702 合约仅包含约 200 行 Solidity 代码,通过刻意简化复杂性来减少 bug。 必须在功能丰富的逻辑与简洁易于审计之间取得平衡。 + +### 已知的实现 {#known-implementations} + +由于EIP 7702的特性,建议钱包在协助用户将代币委托给第三方合约时保持谨慎。 以下是已知经过审计的实现列表: + +| 合约地址 | 来源 | 审计 | +| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0x000000009B1D0aF20D8C6d0A44e162d11F9b8f00 | [Uniswap/calibur](https://github.com/Uniswap/calibur) | [审计](https://github.com/Uniswap/calibur/tree/main/audits) | +| 0x69007702764179f14F51cdce752f4f775d74E139 | [alchemyplatform/modular-account] | [审计](https://github.com/alchemyplatform/modular-account/tree/develop/audits) | +| 0x5A7FC11397E9a8AD41BF10bf13F22B0a63f96f6d | [AmbireTech/ambire-common](https://github.com/AmbireTech/ambire-common/blob/feature/eip-7702/contracts/AmbireAccount7702.sol) | [审计](https://github.com/AmbireTech/ambire-common/tree/feature/eip-7702/audits) | +| 0x63c0c19a282a1b52b07dd5a65b58948a07dae32b | [MetaMask/delegation-framework](https://github.com/MetaMask/delegation-framework) | [审计](https://github.com/MetaMask/delegation-framework/tree/main/audits) | +| 0x4Cd241E8d1510e30b2076397afc7508Ae59C66c9 | [以太坊基金会帐户抽象团队](https://github.com/eth-infinitism/account-abstraction/blob/develop/contracts/accounts/Simple7702Account.sol) | [审计](https://github.com/eth-infinitism/account-abstraction/blob/develop/audits/SpearBit%20Account%20Abstraction%20Security%20Review%20-%20Mar%202025.pdf) | +| 0x17c11FDdADac2b341F2455aFe988fec4c3ba26e3 | [Luganodes/Pectra-Batch-Contract](https://github.com/Luganodes/Pectra-Batch-Contract) | [审计](https://certificate.quantstamp.com/full/luganodes-pectra-batch-contract/23f0765f-969a-4798-9edd-188d276c4a2b/index.html) | + +## 硬件钱包使用指南 {#hardware-wallet-guidelines} + +硬件钱包不应随意开放委托功能。 硬件钱包领域的主流观点是使用一份可信的委托合约列表。 我们建议允许上述已知的实现方式,并根据具体情况考虑其他实现方式。 将您的外部账户委托给合约会赋予其对所有资产的控制权,因此硬件钱包在实现 7702 协议时应格外谨慎。 + +### 配套应用的集成场景 {#integration-scenarios-for-companion-apps} + +#### 被动模式 {#lazy} + +由于外部账户依然像往常一样运作,因此不需要做任何额外操作。 + +注意:某些资产可能会被委托代码自动拒绝,例如 ERC-1155 NFT,支持团队应该了解这一点。 + +#### 感知模式 {#aware} + +通过检查代码,通知用户其外部账户当前存在委托关系,并可选择性地提供移除该委托的功能。 + +#### 普通委托 {#common-delegation} + +硬件提供商会将已知的委托合约列入白名单,并在配套软件中实现对它们的支持。 建议选择完全支持 ERC-4337 的合约。 + +对于被委托到其他合约的外部账户,则会按标准外部账户来处理。 + +#### 自定义委托 {#custom-delegation} + +硬件提供商使用自己的委托合约,并将其添加到列表中,同时在配套软件中实现对其支持。 建议构建一个完全支持 ERC 4337 的合约。 + +对于被委托到其他合约的外部账户,则会按标准外部账户来处理。 From 223b6c9548fec786fa22829c0b2717c44cb0e4db Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:14 -0800 Subject: [PATCH 100/581] update(i18n): public/content/translations/zh/developers/docs/evm/index.md --- .../zh/developers/docs/evm/index.md | 56 +++++++++++-------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/public/content/translations/zh/developers/docs/evm/index.md b/public/content/translations/zh/developers/docs/evm/index.md index 58389f2286d..d772251d07c 100644 --- a/public/content/translations/zh/developers/docs/evm/index.md +++ b/public/content/translations/zh/developers/docs/evm/index.md @@ -4,75 +4,85 @@ description: 介绍以太坊虚拟机及其与状态、交易和智能合约的 lang: zh --- -以太坊虚拟机 (EVM) 是一个去中心化虚拟环境,它在所有以太坊节点上一种安全一致地方式执行代码。 节点运行以太坊虚拟机,以执行智能合约,利用“[燃料](/gas/)”度量执行[操作](/developers/docs/evm/opcodes/)所需的计算工作,从而确保高效的资源分配和网络安全性。 +以太坊虚拟机 (EVM) 是一个去中心化虚拟环境,它在所有以太坊节点上一种安全一致地方式执行代码。 节点运行 EVM 执行智能合约,使用“[燃料](/developers/docs/gas/)”衡量执行[操作](/developers/docs/evm/opcodes/)所需的计算工作,从而确保高效的资源分配和网络安全。 ## 前提条件 {#prerequisites} -对计算机科学中常见术语的基本了解,如[字节](https://wikipedia.org/wiki/Byte)、[内存](https://wikipedia.org/wiki/Computer_memory)和[堆栈](https://wikipedia.org/wiki/Stack_(abstract_data_type))是理解 EVM 的前提。 熟悉[哈希函数](https://wikipedia.org/wiki/Cryptographic_hash_function)和[默克尔树](https://wikipedia.org/wiki/Merkle_tree)等密码学/区块链概念也会很有帮助。 +若要理解 EVM,需要对计算机科学中的一些常见术语有基本的了解,例如[字节](https://wikipedia.org/wiki/Byte)、[内存](https://wikipedia.org/wiki/Computer_memory)和[堆栈](https://wikipedia.org/wiki/Stack_\(abstract_data_type\))。 熟悉[哈希函数](https://wikipedia.org/wiki/Cryptographic_hash_function)和[默克尔树](https://wikipedia.org/wiki/Merkle_tree)等加密/区块链概念也会有所帮助。 ## 从账本到状态机 {#from-ledger-to-state-machine} 通常使用“分布式账本”的类比来描述像比特币这样的区块链,它使用密码学的基本工具来实现去中心化的货币。 账本保存着活动记录,而活动必须遵守一套规则,这些规则限制用户在修改账本时可以做什么和不可以做什么。 例如,比特币地址不能花费比之前收到的更多的比特币。 这些规则是比特币和许多其他区块链上所有交易的基础。 -虽然以太坊有自己的本机加密货币 (ETH),遵循几乎完全相同的直观规则,但它也支持更强大的功能:[智能合约](/developers/docs/smart-contracts/)。 对于此更复杂的功能,需要一个更复杂的类比。 以太坊不是分布式账本,而是分布式[状态机器](https://wikipedia.org/wiki/Finite-state_machine)。 以太坊的状态是一个大型数据结构,它不仅保存所有帐户和余额,而且还保存一个_机器状态_,它可以根据预定义的一组规则在不同的区块之间进行更改,并且可以执行任意的机器代码。 在区块中更改状态的具体规则由 EVM 定义。 +以太坊有自己的原生加密货币(以太币),其规则非常直观,但它也实现了一个更强大的功能:[智能合约](/developers/docs/smart-contracts/)。 对于此更复杂的功能,需要一个更复杂的类比。 以太坊不是一个分布式账本,而是一个分布式[状态机](https://wikipedia.org/wiki/Finite-state_machine)。 以太坊的状态是一个大型数据结构,它不仅保存了所有的账户和余额,还保存了一个_机器状态_,它可以根据一组预定义的规则在区块之间发生变化,并且可以执行任意的机器代码。 在区块中更改状态的具体规则由 EVM 定义。 -![EVM 组成结构图](./evm.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +![展示 EVM 构成的图表](./evm.png) +_图表改编自 [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ ## 以太坊状态转换函数 {#the-ethereum-state-transition-function} -EVM 的行为就像一个数学函数:在给定输入的情况下,它会产生确定性的输出。 因此,将以太坊更正式地描述为具有**状态转换函数**非常有帮助: +EVM 的行为就像一个数学函数:在给定输入的情况下,它会产生确定性的输出。 因此,将以太坊更正式地描述为具有**状态转换函数**会很有帮助: ``` Y(S, T)= S' ``` -给定一个旧的有效状态 `(S)`> 和一组新的有效交易 `(T)`,以太坊状态转换函数 ` Y(S,T)` 产生新的有效输出状态` S'` +给定一个旧的有效状态 `(S)` 和一组新的有效交易 `(T)`,以太坊状态转换函数 `Y(S, T)` 会生成一个新的有效输出状态 `S'` ### 状态 {#state} -在以太坊环境中,状态是一种称为[改进版默克尔帕特里夏树](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)的巨大数据结构,它保存所有通过哈希关联在一起的[帐户](/developers/docs/accounts/)并可回溯到存储在区块链上的单个根哈希。 +在以太坊中,状态是一个被称为[改良默克尔帕特里夏树](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)的巨大数据结构,它保存了所有通过哈希链接的[帐户](/developers/docs/accounts/),并可归约为存储在区块链上的单个根哈希。 ### 交易 {#transactions} -交易是来自帐户的密码学签名指令。 交易分为两种:一种是消息调用交易,另一种是合约创建交易。 +交易是由帐户发出,带密码学签名的指令。 交易分为两种:一种是消息调用交易,另一种是合约创建交易。 -合约创建交易会创建一个新的合约帐户,其中包含已编译的 [智能合约](/developers/docs/smart-contracts/anatomy/) 字节码。 每当另一个帐户对该合约进行消息调用时,它都会执行其字节码。 +创建合约会创建一个新的合约帐户,其中包含已编译的[智能合约](/developers/docs/smart-contracts/anatomy/)字节码。 每当另一个帐户对该合约进行消息调用时,它都会执行其字节码。 -## EVM 说明 {#evm-instructions} +## EVM 指令 {#evm-instructions} -EVM 作为一个[堆栈机](https://wikipedia.org/wiki/Stack_machine)运行,其栈的深度为 1024 个项。 每个项目都是 256 位字,为了便于使用,选择了 256 位加密技术(如 Keccak-256 哈希或 secp256k1 签名)。 +EVM 作为[堆栈机](https://wikipedia.org/wiki/Stack_machine)执行,堆栈深度为 1024 个项。 每个项目都是 256 位字,为了便于使用,选择了 256 位加密技术(如 Keccak-256 哈希或 secp256k1 签名)。 -在执行期间,EVM 会维护一个瞬态_内存_(作为字可寻址的字节数组),该内存不会在交易之间持久存在。 +在执行期间,EVM 维护一个瞬态_内存_(一个字可寻址的字节数组),该内存不会在交易之间持久存在。 -然而,合约确实包含一个 Merkle Patricia _存储_ trie(作为可字寻址的字数组),该 trie 与帐户和部分全局状态关联。 +### 瞬态存储 -已编译的智能合约字节码作为许多 EVM [opcodes](/developers/docs/evm/opcodes)执行,它们执行标准的堆栈操作,例如 `XOR`、`AND`、`ADD`、`SUB`等。 EVM 还实现了一些区块链特定的堆栈操作,如 `ADDRESS`、`BALANCE`、`BLOCKHASH` 等。 +瞬态存储是每笔交易的键值存储,可通过 `TSTORE` 和 `TLOAD` 操作码访问。 它在同一笔交易的所有内部调用中都会持续存在,但在交易结束时会被清除。 与内存不同,瞬态存储被建模为 EVM 状态的一部分,而不是执行框架的一部分,但它不会提交到全局状态。 瞬态存储可以在一笔交易的内部调用之间实现燃料高效的临时状态共享。 -![表明 EVM 操作需要 Gas 的图表](../gas/gas.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +### 存储 + +合约包含一个与相关帐户关联的默克尔帕特里夏_存储_树(作为字可寻址字数组),是全局状态的一部分。 这种持久化存储与瞬态存储不同,后者仅在单笔交易期间可用,并且不构成帐户持久化存储树的一部分。 + +### 操作码 + +编译后的智能合约字节码作为多个 EVM [操作码](/developers/docs/evm/opcodes)执行,这些操作码执行 `XOR`、`AND`、`ADD`、`SUB` 等标准堆栈操作。 EVM 还实现了一些区块链特有的堆栈操作,例如 `ADDRESS`、`BALANCE`、`BLOCKHASH` 等。 操作码集还包括 `TSTORE` 和 `TLOAD`,它们提供对瞬态存储的访问。 + +![一张图表,显示 EVM 操作在何处需要燃料](../gas/gas.png) +_图表改编自 [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ ## EVM 实现 {#evm-implementations} EVM 的所有实现都必须遵守以太坊黄皮书中描述的规范。 -在以太坊九年的历程中,以太坊虚拟机经过了几次修订,并且存在不同编程语言实现的以太坊虚拟机版本。 +在以太坊十年的历史中,EVM 经历了数次修订,并且有多种编程语言的 EVM 实现。 -[以太坊执行客户端](/developers/docs/nodes-and-clients/#execution-clients)都包含一个以太坊虚拟机实现。 此外,还有多个独立的实现,包括: +[以太坊执行客户端](/developers/docs/nodes-and-clients/#execution-clients)包括一个 EVM 实现。 此外,还有多个独立的实现,包括: - [Py-EVM](https://github.com/ethereum/py-evm) - _Python_ - [evmone](https://github.com/ethereum/evmone) - _C++_ - [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_ - [revm](https://github.com/bluealloy/revm) - _Rust_ -## 延伸阅读 {#further-reading} +## 扩展阅读 {#further-reading} - [以太坊黄皮书](https://ethereum.github.io/yellowpaper/paper.pdf) -- [Jellopaper aka KEVM:K 中的 EVM 语法](https://jellopaper.org/) -- [The Beigepaper](https://github.com/chronaeon/beigepaper) +- [Jellopaper 又名 KEVM:K 框架中的 EVM 语义](https://jellopaper.org/) +- [米色皮书](https://github.com/chronaeon/beigepaper) - [以太坊虚拟机操作码](https://www.ethervm.io/) -- [以太坊虚拟机操作码交互参考](https://www.evm.codes/) -- [Solidity 文档的简短介绍](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6) +- [以太坊虚拟机操作码交互式参考](https://www.evm.codes/) +- [Solidity 文档中的简短介绍](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6) - [精通以太坊 - 以太坊虚拟机](https://github.com/ethereumbook/ethereumbook/blob/openedition/13evm.asciidoc) ## 相关主题 {#related-topics} -- [Gas](/developers/docs/gas/) +- [燃料](/developers/docs/gas/) From f5a20dddde2f74a3e7360b3a4e683eb432edd508 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:17 -0800 Subject: [PATCH 101/581] update(i18n): src/intl/zh/page-staking-deposit-contract.json --- src/intl/zh/page-staking-deposit-contract.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intl/zh/page-staking-deposit-contract.json b/src/intl/zh/page-staking-deposit-contract.json index 2d20cbbe223..361aef2c9d9 100644 --- a/src/intl/zh/page-staking-deposit-contract.json +++ b/src/intl/zh/page-staking-deposit-contract.json @@ -8,7 +8,7 @@ "page-staking-deposit-contract-confirm-address": "确认显示地址", "page-staking-deposit-contract-copied": "地址已复制", "page-staking-deposit-contract-copy": "复制地址", - "page-staking-deposit-contract-blockexplorer": "在 Etherscan 上查看合约", + "page-staking-deposit-contract-blockexplorer": "在 Blockscout 上查看合约", "page-staking-deposit-contract-h2": "你不应该在这里进行质押", "page-staking-deposit-contract-launchpad": "使用启动板进行质押", "page-staking-deposit-contract-launchpad-2": "使用启动板", From de37bfe69b0d85d7c96671a5d93fa4229ea32ab0 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:20 -0800 Subject: [PATCH 102/581] update(i18n): public/content/translations/zh/roadmap/pectra/maxeb/index.md --- .../zh/roadmap/pectra/maxeb/index.md | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 public/content/translations/zh/roadmap/pectra/maxeb/index.md diff --git a/public/content/translations/zh/roadmap/pectra/maxeb/index.md b/public/content/translations/zh/roadmap/pectra/maxeb/index.md new file mode 100644 index 00000000000..f229fe7899a --- /dev/null +++ b/public/content/translations/zh/roadmap/pectra/maxeb/index.md @@ -0,0 +1,204 @@ +--- +title: Pectra 升级后的最大有效金额机制 +description: 在 Pectra 升级中了解更多关于 MaxEB(Maximum Effective Balance) 的信息 +lang: zh +--- + +# MaxEB {#maxeb} + +_简而言之:_ Pectra 硬分叉允许以太坊验证者将 **类型1** 提款凭证转换为 **类型2** 提款凭证,从而参与更高的最大有效余额和复利机制。 执行此操作的官方工具是 Launchpad。 此操作无法撤销。 + +## 概述 {#overview} + +### 谁会受到影响? {#who-is-affected} + +任何运行验证者的人——他们很可能知道自己所控制的验证者的索引(例如[验证者 #12345](https://beaconcha.in/validator/12345))。 如果您使用协议来运行验证者(例如 Lido CSM 或 Rocket Pool),则需要与他们核实,以确定他们是否以及何时支持 maxEB。 + +如果您使用流动性质押代币(例如 rETH 或 stETH)进行质押,则无需或不建议采取任何行动。 + +### 什么是 “maxEB” ? {#what-is-maxeb} + +maxEB = 验证者的最大有效余额。 在Pectra硬分叉之前,单个验证者最多可获得基于32 ETH的收益。 在 Pectra 之后,验证者可以选择,以 1 ETH 为增量单位赚取基于 32 至 2048 ETH 任意金额之间的收益。 + +### 验证者如何参与? {#how-does-a-validator-opt-in} + +验证者若要选择启用 maxEB(最大有效余额) 的变更,需要将提取凭证从 类型1(Type 1) 转换为 类型2(Type 2)。 Pectra 硬分叉上线后,可以在 [启动板(验证者操作)](https://launchpad.ethereum.org/validator-actions) 上完成此操作。 与**类型0** → **类型1**类似,从**类型1**转换为**类型2**是一个不可逆的过程。 + +### 什么是提款凭证? {#whats-a-withdrawal-credential} + +当你成为一个验证者时,你会拥有一组 提取凭证 这些信息可以在您的存款数据 JSON 文件 中找到,或者您可以在验证者的 beaconcha.in [存款标签](https://beaconcha.in/validator/12345#deposits) 上查看。 + +1. **类型 0** 提款凭证:如果您的验证者的提款凭证以“0x00...”开头,则您在 Shapella 硬分叉之前进行了存款,但尚未设置提款地址。 + +![类型 0 提款凭证](./0x00-wd.png) + +2. **类型 1** 提款凭证:如果您的验证器的提款凭证以 `0x01...` 开头,则表示您是在 Shapella 硬分叉之后进行的存款,或者您已经将 **类型 0** 凭证转换为 **类型 1** 凭证。 + +![类型1提款凭证](./0x01-wd.png) + +3. **类型 2** 提款凭证:凭证类型将以 `0x02...` 开头,并在 Pectra 升级之后启用。 启用**类型2**提款凭证的验证者也被称为“**复利验证者**” + +| **可行的** | **不可行的** | +| ------------- | ------------- | +| ✅ 类型 0 → 类型 1 | ❌ 类型 0 → 类型 2 | +| ✅ 类型1 → 类型2 | ❌ 类型 1 → 类型 0 | +| | ❌ 类型 2 → 类型 1 | +| | ❌ 类型 2 → 类型 0 | + +### 风险 {#risks} + +MaxEB 允许验证者将其全部余额转账给另一位验证者。 提交合并请求的用户应核实其签名的交易的来源和内容。 利用maxEB功能的官方工具是Launchpad。 如果您决定使用第三方工具,您应确认以下几点: + +- 源验证者的公钥和提现地址与他们控制的验证者相匹配 +- 目标验证器的公钥正确且属于他们 +- 该请求为转换操作,而非合并操作,若他们无意将资金转至另一验证者 +- 该交易正在由正确的提现地址进行签名 + +我们**强烈建议**你在使用任何第三方工具之前,与 [EthStaker 社区](https://ethstaker.org/about)进行讨论。 这是一个有助于验证你的方法并避免错误的有用地方。 如果您使用了恶意或配置错误的工具,**您的整个验证者余额可能会被发送到您无法控制的验证者** ——且无法取回。 + +## 技术细节 {#technical-details} + +### 流程 {#the-flow} + +`ConsolidationRequest` 操作将有两种用途: + +1. 将现有验证者从**类型1**转换为**类型2**验证者 +2. 将其他验证者合并到现有的**类型2**验证者中 + +在将**类型 1** 验证者转换为**类型 2** 验证者时,_源验证者_和_目标验证者_都将是你正在转换的验证者。 该操作将消耗燃料,并将排在其他合并请求之后。 此队列与存款队列**独立**,不受新验证者存款的影响,可通过[pectrified.com](https://pectrified.com/)查看。 + +要合并验证者,您必须拥有一个具有**类型 2** 提币凭证的_目标验证者_。 这是任何验证者余额被合并的目的地,且索引需要保留。 + +### 转换为类型2的要求 {#requirements-for-converting-to-type-2} + +这将是您将第一个验证者转换为**类型2**时所需的。 该验证者的序号已保留且处于活动状态。 对于转换,_源验证者_ == _目标验证者_ + +验证者必须…… + +- 处于激活状态 +- 拥有**类型1**的取款凭证 +- 不处于退出状态(或被禁用) +- 没有待处理的手动触发提现(不适用于自动转账) + +![转换示意图](./conversion.png) + +### 合并的条件 {#requirements-for-consolidating} + +这是与转换_相同的操作_,但此时_源验证者与_目标验证者\*不同。 目标验证者的序号得以保留,并接受来自源验证者的余额。 源验证者的索引被置于“已退出”的状态。 + +在这种情况下,源验证者需要满足上述所有要求,还要满足: + +- 持续保持活跃至少大约27.3小时(一个 共同的委员会周期(SHARD_COMMITTEE_PERIOD)) + +源验证者必须 + +- 拥有**类型 2**的提款凭证 +- 未在退出状态中。 + +![合并示意图](./consolidation.png) + +### 合并请求{#the-consolidation-request} + +合并请求将会被源验证者所关联的取款地址签名,且需要具有: + +1. 源验证者的地址(例如,`0x15F4B914A0cCd14333D850ff311d6DafbFbAa32b`) +2. 源验证者的公钥(例如,`0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c`) +3. 目标验证者的公钥 + +在转换过程中,2和3将是同样的。 这个操作可以在[Launchpad]上完成(https://launchpad.ethereum.org/)。 + +### 签名的要求{#signing-requirements} + +要提交“合并请求”,源验证者的取款地址必须在请求上签名。 这证明了对于验证者资金的控制权。 + +### 签名了什么? {#what-is-signed} + +使用 `合并请求` 的域名分隔[签名根](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#compute_signing_root)。 + +- **领域**“领域合并请求” +- **签名根字段:** + - `源公钥`: `BLSPubkey` + - `目标公钥`: `BLSPubkey` + - `源地址`: `ExecutionAddress` + +生成的 **​​BLS 签名**​​随请求一同提交。 + +注意:签名由取款地址执行,而非通过验证者的密钥。 + +### 部分取款{#partial-withdrawals} + +有着**Type 1** 凭证的验证者会自动地、无需Gas 费地把它们的超额余额(任何超过 32 ETH的)清理到他们的提款地址。 由于 **Type 2**验证者​​允许以 ​​1 ETH 为增量单位​​进行余额复利累积,在余额达到 ​​2048 ETH​​ 之前,系统​​不会自动清理余额。 在 **类型2** 验证者上的部分提取必须被手动触发,且需要消耗燃料。 + +## 合并工具{#consolidation-tooling} + +有几种可以使用的工具来管理合并。 [启动板(Launchpad)](https://launchpad.ethereum.org/en/validator-actions) 是由以太坊基金会创建的官方工具。 还有一些由质押社区的实体创建的第三方工具,可能提供该启动版(Launchpad)未提供的功能。 尽管这里的工具没有经过以太坊基金会的审计或认可,社区知名成员的开源工具如下。 + +| 工具 | 网站 | 开源 | 创建者 | 已审核 | 接口 | 显著特征 | +| ------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | ------------------------------------ | +| Pectra 质押经理 | pectrastaking.com | 是的,Apache 2.0 | [Pier Two](https://piertwo.com/) | 否 | 网页用户界面 | Wallet Connect,可用于 SAFE | +| Pectra Validator Ops CLI 工具 | 【GitHub】(https://github.com/Luganodes/Pectra-Batch-Contract) | 是的,MIT | [Luganodes](https://www.luganodes.com/) | 是的,Quantstamp [2025 年 5 月](https://certificate.quantstamp.com/full/luganodes-pectra-batch-contract/23f0765f-969a-4798-9edd-188d276c4a2b/index.html) | 命令行 | 批量处理,一次处理多个验证者 | +| Ethereal | [GitHub](https://github.com/wealdtech/ethereal) | 是的,Apache 2.0 | [Jim McDonald](https://www.attestant.io/team/) | 否 | 命令行 | 用于验证者和节点管理的完整功能集合 | +| Siren | 【GitHub】(https://github.com/sigp/siren) | 是的,Apache 2.0 | 【Sigma Prime】(https://sigmaprime.io/) | 否 | 一些命令行,但主要是网页用户界面 | 仅在你使用 Lighthouse 共识用户端时有用 | +| Consolideth.app | https://consolideth.app/ [GitHub](https://github.com/Stakely/consolideth) | 是,MIT 许可证 | [Stakely](https://stakely.io/) | 否 | Web UI,由 stakely 托管,可免费自行托管 | 支持主流钱包连接,包括通过 walletconnect 连接 safe。 | + +## 常见问题 {#faq} + +### 选择加入会改变我的提案的运气或者奖励吗? ({#change-luck-or-rewards}) + +否。 选择加入不会降低你的提议被选中的机会——你的验证责任和提案选择仍然保持不变。 例如,如果你有两个 ​​32 ETH 的验证​者和一个 ​​64 ETH 的验证者,它们被选中提议一个区块并赢得奖励的总概率是相同的。 + +### 选择加入会改变我被惩罚的风险吗? {#change-slashing-risk} + +对于小型或非专业运营商而言,​​合并验证者节点不会改变被惩罚的风险。 更详细的回答是:对于每个节点运行多个验证者且拥有快速警报的专业运营者来说,合并为更少的验证者可能会降低他们对罚没事件的反应能力,从而无法避免连锁惩罚事件发生。 对所有验证者的初始罚没_惩罚_已经从 1 ETH (每 32 ETH) 大幅降低到了 0.0078125 ETH (每 32 ETH) 以抵消这种风险。 + +### 我需要退出我的验证者来进行转换吗? {#exit-validator} + +否。 你可以在不退出的情况下就地进行转换。 + +### 转换/合并需要多长时间? {#how-long} + +最少需要27.3小时,但是合并的时候也会遭遇排队。 这个排队独立于存款队列与取款队列,且不受到它们的影响。 + +### 我可以保留我的验证者索引吗? {#keep-validator-index} + +由此可见, 就地转换使得验证者索引得以保持相同。 如果你合并了多个验证者,你只能够保留_目标验证者_.的索引。 + +### 我会错过认证吗? {#miss-attestations} + +在合并到另一个验证者期间,源验证者将退出,并且在目标验证者的余额生效前,有大约 27 小时的等待期。 这段时间**不会影响性能指标**。 + +### 我会遭到惩罚吗? {#incur-penalties} + +否。 只要你的验证者还在线,你就不会遭受惩罚。 + +### 合并的验证者的提现地址是否必须匹配? {#withdrawal-addresses-match} + +否。 但是_来源_必须从自己的地址授权请求。 + +### 转换之后我的奖励会进行复利吗? {#rewards-compound} + +由此可见, 通过**类型 2**凭证,超过 32 ETH 的奖励会自动被重新质押——但不是立即开始重新质押。 由于存在一个小缓冲区 (称为[_滞后_](https://eth2book.info/capella/part2/incentives/balances/#hysteresis)),你的余额需要达到**约 1.25 ETH 以上**,才会将多余部分重新质押。 因此,复利并非在 33.0 ETH 时发生,而是在 33.25 (有效余额为 33 ETH) 时发生,然后是 34.25 (有效余额为 34 ETH),以此类推。 + +### 完成转换之后我还能获得自动转账的功能吗? {#automatic-sweep} + +自动转账只会在超额余额超过 2048 时触发。 对于所有其它的部分取款,你都需要通过手动触发它们。 + +### 我能否改变主意,将验证器从类型2​​转回类型 1​​? {#go-back-to-type1} + +否。 到**类型2**的转换是不可逆的。 + +### 如果我想要合并多个验证者,是否需要首先将每个验证者单独转换为类型2? {#consolidate-multiple-validators} + +不需要! 把其中一个验证器转换为类型2,然后把它作为目标验证器使用。 所有合并到类型2目标验证者的其他验证者,都可以是类型1或类型2 + +### ​​我的验证者是离线的或余额低于32 ETH——我仍然可以转化它吗? {#offline-or-below-32eth} + +由此可见, 只要验证者处在活跃状态(未退出)且你能用其取款地址进行签名,你就可以进行转换。 + +## 资源{#resources} + +- 【Electra 共识规范】(https://github.com/ethereum/consensus-specs/blob/dev/specs/electra/beacon-chain.md)这是您应该参照的最权威的版本。 当您感到疑惑的时候,请阅读这些规范 +- 并非每个人都擅长阅读代码。因此,可以使用[这个 maxEB-GPT](https://chatgpt.com/g/g-67f1650fb48081918f555e0c8d1c2ae9-maxeb-gpt) 帮助解读规范。 _免责声明:应参照规范本身,而非AI作为事实的来源,因为AI可能会误解信息或者提供幻觉回答_ +- 【pectrified.com】(https://pectrified.com/):]:查看合并、存款及队列等待时间的状态 +- 【Ethereal】(https://github.com/wealdtech/ethereal):社区创造的 CLI 工具,用于管理常见的验证者任务 +- [batch-validator-depositor](https://github.com/attestantio/batch-validator-depositor):社区创建的合约,允许在单笔交易中存入多个以太坊验证者 From 7e5ed928689f6e01a50d0262dff77ff00dd43982 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:23 -0800 Subject: [PATCH 103/581] update(i18n): public/content/translations/zh/roadmap/beacon-chain/index.md --- .../zh/roadmap/beacon-chain/index.md | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/public/content/translations/zh/roadmap/beacon-chain/index.md b/public/content/translations/zh/roadmap/beacon-chain/index.md index a724437627f..99622f3a506 100644 --- a/public/content/translations/zh/roadmap/beacon-chain/index.md +++ b/public/content/translations/zh/roadmap/beacon-chain/index.md @@ -11,39 +11,39 @@ summaryPoint3: 信标链引入了共识逻辑和区块广播协议,为当前 --- - 信标链于 2020 年 12 月 1 日上线,并且在 2022 年 9 月 15 日完成合并升级,将权益证明正式确定为太坊的共识机制。 + 信标链于 2020 年 12 月 1 日上线,并且在 2022 年 9 月 15 日完成合并升级,将权益证明正式确定为以太坊的共识机制。 -## 什么是信标链? {#what-is-the-beacon-chain} +## 什么是信标链? 什么是信标链?{#what-is-the-beacon-chain} 信标链是 2020 年推出的原始权益证明区块链的名称。 它的创立是为了在以太坊主网上运行权益证明共识逻辑之前确保该逻辑是可靠且可持续的。 因此,它与原有的工作量证明以太坊一起运行。 信标链是一个由“空”区块组成的链,但在以太坊上停止工作量证明并启动权益证明,需要指示信标链接受来自执行客户端的交易数据,将它们打包到区块,再将区块组织到一条运行权益证明共识机制的区块链上。 与此同时,原有的以太坊客户端停止挖矿、区块传播及旧的共识逻辑,并将这一切转交给信标链。 这一事件称为[合并](/roadmap/merge/)。 在合并发生后,就不再有两个区块链。 相反,只有一个权益证明以太坊,现在每个节点需要两个不同的客户端。 信标链现在是共识层,一个处理区块消息和共识逻辑的共识客户端的点对点网络,而原始客户端形成执行层,负责传播消息和执行交易,以及管理以太坊的状态。 这两层可以使用引擎应用程序接口相互通信。 ## 信标链有什么作用? {#what-does-the-beacon-chain-do} -信标链是在以太坊[质押人](/staking/)开始验证真实的以太坊区块之前管理和协调以太坊质押人网络的帐户账本的名称。 它不处理交易或智能合约交互,因为这些任务在执行层完成。 信标链负责处理区块和证明、运行分叉选择算法以及管理奖励和惩罚等。 要了解更多内容,请参阅我们的[节点架构页面](/developers/docs/nodes-and-clients/node-architecture/#node-comparison)。 +信标链是在以太坊[质押人](/staking/)开始验证真实的以太坊区块之前,管理和协调以太坊质押人网络的帐户账本的名称。 它不处理交易或智能合约交互,因为这些任务在执行层完成。 +信标链负责处理区块和证明、运行分叉选择算法以及管理奖励和惩罚等。 +在我们的[节点架构页面](/developers/docs/nodes-and-clients/node-architecture/#node-comparison)上阅读更多内容。 ## 信标链的影响 {#beacon-chain-features} -### 质押介绍 {#introducing-staking} +### 质押简介 {#introducing-staking} -信标链将[权益证明机制](/developers/docs/consensus-mechanisms/pos/)引入以太坊。 这保证了以太坊的安全,并在此过程中让验证者获得更多以太币。 在实际操作中,质押将需要质押以太币,以激活验证者软件。 作为质押人,你运行该软件并在链中创建和验证新区块。 +信标链为以太坊引入了[权益证明](/developers/docs/consensus-mechanisms/pos/)。 这保证了以太坊的安全,并在此过程中让验证者获得更多以太币。 在实际操作中,质押将需要质押以太币,以激活验证者软件。 作为质押人,你运行该软件并在链中创建和验证新区块。 质押的目的和以前的[挖矿](/developers/docs/consensus-mechanisms/pow/mining/)相似,但又在很多方面不同。 挖矿的前期支出庞大,需要投入强大的硬件和消耗大量能源,从而产生规模经济并促进集中化。 挖矿也没有提出任何将资产锁定作为抵押品的要求,这限制了被攻击后协议惩罚不良行为者的能力。 和工作量证明相比,过渡到权益证明让以太坊的安全性与去中心化得到显著提升。 参与该网络的人越多,网络去中心化程度越高,面临攻击时也越安全。 -采用权益证明共识机制为[我们现在拥有的安全、环保和可扩展的以太坊](/roadmap/vision/)奠定了基础。 - - 如果你有兴趣成为验证者并帮助保护以太坊,请点击此处[了解更多关于质押的信息](/staking/)。 + 如果你有兴趣成为验证者并帮助保护以太坊,[请了解更多关于质押的信息](/staking/)。 -### 设置分片 {#setting-up-for-sharding} +### 为分片做准备 {#setting-up-for-sharding} 在信标链与最初的以太坊主网合并后,以太坊社区开始寻求扩展该网络。 @@ -51,13 +51,13 @@ summaryPoint3: 信标链引入了共识逻辑和区块广播协议,为当前 这种责任与工作量证明形成对比,在工作量证明中,矿工对网络没有义务,可以立即停止挖矿并永久关闭其节点而不会受到任何影响。 而且,也没有已知区块提议者的记录,并且没有可靠的方法安全地划分网络责任。 -[有关分片的更多信息](/roadmap/danksharding/) +[关于分片的更多信息](/roadmap/danksharding/) -## 升级间的关系 {#relationship-between-upgrades} +## 升级之间的关系 {#relationship-between-upgrades} 以太坊的所有升级都存在一些关联。 所以我们来回顾一下信标链对其他升级的影响。 -### 信标链和合并 {#merge-and-beacon-chain} +### 信标链与合并 {#merge-and-beacon-chain} 最初,信标链与以太坊主网相互独立,但两者在 2022 合并。 @@ -65,7 +65,7 @@ summaryPoint3: 信标链引入了共识逻辑和区块广播协议,为当前 合并 -### 分片和信标链 {#shards-and-beacon-chain} +### 分片与信标链 {#shards-and-beacon-chain} 只有在已建立权益证明共识机制的情况下,分片才能安全进入以太坊生态系统。 信标链引入了质押,它与主网“合并”,为分片铺平了道路,以帮助进一步扩展以太坊。 @@ -73,8 +73,7 @@ summaryPoint3: 信标链引入了共识逻辑和区块广播协议,为当前 分片链 -## 延伸阅读 +## 了解更多 -- [有关以太坊未来升级的更多信息](/roadmap/vision) -- [有关节点架构的更多信息](/developers/docs/nodes-and-clients/node-architecture) -- [更多关于关权益证明的信息](/developers/docs/consensus-mechanisms/pos) +- [关于节点架构的更多信息](/developers/docs/nodes-and-clients/node-architecture) +- [关于权益证明的更多信息](/developers/docs/consensus-mechanisms/pos) From a3521a99e900540fe82b91e46fb18d001c8f095e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:25 -0800 Subject: [PATCH 104/581] update(i18n): public/content/translations/zh/developers/docs/blocks/index.md --- .../zh/developers/docs/blocks/index.md | 108 +++++++++--------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/public/content/translations/zh/developers/docs/blocks/index.md b/public/content/translations/zh/developers/docs/blocks/index.md index cb59f2c7d6f..afe945e7d1a 100644 --- a/public/content/translations/zh/developers/docs/blocks/index.md +++ b/public/content/translations/zh/developers/docs/blocks/index.md @@ -8,55 +8,55 @@ lang: zh ## 前提条件 {#prerequisites} -区块是一个对初学者非常友好的主题。 为了帮助你更好地理解这个页面,我们建议你先阅读[帐户](/developers/docs/accounts/)、[交易](/developers/docs/transactions/)和我们的[以太坊简介](/developers/docs/intro-to-ethereum/)。 +区块是一个对初学者非常友好的主题。 为了更好地理解本页内容,我们建议您先阅读[帐户](/developers/docs/accounts/)、[交易](/developers/docs/transactions/)以及我们的[以太坊简介](/developers/docs/intro-to-ethereum/)。 ## 为什么要有区块? {#why-blocks} 为了确保以太坊网络上的所有参与者保持同步状态并就交易的确切历史达成共识,我们将交易分为多个区块。 这意味着同时有数十个(甚至数百个)交易被提交、达成一致并同步。 -![区块中的交易导致状态变化的图表](./tx-block.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +![显示区块中交易导致状态变化的示意图](./tx-block.png)\n_示意图改编自 [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ 通过间隔提交,所有网络参与者有足够时间达成共识:即使交易请求每秒发生数十次,但以太坊上的区块仅仅大约每十二秒创建并提交一次。 -## 区块如何工作 {#how-blocks-work} +## 区块如何运作 {#how-blocks-work} 为了保存交易历史,区块被严格排序(创建的每个新区块都包含一个其父块的引用),区块内的交易也严格排序。 除极少数情况外,在任何特定时间,网络上的所有参与者都同意区块的确切数目和历史, 并且正在努力将当前的活动交易请求分批到下一个区块。 随机选择的验证者在网络上构建完区块后,该区块将传播到整个网络;所有节点都将该区块添加至其区块链的末尾,然后挑选新的验证者来创建下一个区块。 目前,确切的区块构建过程和提交/共识过程由以太坊的“权益证明”协议规定。 -## 权益证明协议 {#proof-of-work-protocol} +## 权益证明协议 {#proof-of-stake-protocol} 权益证明是指: - 验证节点必须向存款合约中质押 32 个以太币,作为抵押品防止发生不良行为。 这有助于保护网络,因为如果发生不诚实活动且可以证实,部分甚至全部质押金额将被销毁。 - 在每个时隙(12 秒的时间间隔)中,会随机选择一个验证者作为区块提议者。 他们将交易打包并执行,然后确定一个新的“状态”。 他们将这些信息包装到一个区块中并传送给其他验证者。 -- 其他获悉新区块的验证者再次执行区块中包含的交易,确定他们同意对全局状态提出的修改。 假设该区块是有效的,验证者就将该区块添加进各自的数据库。 +- 其他获悉新区块的验证者会重新执行这些交易,以确保他们同意对全局状态的提议更改。 假设该区块有效,他们就会将其添加到自己的数据库中。 - 如果验证者获悉在同一时隙内有两个冲突区块,他们会使用自己的分叉选择算法选择获得最多质押以太币支持的那一个区块。 -[有关权益证明的更多信息](/developers/docs/consensus-mechanisms/pos) +[关于权益证明的更多信息](/developers/docs/consensus-mechanisms/pos) ## 区块包含什么? {#block-anatomy} 一个区块中包含很多信息。 区块的最高层包含以下字段: -| 字段 | 简介 | -|:---------------- |:-------------- | +| 字段 | 描述 | +| :--------------- | :------------- | | `时隙` | 区块所属的时隙 | | `proposer_index` | 提出区块的验证者的 ID | | `parent_root` | 上一个区块的哈希 | | `state_root` | 状态对象的根哈希 | | `正文` | 包含多个字段的对象,定义如下 | -区块的 `body` 包含一些自有字段: +区块 `body` 本身包含几个字段: -| 栏目 | 简介 | -|:-------------------- |:-------------- | +| 字段 | 描述 | +| :------------------- | :------------- | | `randao_reveal` | 用于选择下一个区块提议者的值 | | `eth1_data` | 关于存款合约的信息 | -| `涂鸦` | 用于标记区块的任意数据 | +| `graffiti` | 用于标记区块的任意数据 | | `proposer_slashings` | 将要惩罚的验证者列表 | | `attester_slashings` | 将要受到惩没的证明者列表 | -| `认证` | 支持当前区块的认证列表 | +| `认证` | 针对之前时隙所做认证的列表 | | `存款` | 存款合约新增存款的列表 | | `voluntary_exits` | 退出网络的验证者列表 | | `sync_aggregate` | 用于服务轻客户端的验证者子集 | @@ -64,29 +64,29 @@ lang: zh `attestations` 字段包含区块中所有认证的列表。 认证有自己的数据类型,其中包含多条数据。 每个认证包含: -| 栏目 | 简介 | -|:------------------ |:------------ | -| `aggregation_bits` | 参与此认证的验证者列表 | -| `数据` | 具有多个子字段的容器 | -| `签名` | 所有证明验证者的聚合签名 | +| 字段 | 描述 | +| :----------------- | :--------------------- | +| `aggregation_bits` | 参与此认证的验证者列表 | +| `数据` | 具有多个子字段的容器 | +| `签名` | 一组验证者针对 `data` 部分的聚合签名 | `attestation` 中的 `data` 字段包含以下内容: -| 栏目 | 简介 | -|:------------------- |:-------------- | +| 字段 | 描述 | +| :------------------ | :------------- | | `时隙` | 认证所涉及的时隙 | | `索引` | 证明验证者的索引 | -| `beacon_block_root` | 包含此对象的信标区块的根哈希 | +| `beacon_block_root` | 被视为链头的信标区块的根哈希 | | `来源` | 最后一个合理的检查点 | | `target` | 最新的时段边界区块 | -执行 `execution_payload` 中的交易会更新全局状态。 所有客户端重新执行 `execution_payload` 中的交易,以确保新状态与新区块 `state_root` 字段中的状态相符。 这就是客户端如何判断新区块是否有效且可以安全添加到其区块链的方式。 `execution payload` 本身是一个包含多个字段的对象。 还有一个 `execution_payload_header`,包含有关执行数据的重要摘要信息。 这些数据结构如下组织: +执行 `execution_payload` 中的交易会更新全局状态。 所有客户端都会重新执行 `execution_payload` 中的交易,以确保新状态与新区块 `state_root` 字段中的状态相符。 这就是客户端如何判断新区块是否有效且可以安全添加到其区块链的方式。 `execution payload` 本身是一个包含多个字段的对象。 还有一个 `execution_payload_header`,其中包含关于执行数据的重要摘要信息。 这些数据结构如下组织: `execution_payload_header` 包含以下字段: -| 领域 | 简介 | -|:------------------- |:------------------- | -| `父_哈希值` | 父块的哈希值 | +| 字段 | 描述 | +| :------------------ | :------------------ | +| `parent_hash` | 父块的哈希值 | | `fee_recipient` | 向其支付交易费的帐户地址 | | `state_root` | 应用此区块中的更改后,全局状态的根哈希 | | `receipts_root` | 交易收据树的哈希 | @@ -95,39 +95,39 @@ lang: zh | `block_number` | 当前区块的编号 | | `gas_limit` | 此区块允许的最大燃料量 | | `gas_used` | 此区块中使用的实际燃料量 | -| `时间戳` | 区块时间 | +| `timestamp` | 区块时间 | | `extra_data` | 作为原始字节的任意附加数据 | | `base_fee_per_gas` | 基础费值 | | `block_hash` | 执行区块的哈希 | | `transactions_root` | 有效载荷中交易的根哈希 | | `withdrawal_root` | 有效负载中提款的根哈希 | -`execution_payload` 本身包含以下字段(请注意这与 header 相同,只是它包含的不是交易的根哈希,而是实际的交易列表和提款信息列表): - -| 栏目 | 简介 | -|:------------------ |:------------------ | -| `父_哈希值` | 父块的哈希值 | -| `fee_recipient` | 支付交易费用的帐户地址 | -| `state_root` | 应用此区块中的更改后,全局的根哈希值 | -| `receipts_root` | 交易收据的哈希值 | -| `logs_bloom` | 包含事件日志的数据结构 | -| `prev_randao` | 在随机验证者选择中使用的值 | -| `block_number` | 当前区块的编号 | -| `gas_limit` | 此区块允许的最大的燃料量 | -| `gas_used` | 此区块中使用的燃料实际量 | -| `时间戳` | 区块时间 | -| `extra_data` | 作为原始字节任意附加数据 | -| `base_fee_per_gas` | 基本费用值 | -| `block_hash` | 执行区块的哈希值 | -| `交易` | 要执行交易的列表 | -| `提款` | 提款对象列表 | - -`Withdrawals` 列表包含了 `withdrawal` 对象,结构如下: +`execution_payload` 本身包含以下内容(请注意,这与标头相同,只是它不包含交易的根哈希,而是包含实际的交易列表和提款信息列表): + +| 字段 | 描述 | +| :----------------- | :------------------ | +| `parent_hash` | 父块的哈希值 | +| `fee_recipient` | 向其支付交易费的帐户地址 | +| `state_root` | 应用此区块中的更改后,全局状态的根哈希 | +| `receipts_root` | 交易收据树的哈希 | +| `logs_bloom` | 包含事件日志的数据结构 | +| `prev_randao` | 在随机选择验证者时使用的值 | +| `block_number` | 当前区块的编号 | +| `gas_limit` | 此区块允许的最大燃料量 | +| `gas_used` | 此区块中使用的实际燃料量 | +| `timestamp` | 区块时间 | +| `extra_data` | 作为原始字节的任意附加数据 | +| `base_fee_per_gas` | 基础费值 | +| `block_hash` | 执行区块的哈希 | +| `交易` | 要执行交易的列表 | +| `取款` | 提款对象列表 | + +`withdrawals` 列表包含按以下方式结构的 `withdrawal` 对象: | 字段 | 描述 | -|:---------------- |:------ | +| :--------------- | :----- | | `地址` | 提款帐户地址 | -| `amount` | 提款金额 | +| `金额` | 提款金额 | | `索引` | 提款索引值 | | `validatorIndex` | 验证者索引值 | @@ -135,17 +135,17 @@ lang: zh 区块时间是指两个区块之间的时间间隔。 在以太坊中,时间划分为每 12 秒一个单位,称为“时隙”。 在每个时隙内,选择一个单独的验证者提议区块。 假设所有验证者都在线且完全正常运行,则每个时隙内都会有一个区块产生,意味着区块时间是 12 秒。 但是,偶尔验证者在被要求提议区块时不在线,导致有时候一些时隙是空的。 -这种实现与基于工作量证明的系统不同。在工作量证明系统中,区块时间是带有概率性的,并由协议的目标挖矿难度调节。 以太坊的[平均区块时间](https://etherscan.io/chart/blocktime)是一个很好的例子,根据不变的新的 12 秒区块时间,可以清楚地推断出从工作量证明到权益证明的过渡。 +这种实现与基于工作量证明的系统不同。在工作量证明系统中,区块时间是带有概率性的,并由协议的目标挖矿难度调节。 以太坊的[平均区块时间](https://etherscan.io/chart/blocktime)就是一个很好的例子,基于新的 12 秒区块时间的一致性,可以清楚地推断出从工作量证明到权益证明的过渡。 ## 区块大小 {#block-size} -最后一条重要提示是,区块本身的大小是有界限的。 每个区块的目标大小为 3000 万单位燃料,但区块的大小将根据网络需求而增加或减少,直至达到 6000 万单位燃料的区块限制(目标区块大小的 2 倍)。 区块的燃料限制可以相对于上一个区块的燃料限制上调或下调 1/1024 的比例。 因此,验证者可以通过共识来改变区块的燃料限制。 区块中所有交易消耗的总燃料量必须低于区块的燃料限制。 这很重要,因为它可以确保区块不能任意扩大。 如果区块可以任意扩大,由于空间和速度方面的要求,性能较差的全节点将逐渐无法跟上网络。 区块越大,在下一个时隙中及时处理它们需要的算力就越强大。 这是一种集中化的因素,可以通过限制区块大小来抵制。 +最后一条重要提示是,区块本身的大小是有界限的。 每个区块的目标大小为 3000 万单位燃料,但区块的大小会根据网络需求增加或减少,直到达到 6000 万单位燃料的区块限制(目标区块大小的 2 倍)。 区块的燃料限制可以相对于上一个区块的燃料限制上调或下调 1/1024 的比例。 因此,验证者可以通过共识来改变区块的燃料限制。 区块中所有交易消耗的总燃料量必须低于区块的燃料限制。 这很重要,因为它可以确保区块不能任意扩大。 如果区块可以任意扩大,由于空间和速度方面的要求,性能较差的全节点将逐渐无法跟上网络。 区块越大,在下一个时隙中及时处理它们需要的算力就越强大。 这是一种集中化的因素,可以通过限制区块大小来抵制。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_ +_你还知道哪些对你有帮助的社区资源? 请编辑本页面并添加进来!_ -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} - [交易](/developers/docs/transactions/) - [燃料](/developers/docs/gas/) From fa63d43ad6ef8c3c58e3dee2393259920d69457f Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:29 -0800 Subject: [PATCH 105/581] update(i18n): public/content/translations/zh/developers/docs/bridges/index.md --- .../zh/developers/docs/bridges/index.md | 95 ++++++++++--------- 1 file changed, 49 insertions(+), 46 deletions(-) diff --git a/public/content/translations/zh/developers/docs/bridges/index.md b/public/content/translations/zh/developers/docs/bridges/index.md index 2b94f0f5edc..eace71bf418 100644 --- a/public/content/translations/zh/developers/docs/bridges/index.md +++ b/public/content/translations/zh/developers/docs/bridges/index.md @@ -4,7 +4,7 @@ description: 面向开发者的桥接概述 lang: zh --- -随着一层网络区块链和二层网络[扩容](/developers/docs/scaling/)解决方案的激增,以及越来越多的去中心化应用程序跨链,跨链通信和资产转移需求已成为网络基础设施的重要组成部分。 存在不同类型的链桥就是为了帮助解决这种需求。 +随着 L1 区块链和 L2 [扩容](/developers/docs/scaling/)解决方案的激增,以及越来越多的去中心化应用程序走向跨链,跨链通信和资产转移的需求已成为网络基础设施的重要组成部分。 存在不同类型的链桥就是为了帮助解决这种需求。 ## 对链桥的需求 {#need-for-bridges} @@ -12,9 +12,9 @@ lang: zh 区块链存在于孤立的环境中,这意味着区块链之间本来就无法进行交易和通信。 因此,虽然某个生态系统内可能存在大量的活动和创新,但它会由于缺乏与其他生态系统的连通性和互操作性而受到限制。 -链桥提供了一种让孤立的区块链环境相互连通的途径。 它们在区块链之间建立了一条传输路线,让代币、信息、任意数据甚至[智能合约](/developers/docs/smart-contracts/)调用都可以从一条区块链转移到另一条。 +链桥提供了一种让孤立的区块链环境相互连通的途径。 它们在区块链之间建立了一条传输路线,让代币、消息、任意数据,甚至[智能合约](/developers/docs/smart-contracts/)调用都可以从一条链转移到另一条链。 -## 链桥的优点 {#benefits-of-bridges} +## 链桥的优势 {#benefits-of-bridges} 简而言之,链桥解锁了大量应用场景,它允许区块链网络之间交换数据和转移资产。 @@ -30,63 +30,63 @@ lang: zh ## 链桥是如何工作的? {#how-do-bridges-work} -虽然[链桥设计](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/)多种多样,但以下三种方便资产跨链转移的方法脱颖而出: +虽然有许多[链桥设计类型](https://li.fi/knowledge-hub/blockchain-bridges-and-classification/),但有三种促进资产跨链转移的方法脱颖而出: -- **锁定并铸币 – **锁定源链上的资产并在目标链上铸币。 -- **销毁并铸币 – **销毁源链上的资产并在目标链上铸币。 -- **原子交换 – **通过第三方将源链上的资产与目标链上的资产交换。 +- **锁定并铸币 –** 在源链上锁定资产,并在目标链上铸造资产。 +- **销毁并铸币 –** 在源链上销毁资产,并在目标链上铸造资产。 +- **原子交换 –** 与另一方将源链上的资产交换为目标链上的资产。 ## 链桥类型 {#bridge-types} 链桥通常可以分为以下几类之一: -- **原生链桥 –** 这些链桥通常用于加强特定区块链上的流动性,使用户更容易将资金转移到生态系统。 例如,[Arbitrum 链桥](https://bridge.arbitrum.io/)的目的就是为了方便用户从以太坊主网桥接到 Arbitrum。 其他此链类桥包括 Polygon PoS 链桥、[Optimism 网关](https://app.optimism.io/bridge)等。 -- **基于验证者或预言机的链桥 –** 这些链桥依赖于外部验证者组或预言机来验证跨链转移。 例如:Multichain 与 Across。 -- **通用信息传递链桥 – **这些链桥可以跨链传输资产、信息和任意数据。 例如:Axelar、LayerZero 与 Nomad。 -- **流动性网络 –** 这些链桥主要是通过原子交换将资产从一条链转移到另一条链。 一般来讲,它们不支持跨链信息传递。 例如:Connext 与 Hop。 +- **原生链桥 –** 此类链桥通常旨在引导特定区块链上的流动性,方便用户将资金转移到生态系统。 例如,[Arbitrum 链桥](https://bridge.arbitrum.io/)的构建就是为了方便用户从以太坊主网桥接到 Arbitrum。 其他类似的链桥包括 Polygon PoS 链桥、[Optimism Gateway](https://app.optimism.io/bridge) 等。 +- **基于验证者或预言机的链桥 –** 此类链桥依赖于外部验证者集或预言机来验证跨链转账。 例如:Multichain 与 Across。 +- **通用消息传递链桥 –** 此类链桥可以跨链转移资产、消息和任意数据。 例如:Axelar、LayerZero 与 Nomad。 +- **流动性网络 –** 此类链桥主要通过原子交换将资产从一条链转移到另一条链。 一般来讲,它们不支持跨链信息传递。 例如:Connext 与 Hop。 -## 权衡利弊 {#trade-offs} +## 需要考虑的权衡因素 {#trade-offs} 没有完美的链桥解决方案。 有的只是为了实现目的而进行的权衡利弊。 开发者和用户可以根据以下因素评估链桥: - **安全性 –** 谁来验证系统? 通常,由外部验证者保护的链桥不如由区块链验证者在本地保护的链桥安全。 -- **便利性 –** 完成一笔交易需要多长时间,用户需要签署多少笔交易? 对于开发者来说,集成一个链桥需要多长时间,这个过程有多复杂? -- **连通性 –** 一个链桥可以连接哪些不同的目标链(卷叠、侧链、其他一层网络区块链等),集成一条新区块链有多难? -- **传递更复杂数据的能力 –** 链桥能够跨链传输信息和更复杂的任意数据,还是只支持跨链资产转移? +- **便利性 –** 完成一笔交易需要多长时间?用户需要签署多少笔交易? 对于开发者来说,集成一个链桥需要多长时间,这个过程有多复杂? +- **连通性 –** 链桥可以连接哪些不同的目标链(即 Rollup、侧链、其他 L1 区块链等)?集成一条新的区块链有多难? +- **传递更复杂数据的能力 –** 链桥能够实现跨链传递消息和更复杂的任意数据,还是只支持跨链资产转移? - **成本效益 –** 通过链桥跨链转移资产的成本是多少? 通常情况下,链桥收取固定或变动的费用,具体取决于燃料成本和特定路线的流动性。 根据确保链桥安全所需的资本来评估链桥的成本效益也是至关重要的。 在较高层面上,链桥可以分为需信任链桥和去信任链桥。 -- **需信任链桥 –** 需信任链桥由外部验证。 它们使用一组外部验证者(具有多重签名的联盟、多方计算系统、预言机网络)跨链发送数据。 因此,它们可以提供出色的连通性,并完全支持跨链通用信息传递。 在速度和成本效益方面它们通常也表现良好。 但这些是以安全性为代价的,因为用户必须依赖链桥的安全性。 -- **去信任 –** 这类链桥依靠它们连接的区块链及其验证者来传输信息和代币。 它们是“去信任”的,因为它们没有增加新的信任假设(区块链除外)。 因此,我们认为去信任链桥比可信链桥更安全。 +- **需信任 –** 需信任链桥由外部验证。 它们使用一组外部验证者(具有多重签名的联盟、多方计算系统、预言机网络)跨链发送数据。 因此,它们可以提供出色的连通性,并完全支持跨链通用信息传递。 在速度和成本效益方面它们通常也表现良好。 但这些是以安全性为代价的,因为用户必须依赖链桥的安全性。 +- **无需信任 –** 此类链桥依赖其连接的区块链及其验证者来转移消息和代币。 它们是“去信任”的,因为它们没有增加新的信任假设(区块链除外)。 因此,我们认为去信任链桥比可信链桥更安全。 为了根据其他因素评估去信任链桥,我们须将其分为通用信息传递链桥和流动性网络。 -- **通用信息传递链桥 –** 这些链桥在安全性和跨链传输更复杂数据的能力方面表现卓越。 通常,它们还具有良好的成本效益。 然而,这些优点通常以轻客户端链桥(例如 IBC)的连通性以及使用欺诈证明的乐观链桥(例如 Nomad)的速度劣势作为代价。 -- **流动性网络 –** 这些链桥使用原子交换转移资产,并且是本地验证系统(即,它们使用底层区块链的验证者验证交易)。 因此,它们在安全性和速度方面表现出色。 此外,流动性网络具有不错的成本效益和良好的连通性。 然而,最大的折衷之处是它们无法传递更复杂的数据 — 因为它们不支持跨链信息传递。 +- **通用消息传递链桥 –** 此类链桥在安全性和跨链传递更复杂数据的能力方面表现出色。 通常,它们还具有良好的成本效益。 然而,这些优点通常以轻客户端链桥(例如 IBC)的连通性以及使用欺诈证明的乐观链桥(例如 Nomad)的速度劣势作为代价。 +- **流动性网络 –** 此类链桥使用原子交换来转移资产,是本地验证的系统(即它们使用底层区块链的验证者来验证交易)。 因此,它们在安全性和速度方面表现出色。 此外,流动性网络具有不错的成本效益和良好的连通性。 然而,最大的折衷之处是它们无法传递更复杂的数据 — 因为它们不支持跨链信息传递。 -## 链桥相关风险 {#risk-with-bridges} +## 链桥的风险 {#risk-with-bridges} -去中心化金融领域中[最大的三次黑客攻击](https://rekt.news/leaderboard/)都是链桥造成的,而且链桥目前仍处于开发阶段早期。 使用任何链桥都有以下风险: +在 [DeFi 领域最大的几起黑客攻击](https://rekt.news/leaderboard/)中,排名前三的都与链桥有关,而且链桥仍处于早期开发阶段。 使用任何链桥都有以下风险: -- **智能合约风险 –** 虽然许多链桥已经成功通过了审计,但只需智能合约中的一个缺陷就会使资产暴露在黑客攻击中(例如:[Solana 的 Wormhole 链桥](https://rekt.news/wormhole-rekt/))。 -- **系统性金融风险** – 许多链桥使用包装资产在新的链上铸造规范化的原始资产。 这使生态系统面临系统性风险,正如我们所看到的那样,包装代币遭到利用。 -- **交易对手风险 –** 一些链桥采用可信设计,这要求用户依靠一种假设,即验证者不会串通起来窃取用户的资金。 用户需要信任这些第三方参与者,这使他们面临一些风险,比如跑路、审查和其他恶意活动。 -- **未解决的问题 –** 考虑到链桥处于发展阶段初期,还有许多关于链桥在不同市场条件下如何表现的问题都尚未解决,如网络拥塞期和在发生网络级攻击或状态回滚等不可预见的事件时。 这种不确定性带来了一定的风险,且风险程度目前仍然未知。 +- **智能合约风险 –** 虽然许多链桥已成功通过审计,但智能合约中的一个漏洞就足以让资产面临被黑客攻击的风险(例如:[Solana 的 Wormhole 链桥](https://rekt.news/wormhole-rekt/))。 +- **系统性金融风险 –** 许多链桥使用封装资产在新的链上铸造原始资产的规范版本。 这使生态系统面临系统性风险,正如我们所看到的那样,包装代币遭到利用。 +- **交易对手风险 –** 一些链桥采用需信任的设计,要求用户依赖“验证者不会合谋窃取用户资金”这一假设。 用户需要信任这些第三方参与者,这使他们面临一些风险,比如跑路、审查和其他恶意活动。 +- **未决问题 –** 鉴于链桥仍处于起步阶段,关于它们在不同市场条件下的表现,仍有许多悬而未决的问题,例如在网络拥堵、网络级攻击或状态回滚等意外事件期间。 这种不确定性带来了一定的风险,且风险程度目前仍然未知。 ## 去中心化应用程序如何使用链桥? {#how-can-dapps-use-bridges} 下面介绍一些实际应用,在这些应用中,开发者可以考虑链桥并让他们的去中心化应用程序跨链: -### 集成桥接 {#integrating-bridges} +### 集成链桥 {#integrating-bridges} 对于开发者来说,有很多方法可以添加对链桥的支持: -1. **构建自己的链桥 –** 构建安全可靠的链桥并不容易,特别是在选择一种进一步将信任最小化的方式时。 此外,还需要与可伸缩性和互操作性研究相关的多年经验和技术专长。 另外,还需要一支亲力亲为的团队来维护链桥,并吸引足够的流动性使其可行。 +1. **构建自己的链桥 –** 构建安全可靠的链桥并非易事,尤其是在采用更加信任最小化的路线时。 此外,还需要与可伸缩性和互操作性研究相关的多年经验和技术专长。 另外,还需要一支亲力亲为的团队来维护链桥,并吸引足够的流动性使其可行。 -2. **向用户展示多种链桥选项 –** 很多[去中心化应用程序](/developers/docs/dapps/)要求用户拥有原生代币才可与它们交互。 为了使用户能够访问他们的代币,去中心化应用程序在其网站上提供了不同的链桥选项。 然而,这种方法是权宜之计,因为它使用户离开去中心化应用程序界面但仍需要用户与其他去中心化应用程序和链桥交互。 这是一种繁琐的上手体验,会增加出错的范围。 +2. **向用户显示多种链桥选项 –** 许多[去中心化应用程序](/developers/docs/dapps/)都要求用户持有其原生代币才能进行交互。 为了使用户能够访问他们的代币,去中心化应用程序在其网站上提供了不同的链桥选项。 然而,这种方法是权宜之计,因为它使用户离开去中心化应用程序界面但仍需要用户与其他去中心化应用程序和链桥交互。 这是一种繁琐的上手体验,会增加出错的范围。 -3. **集成一个链桥 –**该解决方案不需要去中心化应用程序将用户发送到外部链桥和去中心化交易所接口。 这让去中心化应用程序能够改善用户的上手体验。 然而,这种方法有其局限性: +3. **集成一个链桥 –** 此解决方案不需要去中心化应用程序将用户引导至外部链桥和 DEX 界面。 这让去中心化应用程序能够改善用户的上手体验。 然而,这种方法有其局限性: - 链桥的评估和维护既困难又耗时。 - 选用一个链桥将造成单点故障和依赖性。 @@ -95,41 +95,44 @@ lang: zh 4. **集成多个链桥 –** 该解决方案解决了许多与集成单个链桥相关的问题。 然而,它也有局限性,因为集成多个链桥会消耗资源,并给开发者带来技术和通信开销 — 这是加密货币领域最稀缺的资源。 -5. **集成链桥聚合器 –** 去中心化应用程序另一个选择是集成链桥聚合解决方案,使它们能够访问多个链桥。 链桥聚合器继承了所有链桥的优点,因此不受任何单一链桥能力的限制。 值得注意的是,链桥聚合器通常维护链桥集成,这使去中心化应用程序避免了管控链桥集成技术和操作方面的麻烦。 +5. **集成链桥聚合器 –** 去中心化应用程序的另一个选择是集成链桥聚合解决方案,从而访问多个链桥。 链桥聚合器继承了所有链桥的优点,因此不受任何单一链桥能力的限制。 值得注意的是,链桥聚合器通常维护链桥集成,这使去中心化应用程序避免了管控链桥集成技术和操作方面的麻烦。 尽管如此,链桥聚合器也有其局限性。 比如说,虽然它们可以提供较多的链桥选择,但除了聚合器平台上提供的链桥外,市场上通常还有更多的链桥。 此外,像链桥一样,链桥聚合器也面临智能合约和技术风险(更多的智能合约 = 更多的风险)。 如果去中心化应用程序计划集成链桥或聚合器,那么根据集成的深度会有不同的选择。 例如,如果只是进行前端集成以改善用户上手体验,去中心化应用程序将集成小组件。 然而,如果整合是为了探索更深层次的跨链策略,如质押、流动性矿池等,去中心化应用程序就集成软件开发工具包或应用程序接口。 -### 在多条链上部署去中心化应用程序 {#deploying-a-dapp-on-multiple-chains} +### 在多个链上部署去中心化应用程序 {#deploying-a-dapp-on-multiple-chains} -要在多条链上部署去中心化应用程序 (dapp),开发者可以使用 [Alchemy](https://www.alchemy.com/)、[安全帽](https://hardhat.org/)和 [Moralis](https://moralis.io/) 等开发平台。 这些平台通常提供可组合的插件,能够支持去中心化应用程序跨链。 例如,开发者可以使用[安全帽部署插件](https://github.com/wighawag/hardhat-deploy)提供的确定性部署代理。 +要在多个链上部署去中心化应用程序,开发者可以使用 [Alchemy](https://www.alchemy.com/)、[安全帽](https://hardhat.org/)、[Moralis](https://moralis.io/) 等开发平台。 这些平台通常提供可组合的插件,能够支持去中心化应用程序跨链。 例如,开发者可以使用 [安全帽部署插件](https://github.com/wighawag/hardhat-deploy) 提供的确定性部署代理。 #### 例子: - [如何构建跨链去中心化应用程序](https://moralis.io/how-to-build-cross-chain-dapps/) -- [构建跨链非同质化代币市场](https://youtu.be/WZWCzsB1xUE) -- [Moralis:构建跨链非同质化代币去中心化应用程序](https://www.youtube.com/watch?v=ehv70kE1QYo) +- [构建跨链 NFT 市场](https://youtu.be/WZWCzsB1xUE) +- [Moralis:构建跨链 NFT 去中心化应用程序](https://www.youtube.com/watch?v=ehv70kE1QYo) ### 监控跨链合约活动 {#monitoring-contract-activity-across-chains} -要监控跨链合约活动,开发者可以使用子图和 Tenderly 等开发者平台实时观察智能合约。 这类平台上还有一些工具,提供更强大的跨链活动数据监控功能,例如,检查有没有[合约触发的事件](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events)等。 +要监控跨链合约活动,开发者可以使用子图和 Tenderly 等开发者平台实时观察智能合约。 此类平台也有工具可以为跨链活动提供更强大的数据监控功能,例如检查[合约发出的事件](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events)等。 #### 工具 -- [图表](https://thegraph.com/en/) +- [The Graph](https://thegraph.com/en/) - [Tenderly](https://tenderly.co/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [区块链链桥](/bridges/) — ethereum.org -- [区块链链桥:构建加密网络的网络](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) 2021 年 9 月 8 日 - Dmitriy Berenzon -- [互操作性的三难困境](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) 2021 年 10 月 1 日 – Arjun Bhuptani -- [群集:可信链桥和信任最小化链桥如何打造多链格局](https://blog.celestia.org/clusters/) 2021 年 10 月 4 日 – Mustafa Al-Bassam -- [LI.FI:有了链桥,信任就是一种范围](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) 2022 年 4 月 28 日 – Arjun Chand +- [区块链链桥](/bridges/) – ethereum.org +- [L2Beat 链桥风险框架](https://l2beat.com/bridges/summary) +- [区块链链桥:构建加密网络之网](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) - 2021 年 9 月 8 日 – Dmitriy Berenzon +- [互操作性三难困境](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) - 2021 年 10 月 1 日 – Arjun Bhuptani +- [集群:需信任链桥和信任最小化链桥如何塑造多链格局](https://blog.celestia.org/clusters/) - 2021 年 10 月 4 日 – Mustafa Al-Bassam +- [LI.FI:对于链桥,信任是一个谱系](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) - 2022 年 4 月 28 日 – Arjun Chand +- [Rollup 互操作性解决方案现状](https://web.archive.org/web/20250428015516/https://research.2077.xyz/the-state-of-rollup-interoperability) - 2024 年 6 月 20 日 – Alex Hook +- [利用共享安全实现安全的跨链互操作性:拉格朗日状态委员会及其他](https://web.archive.org/web/20250125035123/https://research.2077.xyz/harnessing-shared-security-for-secure-blockchain-interoperability) - 2024 年 6 月 12 日 – Emmanuel Awosika -此外,以下是 [James Prestwich](https://twitter.com/_prestwich) 的一些有颇有见解的讲解,可以帮助我们更深入地理解链桥: +此外,以下是 [James Prestwich](https://twitter.com/_prestwich) 的一些富有洞察力的演讲,可帮助您更深入地了解链桥: -- [构建链桥,而非构建有围墙的花园](https://youtu.be/ZQJWMiX4hT0) -- [破坏链桥](https://youtu.be/b0mC-ZqN8Oo) -- [为何链桥在销毁?](https://youtu.be/c7cm2kd20j8) +- [搭建桥梁,而非围墙花园](https://youtu.be/ZQJWMiX4hT0) +- [剖析链桥](https://youtu.be/b0mC-ZqN8Oo) +- [链桥为何在燃烧](https://youtu.be/c7cm2kd20j8) From 86a41a4e1c571820dd181fa38d3f2b55cbaa3608 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:32 -0800 Subject: [PATCH 106/581] update(i18n): public/content/translations/zh/guides/how-to-swap-tokens/index.md --- .../zh/guides/how-to-swap-tokens/index.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/public/content/translations/zh/guides/how-to-swap-tokens/index.md b/public/content/translations/zh/guides/how-to-swap-tokens/index.md index 5b3a16b0550..721d379a805 100644 --- a/public/content/translations/zh/guides/how-to-swap-tokens/index.md +++ b/public/content/translations/zh/guides/how-to-swap-tokens/index.md @@ -6,13 +6,13 @@ lang: zh # 如何兑换代币 -是否厌倦了寻找一个上架了所有你喜欢的代币的交易所? 在[去中心化交易所](/glossary/#dex),你可以兑换大多数代币。 +是否厌倦了寻找一个上架了所有你喜欢的代币的交易所? 你可以使用[去中心化交易所](/glossary/#dex)兑换大多数代币。 -代币兑换是指交换以太坊网络上存在的两种不同资产,例如用以太币兑换 DAI 币(一种 [ERC-20](/glossary/#erc-20) 代币)。 兑换过程非常快,也很便宜。 要进行代币兑换,你需要有一个加密货币钱包。 +代币兑换是指在以太坊网络上交换两种不同的资产,例如将 ETH 兑换成 DAI(一种 [ERC-20](/glossary/#erc-20) 代币)。 兑换过程非常快,也很便宜。 要进行代币兑换,你需要有一个加密货币钱包。 -**前期准备:** +**前提条件:** -- 要拥有[加密钱包](/glossary/#wallet),请参照这个教程:[如何“注册”以太坊帐户](/guides/how-to-create-an-ethereum-account/) +- 有一个[加密货币钱包](/glossary/#wallet);如果没有,可以按照本指南[创建一个以太坊帐户](/guides/how-to-create-an-ethereum-account/) - 把资金添加到你的钱包 ## 1. 把你的钱包连接到你选定的去中心化交易所 (DEX) @@ -20,34 +20,34 @@ lang: zh 一些受欢迎的交易所包括: - [Uniswap](https://app.uniswap.org/#/swap) -- [SushiSwap](https://www.sushi.com/swap) +- [Sushiswap](https://www.sushi.com/swap) - [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI) -- [Curve](https://curve.fi/#/ethereum/swap) +- [Curve](https://www.curve.finance/dex/ethereum/swap/) 有趣吗? 详细了解什么是[去中心化金融 (DeFi)](/defi/),以及这些新型交易所的运作方式。 ## 2. 选择你想兑换的代币交易对 -例如,以太币和 DAI 稳定币。 请确认你在这两种代币中拥有资金 ![兑换通用接口](./swap1.png) +例如,以太币和 DAI 稳定币。 请确认你在这两种代币中拥有资金 +![通用兑换界面](./swap1.png) ## 3. 输入你想要交易的代币数量,然后点击兑换 交易所将自动计算你可以兑换到多少代币。 -![兑换通用接口](./swap2.png) +![通用兑换界面](./swap2.png) ## 4. 确认交易 检查交易详细信息。 确认兑换率以及其他所有费用,以防止出现意外情况。 -![交易审核通用接口](./swap3.png) +![交易审核通用界面](./swap3.png) ## 5. 等待交易被处理 你可以在任何区块链浏览器上查看交易进度。 这一过程应该不会超过 10 分钟。 -一旦交易处理完毕,你的钱包将自动收到你兑换到的代币。 -
    +一旦交易处理完毕,你的钱包将自动收到你兑换到的代币。
    From 48eae153d313b5d00cdeb6af0ae05ed1256fa261 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:36 -0800 Subject: [PATCH 107/581] update(i18n): public/content/translations/zh/ethereum-forks/index.md --- .../translations/zh/ethereum-forks/index.md | 402 ++++++++++-------- 1 file changed, 230 insertions(+), 172 deletions(-) diff --git a/public/content/translations/zh/ethereum-forks/index.md b/public/content/translations/zh/ethereum-forks/index.md index af92dfc4b69..9a80e075a89 100644 --- a/public/content/translations/zh/ethereum-forks/index.md +++ b/public/content/translations/zh/ethereum-forks/index.md @@ -1,86 +1,144 @@ --- -title: 以太坊的历史和分叉 +title: 以太坊全部分叉时间线(2014 年至今) description: 以太坊区块链的历史,包括了主要的里程碑、版本发布和分叉。 lang: zh sidebarDepth: 1 --- -# 以太坊的历史 {#the-history-of-ethereum} +# 以太坊全部分叉时间线(2014 年至今){#the-history-of-ethereum} 所有主要里程碑、分叉和更新以太坊区块链的时间表 - + -分叉是指需要对网络进行重大技术升级或更改之时 – 它们通常源自[以太坊改进提案 (EIP)](/eips/) 并更改了以太坊协议的“规则”。 +分叉是需要对网络进行重大技术升级或更改时的变化——它们通常源自【以太坊改进建议(EIP)】(/eips/) ,并且更改以太坊协议的“规则”。 -当传统的中心化软件需要升级时,公司会为终端用户发布新版本。 因为没有中心化所有权,区块链以不同的方式运作。 [以太坊客户端](/developers/docs/nodes-and-clients/)必须更新他们的软件以执行新的分叉规则。 直链区块创造者(POW 中的矿工,POS 中的验证者)和节点必须创造区块和按照新规则进行验证。 [关于共识机制的更多信息](/developers/docs/consensus-mechanisms/) +当传统的中心化软件需要升级时,公司会为终端用户发布新版本。 因为没有中心化所有权,区块链以不同的方式运作。 【以太坊客户端】(/developers/docs/nodes-and-clients/) 必须升级他们的软件来执行新的分叉规则。 直链区块创造者(POW 中的矿工,POS 中的验证者)和节点必须创造区块和按照新规则进行验证。 [关于共识机制的更多信息](/developers/docs/consensus-mechanisms/) -这些规则更改可能会在网络中造成暂时的分叉。 新区块的产生,可以来自新规则,也可以来自旧规则。 分叉通常提前商定,以便让客户端能够采用 Unison 的升级,升级后的分叉链成为主链。 然而,在极少数情况下,对分叉的不同意见可能导致网络永久硬分叉 – 最为著名的是 DAO 分叉 产生了以太坊经典这一平台。 +这些规则更改可能会在网络中造成暂时的分裂。 新区块的产生,可以来自新规则,也可以来自旧规则。 分叉通常提前商定,以便让客户端能够采用 Unison 的升级,升级后的分叉链成为主链。 然而,在极少数情况下,对分叉的不同意见可能导致网络永久硬分叉 – 最为著名的是 DAO 分叉 产生了以太坊经典这一平台。 - + 以太坊的基础软件由两部分组成,称为 [执行层] (/glossary/#execution-layer) 和 [共识层](/glossary/#consensus-layer)。 **执行层升级命名** -从 2021 年开始,**执行层**的升级按时间顺序,以 [上一届以太坊开发者大会(Devcon)举办地点] (https://devcon.org/en/past-events/) 所在城市来命名: +自 2021 年起,**执行层**的升级按时间顺序根据[历届 Devcon 举办地点](https://devcon.org/en/past-events/)的城市名称命名: -| 升级名称 | 测试版年份 | 测试版编号 | 升级日期 | -| ------------ | ----------- | ------------- | ------------ | -| Berlin | 2015 年 | 0 | 2021 年 4 月 15 日 | -| London | 2016 年 | I | 2021 年 8 月 5 日 | -| Shangha | 2017 年 | II | 2023 年 4 月 12 日 | -| **Cancun** | 2018 年 | III | 2024 年 3 月 13 日 | -| _Prague_ | 2019 年 | IV | 待定 | -| _Osaka_ | 2020 年 | V | 待定 | -| _Bogota_ | 2022 年 | VI | 待定 | -| _Bangkok_ | 2024 年 | VII | 待定 | +| 升级名称 | Devcon 年份 | Devcon 届数 | 升级日期 | +| ------- | --------- | --------- | --------------- | +| 柏林 | 2014 年 | 0 | 2021 年 4 月 15 日 | +| 伦敦升级 | 2015 年 | I | 2021 年 8 月 5 日 | +| 上海升级 | 2016 年 | II | 2023 年 4 月 12 日 | +| 坎昆 | 2017 年 | III | 2024 年 3 月 13 日 | +| **布拉格** | 2018 | IV | 待定 - 下一个 | +| _大阪_ | 2019 年 | V | 待定 | +| _波哥大_ | 2022 年 | VI | 待定 | +| _曼谷_ | 2024 年 | VII | 待定 | **共识层升级命名** -从 [信标链] (/glossary/#beacon-chain) 启动开始,**共识层**的升级按字母顺序,以天体恒星来命名: +自[信标链](/glossary/#beacon-chain)启动以来,对**共识层**的升级是根据按字母顺序排列的首字母,以天体恒星命名的: -| 升级名称 | 升级日期 | -| ----------------------------------------------------------- | ------------ | -| 信标链创世块 | 2020 年 12 月 1 日 | -| [Altair](https://en.wikipedia.org/wiki/Altair) | 2021 年 10 月 27 日 | -| [Bellatrix](https://en.wikipedia.org/wiki/Bellatrix) | 2022 年 9 月 6 日 | -| [Capella](https://en.wikipedia.org/wiki/Capella) | 2023 年 4 月 12 日 | -| [**Deneb**](https://en.wikipedia.org/wiki/Deneb) | 2024 年 3 月 13 日 | -| [_Electra_]() | 待定 | +| 升级名称 | 升级日期 | +| ------------------------------------------------------------- | ---------------- | +| 信标链创世块 | 2020 年 12 月 1 日 | +| [Altair](https://en.wikipedia.org/wiki/Altair) | 2021 年 10 月 27 日 | +| [Bellatrix](https://en.wikipedia.org/wiki/Bellatrix) | 2022 年 9 月 6 日 | +| [Capella](https://en.wikipedia.org/wiki/Capella) | 2023 年 4 月 12 日 | +| [Deneb](https://en.wikipedia.org/wiki/Deneb) | 2024 年 3 月 13 日 | +| [**Electra**](https://en.wikipedia.org/wiki/Electra_\(star\)) | 待定 - 下一个 | +| [_Fulu_](https://en.wikipedia.org/wiki/Fulu_\(star\)) | 待定 | -**结合命名** +**组合命名** -执行层和共识层升级一开始于不同的时间段推出,然而在 2022 年的 [合并] (/roadmap/merge/) 以后,便开始同时部署。 因此,出现了一些非正式术语,即使用合并术语来简化这些升级的称呼。 这种方法始于常常被称为“**Shapella**”的 _Shanghai-Capella_ 升级,之后继续用于可能被称为“**Dencun**”的 _Cancun-Deneb_ 升级。 +执行层和共识层升级最初在不同时间推出,但在 2022 年[合并](/roadmap/merge/)之后,它们已同步部署。 因此,出现了一些非正式术语,即使用合并术语来简化这些升级的称呼。 这些简略化的升级术语从常常被称为“**Shapella**”的 _Shanghai-Capella_ 开始,之后就是被称为“**Dencun**”的 _Cancun-Deneb_ 以及被称为**Pectra**的 _Prague-Electra_ 。 -| 执行层升级 | 共识层升级 | 简称 | -| ----------------- | ----------------- | ---------- | -| Shanghai | Capella | |“Shapella” | -| Cancun | Deneb | “Dencun” | +| 执行层升级 | 共识层升级 | 简称 | +| ----- | ------- | ---------- | +| 上海升级 | 卡佩拉升级 | “Shapella” | +| 坎昆 | Deneb | “Dencun” | +| 布拉格 | Electra | "Pectra" | +| 大阪 | Fulu | “Fusaka” | -直接查阅有关一些特别重要的以往升级的信息:[信标链](/roadmap/beacon-chain/)、[合并](/roadmap/merge/)和 [EIP-1559](#london) +直接跳至有关一些特别重要的过往升级的信息:[信标链](/roadmap/beacon-chain/);[合并](/roadmap/merge/);以及 [EIP-1559](#london) -想了解未来的协议升级? [了解以太坊路线图上即将进行的升级](/roadmap/)。 +想了解未来的协议升级? [了解以太坊路线图上即将推出的升级](/roadmap/)。 -## 2024 年 {#2024} +## 2025 {#2025} -### Cancun-Deneb(“Dencun”)升级 {#dencun} +### Fulu-大阪(“Fusaka”)升级 {#fusaka} + + + +[关于 Fusaka 的更多信息](/roadmap/fusaka/) + +### 布拉格-Electra(“Pectra”)升级 {#pectra} + + + +Prague-Electra(“Pectra”)升级包括对以太坊协议的几项改进,旨在改善所有用户、二层网络、质押人和节点运营商的体验。 + +通过整合验证者账户,权益质押得到升级,得以使用执行提款地址增强对权益资金的控制。 EIP-7251 将单个验证者的最大有效余额增加到 2048,从而提高了质押人的资金效率。 EIP-7002 允许执行账户安全地触发验证者操作,包括提取全部或部分资金,从而改善 ETH 质押人的体验感,同时帮助加强节点运营商的责任感。 + +而在升级中其他部分的重点是改善普通用户的体验感。 EIP-7702 使常规非智能合约账户([EOA](/glossary/#eoa))能够执行类似于智能合约的代码。 这为传统的以太坊账户解锁了很多新功能,例如交易批处理、gas 赞助、可替代的身份验证方法、可用于编程的针对支出的控制方法、账户恢复机制等。 + + + +改善用户体验: + +
      +
    • EIP-7702 - 设置 EOA 帐户代码
    • +
    • EIP-7691 - 二进制大型对象吞吐量提高
    • +
    • EIP-7623 - 增加通话数据成本
    • +
    • EIP-7840 - 将针对二进制大型对象的计划添加到 EL 配置文件中
    • +
    + +改善质押体验感: + +
      +
    • EIP-7251 - 增加 MAX_EFFECTIVE_余额
    • +
    • EIP-7002 - 执行层面的人可自行选择退出
    • +
    • EIP-7685 - 一般请求
    • +
    • EIP-6110 - 提供链上验证者存款信息
    • +
    + +协议效率和安全性改进: + +
      +
    • EIP-2537 - 针对 BLS12-381 曲线操作进行预编译
    • +
    • EIP-2935 - 在状态栏中保存历史区块哈希值
    • +
    • EIP-7549 - 将委员会索引移出认证机制
    • +
    + +
    + +- [Pectra.wtf](https://pectra.wtf) +- [Pectra 将如何提升质押体验](https://www.kiln.fi/post/next-ethereum-upgrade-how-pectra-will-enhance-the-staking-experience) +- [阅读 Electra 升级规范](https://github.com/ethereum/consensus-specs/blob/dev/specs/electra/) +- [布拉格-Electra(“Pectra”)升级常见问题解答](/roadmap/pectra/) + + + +## 2024 {#2024} + +### 坎昆-Deneb(“Dencun”)升级 {#dencun} -#### Cancun 升级摘要 {#cancun-summary} +#### 坎昆升级总结 {#cancun-summary} -Cancun 升级包含了一系列对以太坊_执行层_的改进,旨在提高可扩展性,与 Deneb 共识层升级同时进行。 +坎昆升级包含一系列对以太坊_执行层_的改进,旨在与 Deneb 共识升级一起提高可扩展性。 -值得注意的是,该升级包含了 EIP-4844,也称为 **Proto-Danksharding**,它显著降低了二层网络卷叠的数据存储成本。 这是通过引入数据 “二进制大对象” 来实现的,使得卷叠可以在短时间内将数据发布到主网。 这显著降低了二层网络卷叠用户的交易费。 +值得注意的是,此升级包括 EIP-4844,即 **Proto-Danksharding**,它显著降低了二层网络卷叠的数据存储成本。 这是通过引入数据 “二进制大对象” 来实现的,使得卷叠可以在短时间内将数据发布到主网。 这显著降低了二层网络卷叠用户的交易费。 - +
    • EIP-1153 - 瞬态存储操作码
    • @@ -96,17 +154,17 @@ Cancun 升级包含了一系列对以太坊_执行层_的改进,旨在提高 - [二层网络卷叠](/layer-2/) - [Proto-Danksharding](/roadmap/scaling/#proto-danksharding) - [Danksharding](/roadmap/danksharding/) -- [阅读 Cancun 升级规范](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md) +- [阅读坎昆升级规范](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md) -#### Deneb 升级摘要 {#deneb-summary} +#### Deneb 升级总结 {#deneb-summary} Deneb 升级包含了一系列对以太坊_共识层_的改进,旨在提高可扩展性。 此次升级与 Cancun 执行层升级同时进行,以启用 Proto-Danksharding (EIP-4844),并对信标链进行了其他改进。 -预生成的已签名“自愿退出信息”不再过期,因此赋予用户更多控制权,使他们可以将资金委托给第三方节点运营商进行质押。 使用这种已签名的退出信息,质押者可以委托节点运营,同时保持随时安全退出并提取资金的能力,无需向任何人请求许可。 +预生成的已签名“自愿退出信息”不再过期,因此赋予用户更多控制权,使他们可以将资金委托给第三方节点运营商进行质押。 使用这种已签名的退出信息,质押人可以委托节点运营,同时保持随时安全退出并提取资金的能力,无需向任何人请求许可。 -EIP-7514 通过限制验证者加入网络的“流动”率至每个时代最多八 (8) 个,从而加强了以太币的发行控制。 由于以太币的发行量与质押的以太币总量成正比,限制加入的验证者数量可以控制新发行以太币的_增长率_,同时还降低了节点运营商的硬件需求,有助于去中心化。 +EIP-7514 通过限制验证者加入网络的“流动”率至每个时代最多八 (8) 个,从而加强了以太币的发行控制。 由于 ETH 发行量与质押的 ETH 总量成正比,因此限制加入的验证者数量可限制新发行的 ETH 的_增长率_,同时还可降低节点运营商的硬件要求,从而有助于去中心化。 - +
      • EIP-4788 - 以太坊虚拟机中的信标区块根
      • @@ -119,21 +177,21 @@ EIP-7514 通过限制验证者加入网络的“流动”率至每个时代最 - [阅读 Deneb 升级规范](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/) -- [Cancun-Deneb(“Dencun”)升级常见问题](/roadmap/dencun/) +- [坎昆-Deneb(“Dencun”)升级常见问题解答](/roadmap/dencun/) -## 2023 年 {#2023} +## 2023 {#2023} -### Shanghai-Capella(“Shapella”)升级 {#shapella} +### 上海-Capella(“Shapella”)升级 {#shapella} -#### Shanghai 升级摘要 {#shanghai-summary} +#### 上海升级总结 {#shanghai-summary} 上海升级将质押提款引入执行层。 上海升级与卡佩拉升级同时进行,使区块能够接受提款操作,因此质押人可以将以太币从信标链提取到执行层。 - +
        • EIP-3651启动 COINBASE 地址预热
        • @@ -147,7 +205,7 @@ EIP-7514 通过限制验证者加入网络的“流动”率至每个时代最 - [阅读上海升级规范](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md) -#### Capella 升级摘要 {#capella-summary} +#### Capella 升级总结 {#capella-summary} 卡佩拉升级是共识层(信标链)的第三次重大升级,实现了质押提款。 卡佩拉升级与执行层升级上海升级同时进行,启用了质押提款功能。 @@ -155,24 +213,24 @@ EIP-7514 通过限制验证者加入网络的“流动”率至每个时代最 该升级还提供了自动帐户扫描功能,可以持续处理验证者帐户的任何可用奖励支付或全额提款。 -- [有关质押提款的更多信息](/staking/withdrawals/)。 -- [阅读卡佩拉升级规范](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/) +- [关于质押提款的更多信息](/staking/withdrawals/). +- [阅读 Capella 升级规范](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/) -## 2022 年 {#2022} +## 2022 {#2022} -### 巴黎升级(合并) {#paris} +### 巴黎(合并){#paris} -#### 概览 {#paris-summary} +#### 总结 {#paris-summary} -巴黎升级是由于工作量证明区块链超过了[终端总难度](/glossary/#terminal-total-difficulty) 58750000000000000000000 而触发的。 这发生在 2022 年 9 月 15 日区块 15537393 上,并在下一个区块处触发了巴黎升级。 巴黎升级就是[合并](/roadmap/merge/)过渡,以太坊的主要功能结束了[工作量证明](/developers/docs/consensus-mechanisms/pow)挖矿算法及相关共识逻辑并启动了[权益证明](/developers/docs/consensus-mechanisms/pos)。 巴黎升级本身是对[执行客户端](/developers/docs/nodes-and-clients/#execution-clients)的升级(相当于共识层上的 Bellatrix 升级),让执行客户端能够从与其连接的[共识客户端](/developers/docs/nodes-and-clients/#consensus-clients)接受指令。 这需要激活一组新的内部应用程序接口方法,统称为[引擎应用程序接口](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)。 该升级可能是自[家园](#homestead)以来以太坊历史上最重要的升级! +巴黎升级由工作量证明区块链超过 58750000000000000000000 的[终端总难度](/glossary/#terminal-total-difficulty)触发。 这发生在 2022 年 9 月 15 日区块 15537393 上,并在下一个区块处触发了巴黎升级。 巴黎升级是[合并](/roadmap/merge/)过渡——其主要特点是关闭[工作量证明](/developers/docs/consensus-mechanisms/pow)挖矿算法和相关的共识逻辑,转而启用[权益证明](/developers/docs/consensus-mechanisms/pos)。 巴黎升级本身是对[执行客户端](/developers/docs/nodes-and-clients/#execution-clients)的升级(相当于共识层上的 Bellatrix 升级),使其能够从连接的[共识客户端](/developers/docs/nodes-and-clients/#consensus-clients)获取指令。 这需要激活一组新的内部 API 方法,统称为[引擎 API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md)。 这可以说是自[家园](#homestead)升级以来以太坊历史上最重要的升级! - [阅读巴黎升级规范](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md) - +
          • EIP-3675升级为权益证明共识
          • @@ -183,29 +241,29 @@ EIP-7514 通过限制验证者加入网络的“流动”率至每个时代最 --- -### Bellatrix 升级 {#bellatrix} +### Bellatrix {#bellatrix} -#### 摘要 {#bellatrix-summary} +#### 总结 {#bellatrix-summary} -Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级,让信标链为[合并](/roadmap/merge/)做好准备。 它将验证者由于怠惰及进行了可被罚没的行为而受到的惩罚提高到其全部价值。 Bellatrix 升级还包括对分叉选择规则的更新,让信标链为合并以及从最后一个工作量证明区块过渡到第一个权益证明区块做好准备。 这包括让共识客户端意识到[终端总难度](/glossary/#terminal-total-difficulty) 58750000000000000000000。 +Bellatrix 升级是为[信标链](/roadmap/beacon-chain)计划的第二次升级,为[合并](/roadmap/merge/)做准备。 它将验证者由于怠惰及进行了可被罚没的行为而受到的惩罚提高到其全部价值。 Bellatrix 升级还包括对分叉选择规则的更新,让信标链为合并以及从最后一个工作量证明区块过渡到第一个权益证明区块做好准备。 这包括让共识客户端知晓 58750000000000000000000 的[终端总难度](/glossary/#terminal-total-difficulty)。 - [阅读 Bellatrix 升级规范](https://github.com/ethereum/consensus-specs/tree/dev/specs/bellatrix) --- -### 灰色冰川升级 {#gray-glacier} +### 灰色冰川 {#gray-glacier} -#### 摘要 {#gray-glacier-summary} +#### 总结 {#gray-glacier-summary} -灰色冰川网络升级将[难度炸弹](/glossary/#difficulty-bomb)推迟了三个月。 这是此次升级中引入的唯一变更,本质上类似于[箭形冰川](#arrow-glacier)和[缪尔冰川](#muir-glacier)升级。 [拜占庭](#byzantium)、[君士坦丁堡](#constantinople)和[伦敦](#london)网络升级也做了类似的变更。 +灰色冰川网络升级将[难度炸弹](/glossary/#difficulty-bomb)推迟了三个月。 这是此次升级中引入的唯一变更,在性质上类似于[箭形冰川](#arrow-glacier)和[缪尔冰川](#muir-glacier)升级。 在[拜占庭](#byzantium)、[君士坦丁堡](#constantinople)和[伦敦](#london)网络升级中也进行了类似的更改。 -- [以太坊基金会博客 - 灰色冰川升级公告](https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/) +- [EF 博客 - 灰色冰川升级公告](https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/) - +
            • EIP-5133将难度炸弹推迟到 2022 年 9 月启动
            • @@ -215,20 +273,20 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, -## 2021 年 {#2021} +## 2021 {#2021} -### 箭形冰川升级 {#arrow-glacier} +### 箭形冰川 {#arrow-glacier} -#### 摘要 {#arrow-glacier-summary} +#### 总结 {#arrow-glacier-summary} -箭形冰川网络升级将[难度炸弹](/glossary/#difficulty-bomb)推迟了数月。 这是此次升级中引入的唯一变更,本质上类似于[缪尔冰川](#muir-glacier)升级。 [拜占庭](#byzantium)、[君士坦丁堡](#constantinople)和[伦敦](#london)网络升级也做了类似的更改。 +箭形冰川网络升级将[难度炸弹](/glossary/#difficulty-bomb)推迟了几个月。 这是此次升级中引入的唯一变更,在性质上类似于[缪尔冰川](#muir-glacier)升级。 在[拜占庭](#byzantium)、[君士坦丁堡](#constantinople)和[伦敦](#london)网络升级中也进行了类似的更改。 -- [以太坊基金会博客 - 箭形冰川升级公告](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/) -- [以太坊牧猫人组织 - 以太坊箭形冰川升级](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002) +- [EF 博客 - 箭形冰川升级公告](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/) +- [以太坊追猫人 - 以太坊箭形冰川升级](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002) - +
              • EIP-4345将难度炸弹推迟到 2022 年 6 月启动
              • @@ -238,51 +296,51 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, --- -### 天鹰座升级 {#altair} +### Altair {#altair} -#### 摘要 {#altair-summary} +#### 总结 {#altair-summary} -天鹰座升级是计划的第一次[信标链](/roadmap/beacon-chain)升级。 它增加了对“同步委员会”的支持—支持轻客户端,在向合并进展的过程中,增加了对验证者怠惰及可被罚没行为的惩罚。 +Altair 升级是为[信标链](/roadmap/beacon-chain)计划的第一次升级。 它增加了对“同步委员会”的支持—支持轻客户端,在向合并进展的过程中,增加了对验证者怠惰及可被罚没行为的惩罚。 -- [阅读天鹰座升级规范](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) +- [阅读 Altair 升级规范](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) -#### 有趣的事实! {#altair-fun-fact} +#### 趣闻! {#altair-fun-fact} 天鹰座升级是第一个有确切发布时间的重大网络升级。 之前的每一次升级均基于一个已经在工作量证明链上申报过的区块编号,而该链上的区块时间各不相同。 信标链不需要解析工作量证明,而是在一个基于时间、由 32 个 12 秒“时隙”组成的时段系统上运作。在这个系统上,验证者可以提出区块。 这就是为什么我们能准确知晓达到时段 74,240 以及天鹰座升级启动的时间! -- [出块时间](/developers/docs/blocks/#block-time) +- [区块时间](/developers/docs/blocks/#block-time) --- -### 伦敦升级 {#london} +### 伦敦 {#london} -#### 摘要 {#london-summary} +#### 总结 {#london-summary} -伦敦升级引入了 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559),对交易费市场进行了改革,同时还对燃料费的退款处理方式和[冰河世纪](/glossary/#ice-age)日程进行了修改。 +伦敦升级引入了 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559),它改革了交易费市场,并改变了燃料费退款的处理方式和[冰河时代](/glossary/#ice-age)的时间表。 #### 什么是 London 升级 / EIP-1559? {#eip-1559} 在 London 升级之前,以太坊有固定大小的区块。 在网络需求高峰期,这些区块满负荷运行。 因此,用户常常不得不等到需求量降低后才能将交易添加到区块中,这导致用户体验变差。 London 升级为以太坊引入了大小可变的区块。 -以太坊网络交易费的计算方式在 2021 年 8 月的 [London 升级](/ethereum-forks/#london)后发生了改变。 在 London 伦敦升级前,费用的计算没有区分 `base` 费用和 `priority` 费用,如下所示: +以太坊网络上交易费的计算方式随着 2021 年 8 月的[伦敦升级](/ethereum-forks/#london)而改变。 在伦敦升级之前,费用的计算没有区分`基本`费用和`优先`费用,如下所示: 假设 Alice 需要向 Bob 支付 1 个以太币。 在交易中,燃料限制为 21,000 单位,燃料的价格是 200 gwei。 -总费用为:`Gas units (limit) * Gas price per unit`,即 `21,000 * 200 = 4,200,000 gwei` 或 0.0042 个以太币。 +总费用应为:`燃料单位(上限)* 每单位燃料价格`,即 `21,000 * 200 = 4,200,000 gwei` 或 0.0042 ETH -在 London 升级中实施的 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 使交易费机制变得更加复杂,但提高了燃料费的可预测性,使交易费市场更加高效。 用户可以在提交交易时设定 `maxFeePerGas`(对应于他们愿意为执行交易支付多少费用)。他们清楚支付金额不会超过燃料的市场价格 (`baseFeePerGas`),并且多支付的金额将在减去小费后退还。 +在伦敦升级中实施 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 使交易费机制更加复杂,但使燃料费更可预测,从而使交易费市场更高效。 用户可以在提交交易时设定 `maxFeePerGas`(对应于他们愿意为执行交易支付多少费用)。他们清楚支付金额不会超过燃料的市场价格 (`baseFeePerGas`),并且多支付的金额将在减去小费后退还。 -这个视频对 EIP-1559 及其带来的好处进行了解释说明:[EIP-1559 说明](https://www.youtube.com/watch?v=MGemhK9t44Q) +此视频解释了 EIP-1559 及其带来的好处:[EIP-1559 解读](https://www.youtube.com/watch?v=MGemhK9t44Q) -- [你是去中心化应用程序的开发者吗? 请务必升级你的程序库和工具。](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md) -- [请阅读以太坊基金会公告](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) -- [请阅读以太坊牧猫人组织的解释说明](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) +- [你是去中心化应用程序开发者吗? 请务必升级您的库和工具。](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md) +- [阅读以太坊基金会公告](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) +- [阅读以太坊追猫人的解释](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) - +
                • EIP-1559改善交易费市场
                • @@ -296,18 +354,18 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, --- -### 柏林升级 {#berlin} +### 柏林 {#berlin} -#### 摘要 {#berlin-summary} +#### 总结 {#berlin-summary} 柏林升级优化了某些以太坊虚拟机操作的燃料成本,并增加了对多种交易类型的支持。 -- [请阅读以太坊基金会公告](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/) -- [请阅读以太坊牧猫人组织的解释说明](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80) +- [阅读以太坊基金会公告](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/) +- [阅读以太坊追猫人的解释](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80) - +
                  • EIP-2565降低了模幂运算的燃料费用
                  • @@ -320,17 +378,17 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, -## 2020 年 {#2020} +## 2020 {#2020} -### 信标链创世块 {#beacon-chain-genesis} +### 信标链创世 {#beacon-chain-genesis} -#### 摘要 {#beacon-chain-genesis-summary} +#### 总结 {#beacon-chain-genesis-summary} -[信标链](/roadmap/beacon-chain/)需要 16384 个存储了 32 个质押以太币的帐户,以确保安全上线。 这发生于 2020 年 11 月 27 日,意味着信标链在 2020 年 12 月 1 日开始生产区块。 这是实现[以太坊愿景](/roadmap/vision/)的第一步,十分重要。 +[信标链](/roadmap/beacon-chain/)需要 16384 笔 32 ETH 的质押存款才能安全上线。 这发生在 11 月 27 日,信标链于 2020 年 12 月 1 日开始生成区块。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/) 信标链 @@ -338,15 +396,15 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, --- -### 已部署质押存款合约 {#staking-deposit-contract} +### 质押存款合约已部署 {#staking-deposit-contract} -#### 摘要 {#deposit-contract-summary} +#### 总结 {#deposit-contract-summary} -质押存款合约将[质押](/glossary/#staking)引入以太坊生态系统。 虽然是一个[主网](/glossary/#mainnet)合约,但它直接影响到[信标链](/roadmap/beacon-chain/)的发布时间线,而后者是[以太坊升级](/roadmap/)的重要部分。 +质押存款合约将[质押](/glossary/#staking)引入以太坊生态系统。 虽然是[主网](/glossary/#mainnet)合约,但它直接影响了[信标链](/roadmap/beacon-chain/)(一项重要的[以太坊升级](/roadmap/))的发布时间线。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/) 质押 @@ -354,18 +412,18 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, --- -### 缪尔冰川升级 {#muir-glacier} +### 缪尔冰川 {#muir-glacier} -#### 摘要 {#muir-glacier-summary} +#### 总结 {#muir-glacier-summary} -缪尔冰川分叉使[难度炸弹](/glossary/#difficulty-bomb)延迟。 增加[工作量证明](/developers/docs/consensus-mechanisms/pow/)共识机制的区块难度可能会增加发送交易和使用去中心化应用程序的等待时间,从而降低以太坊的可用性。 +缪尔冰川分叉延迟了[难度炸弹](/glossary/#difficulty-bomb)。 [工作量证明](/developers/docs/consensus-mechanisms/pow/)共识机制中区块难度的增加,会延长发送交易和使用去中心化应用程序的等待时间,从而威胁到以太坊的可用性。 -- [请阅读以太坊基金会公告](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/) -- [请阅读以太坊牧猫人组织的解释说明](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210) +- [阅读以太坊基金会公告](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/) +- [阅读以太坊追猫人的解释](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210) - +
                    • EIP-2384将难度炸弹再推迟 4,000,000 个区块,大约是 611 天
                    • @@ -375,32 +433,32 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, -## 2019 年 {#2019} +## 2019 {#2019} -### 伊斯坦布尔分叉 {#istanbul} +### 伊斯坦布尔 {#istanbul} -#### 摘要 {#istanbul-summary} +#### 总结 {#istanbul-summary} 伊斯坦布尔分叉: -- 优化了[以太坊虚拟机](/developers/docs/ethereum-stack/#ethereum-virtual-machine)中特定操作的[燃料](/glossary/#gas)成本。 +- 优化了 [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine) 中某些操作的[燃料](/glossary/#gas)成本。 - 提高受到拒绝服务攻击后的复原能力。 -- 使基于“零知识简洁非交互式知识论证”和“零知识可扩容透明知识论证”的[二层网络扩容](/developers/docs/scaling/#layer-2-scaling)解决方案具有更佳的性能。 -- 使以太坊和 Zcash 能够互操作。 +- 使基于 SNARKs 和 STARKs 的[二层网络扩容](/developers/docs/scaling/#layer-2-scaling)方案性能更佳。 +- 使以太坊和 Zcash 能够互用。 - 让合约能够引入更多创造性功能。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) - +
                      • EIP-152允许以太坊与 Zcash 等受隐私保护的数字货币一起使用。
                      • -
                      • EIP-1108以更低廉的加密技术降低[燃料](/glossary/#gas)费用。
                      • -
                      • EIP-1344通过添加 CHAINID [操作码](/developers/docs/ethereum-stack/#ethereum-virtual-machine),保护以太坊免受重放攻击。
                      • +
                      • EIP-1108以更低便宜的加密技术降低 [gas](/glossary/#gas) 费用。
                      • +
                      • EIP-1344通过增加CHAINID [操作码](/developers/docs/ethereum-stack/#ethereum-virtual-machine),保护以太坊免受中继攻击。
                      • EIP-1884优化基于消耗量的操作码燃料价格。
                      • -
                      • EIP-2028降低了 CallData 的成本,从而允许更多数据储放入区块中 – 这对 [ 二层网络扩容](/developers/docs/scaling/#layer-2-scaling)很有帮助。
                      • +
                      • EIP-2028降低了 CallData 的成本,从而允许更多数据储放入区块中 – 这对[二层网络扩容](/developers/docs/scaling/#layer-2-scaling)很有帮助。
                      • EIP-2200其他操作码的燃料价格变更。
                      @@ -408,22 +466,22 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, --- -### 君士坦丁堡分叉 {#constantinople} +### 君士坦丁堡 {#constantinople} -#### 摘要 {#constantinople-summary} +#### 总结 {#constantinople-summary} 君士坦丁堡分叉: -- 将区块[挖矿](/developers/docs/consensus-mechanisms/pow/mining/)奖励从 3 个以太币减少到 2 个。 -- 确保在[实现权益证明](#beacon-chain-genesis)之前,区块链不会冻结。 -- 优化了[以太坊虚拟机](/developers/docs/ethereum-stack/#ethereum-virtual-machine)中特定操作的[燃料](/glossary/#gas)成本。 +- 将区块[挖矿](/developers/docs/consensus-mechanisms/pow/mining/)奖励从 3 ETH 降至 2 ETH。 +- 确保在[实施权益证明](#beacon-chain-genesis)之前区块链不会冻结。 +- 优化了 [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine) 中某些操作的[燃料](/glossary/#gas)成本。 - 添加了与尚未创建的地址进行交互的能力。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) - +
                      • EIP-145优化某些链上操作的费用。
                      • @@ -436,30 +494,30 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, -## 2017 年 {#2017} +## 2017 {#2017} -### 拜占庭升级 {#byzantium} +### 拜占庭 {#byzantium} -#### 摘要 {#byzantium-summary} +#### 总结 {#byzantium-summary} 拜占庭分叉: -- 将区块[挖矿](/developers/docs/consensus-mechanisms/pow/mining/)奖励从 5 个以太币减少到 3 个以太币。 -- 将[难度炸弹](/glossary/#difficulty-bomb)推迟一年。 +- 将区块[挖矿](/developers/docs/consensus-mechanisms/pow/mining/)奖励从 5 ETH 降至 3 ETH。 +- 将[难度炸弹](/glossary/#difficulty-bomb)延迟一年。 - 增加了调用其他合约而不更改状态的能力。 -- 增加了某些加密方法,以实现[二层网络扩容](/developers/docs/scaling/#layer-2-scaling)。 +- 添加了某些加密方法以支持[二层网络扩容](/developers/docs/scaling/#layer-2-scaling)。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/) - +
                        • EIP-140添加 REVERT 操作码。
                        • EIP-658在交易收据中添加状态字段,以指示成功或失败。
                        • -
                        • EIP-196增加了椭圆曲线和标量乘法以允许 [ZK-Snarks](/developers/docs/scaling/zk-rollups/)。
                        • -
                        • EIP-197增加了椭圆曲线和标量乘法以允许[零知识简洁非交互式知识论证](/developers/docs/scaling/zk-rollups/)。
                        • +
                        • EIP-196添加了椭圆曲线与标量乘法以允许 [ZK-Snarks](/developers/docs/scaling/zk-rollups/)。
                        • +
                        • EIP-197添加了椭圆曲线与标量乘法以允许 [ZK-Snarks](/developers/docs/scaling/zk-rollups/)。
                        • EIP-198启用 RSA 签名验证。
                        • EIP-211添加了对可变长度返回值的支持。
                        • EIP-214添加 STATICCALL 操作码,允许对其他合约进行非状态改变调用。
                        • @@ -471,13 +529,13 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, -## 2016 年 {#2016} +## 2016 {#2016} -### Spurious Dragon {#spurious-dragon} +### 伪龙 {#spurious-dragon} -#### 概览 {#spurious-dragon-summary} +#### 总结 {#spurious-dragon-summary} 伪龙分叉是对拒绝服务 (DoS) 网络攻击(2016 年 9 月/10 月)的第二个响应,包括: @@ -485,9 +543,9 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, - 启用区块链状态的“区块链减重”。 - 增加重放攻击保护。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) - +
                          • EIP-155防止在一条以太坊链上的交易被重复广播到另一条链,例如测试网交易在以太坊主链上重放。
                          • @@ -500,19 +558,19 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, --- -### 橘子口哨分叉 {#tangerine-whistle} +### 橘哨 {#tangerine-whistle} -#### 摘要 {#tangerine-whistle-summary} +#### 总结 {#tangerine-whistle-summary} 橘子口哨分叉是对拒绝服务 (DoS) 网络攻击(2016 年 9 月/10 月)的第一个响应,包括: - 解决与作价低估的操作代码有关的紧急网络健康问题。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) - +
                            • EIP-150增加可用于垃圾邮件攻击的操作码的燃料成本。
                            • @@ -523,33 +581,33 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, --- -### 去中心化自治组织分叉 {#dao-fork} +### DAO 分叉 {#dao-fork} -#### 摘要 {#dao-fork-summary} +#### 总结 {#dao-fork-summary} -去中心化自治组织分叉是为了回应 [2016 年去中心化自治组织遭受攻击的事件](https://www.coindesk.com/learn/understanding-the-dao-attack/)。当时,一份不安全的[去中心化自治组织](/glossary/#dao)合约导致黑客盗走了超过 360 万个以太币。 此分叉将资金从有问题的合约转移到一个[新合约](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754),新合约只有一个功能:提款。 任何损失了资金的人都可以在他们的钱包中提取以太币,每 100 个 DAO 代币 1 个以太币。 +DAO 分叉是为了应对 [2016 年的 DAO 攻击](https://www.coindesk.com/learn/understanding-the-dao-attack/)事件,当时一个不安全的 [DAO](/glossary/#dao) 合约因黑客攻击而流失了超过 360 万个 ETH。 该分叉将资金从有问题的合约转移到一个仅有提款功能的[新合约](https://eth.blockscout.com/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754)。 任何损失了资金的人都可以在他们的钱包中提取以太币,每 100 个 DAO 代币 1 个以太币。 -此操作是由以太坊社区投票决定的。 任何以太币持有人都能够通过在[投票平台](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/)上交易来进行投票。 分叉的决定获得了 85% 以上的投票。 +此操作是由以太坊社区投票决定的。 任何 ETH 持有者都可以通过在[一个投票平台](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/)上的交易进行投票。 分叉的决定获得了 85% 以上的票数。 -一些矿工拒绝分叉,因为那次 DAO 事件并不是协议中的缺陷。 他们之后组建了[以太坊经典](https://ethereumclassic.org/)。 +一些矿工拒绝分叉,因为那次 DAO 事件并不是协议中的缺陷。 他们后来成立了 [Ethereum Classic](https://ethereumclassic.org/)。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) --- -### 家园分叉 {#homestead} +### 家园 {#homestead} -#### 摘要 {#homestead-summary} +#### 总结 {#homestead-summary} 家园分叉展望未来, 包括若干协议修改和联网变更,使以太坊能够进一步进行网络升级。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2016/02/29/homestead-release/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2016/02/29/homestead-release/) - +
                              • EIP-2对合约创建过程进行编辑。
                              • @@ -561,34 +619,34 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, -## 2015 年 {#2015} +## 2015 {#2015} -### 边境解冻分叉 {#frontier-thawing} +### 前沿解冻 {#frontier-thawing} -#### 摘要 {#frontier-thawing-summary} +#### 总结 {#frontier-thawing-summary} -边境解冻分叉提高了每个[区块](/glossary/#block) 5,000 单位[燃料](/glossary/#gas)的限制,并将默认燃料价格设为 51 [gwei](/glossary/#gwei)。 这样便能进行交易 - 交易需要 21,000 单位燃料。 而引入[难度炸弹](/glossary/#difficulty-bomb)是为了确保未来硬分叉到[权益证明](/glossary/#pos)。 +前沿解冻分叉取消了每个[区块](/glossary/#block) 5,000 的[燃料](/glossary/#gas)限制,并将默认燃料价格设为 51 [gwei](/glossary/#gwei)。 这样便能进行交易 - 交易需要 21,000 单位燃料。 引入[难度炸弹](/glossary/#difficulty-bomb)是为了确保未来硬分叉到[权益证明](/glossary/#pos)。 -- [请阅读以太坊基金会公告](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) +- [阅读以太坊基金会公告](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) - [阅读以太坊协议更新 1](https://blog.ethereum.org/2015/08/04/ethereum-protocol-update-1/) --- -### 边境 {#frontier} +### 前沿 {#frontier} -#### 摘要 {#frontier-summary} +#### 总结 {#frontier-summary} -边境是以太坊最初的版本,但在上面能做的事情很少。 该版本在奥利匹克测试阶段成功完成之后推出。 它面向的是技术用户,特别是开发者。 [区块](/glossary/#block)有 5,000 单位的[燃料](/glossary/#gas)限制。 此“解冻”期使矿工能够开始操作,并使早期采用者能够有足够的时间来安装客户端。 +边境是以太坊最初的版本,但在上面能做的事情很少。 该版本在奥利匹克测试阶段成功完成之后推出。 它面向的是技术用户,特别是开发者。 [区块](/glossary/#block)的[燃料](/glossary/#gas)限制为 5,000。 此“解冻”期使矿工能够开始操作,并使早期采用者能够有足够的时间来安装客户端。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) -## 2014 年 {#2014} +## 2014 {#2014} ### 以太币销售 {#ether-sale} @@ -596,11 +654,11 @@ Bellatrix 升级是计划的第二次[信标链](/roadmap/beacon-chain)升级, 以太币的预售期为 42 天, 可以使用比特币进行购买。 -[请阅读以太坊基金会公告](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) +[阅读以太坊基金会公告](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) --- -### 黄皮书已发布 {#yellowpaper} +### 黄皮书发布 {#yellowpaper} @@ -610,9 +668,9 @@ Gavin Wood 博士撰写的黄皮书,关于以太坊协议的技术定义。 -## 2013 年 {#2013} +## 2013 {#2013} -### 白皮书已发布 {#whitepaper} +### 白皮书发布 {#whitepaper} From 33851316b548cea0740204f5855eac55b2736f0c Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:40 -0800 Subject: [PATCH 108/581] update(i18n): public/content/translations/zh/developers/tutorials/using-websockets/index.md --- .../tutorials/using-websockets/index.md | 82 +++++++++---------- 1 file changed, 39 insertions(+), 43 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/using-websockets/index.md b/public/content/translations/zh/developers/tutorials/using-websockets/index.md index dde8b59145d..f939771a348 100644 --- a/public/content/translations/zh/developers/tutorials/using-websockets/index.md +++ b/public/content/translations/zh/developers/tutorials/using-websockets/index.md @@ -3,20 +3,16 @@ title: 使用WebSocket description: 有关使用WebSocket和Alchemy进行JSON-RPC请求并订阅事件的指南。 author: "Elan Halpern" lang: zh -tags: - - "alchemy" - - "websocket" - - "querying" - - "javascript" +tags: [ "Alchemy", "websocket", "查询中", "javascript" ] skill: beginner source: Alchemy 文档 -sourceUrl: https://docs.alchemyapi.io/guides/using-websockets +sourceUrl: https://www.alchemy.com/docs/reference/best-practices-for-using-websockets-in-web3 published: 2020-12-01 --- 这是有关使用WebSocket和Alchemy向以太坊区块链发出请求的入门级指南。 -## WebSocket与HTTP {#websockets-vs-http} +## WebSockets 与 HTTP {#websockets-vs-http} 与HTTP不同的是,使用WebSocket,你无需要需要特定信息时持续进行请求。 WebSocket为你维护网络连接(如果操作正确)并侦听变化。 @@ -24,11 +20,11 @@ published: 2020-12-01 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview) 自动添加对 WebSocket 连接失败的处理并重试,无需进行配置。 -## 试试看 {#try-it-out} +## 试一试 {#try-it-out} -测试WebSocket最简单的方式是安装命令行工具来进行WebSocket请求,例如[wscat](https://github.com/websockets/wscat)。 使用wscat,你可以发送如下请求: +测试 WebSocket 最简单的方式是安装一个命令行工具来进行 WebSocket 请求,例如 [wscat](https://github.com/websockets/wscat)。 使用wscat,你可以发送如下请求: -_注意:如果你有Alchemy帐户,则可以将`demo`替换成自己的API密钥。 [点击此处注册免费 Alchemy 帐户!](https://auth.alchemyapi.io/signup)_ +_注意:如果你有 Alchemy 帐户,可以将 `demo` 替换为自己的 API 密钥。 [在此注册免费的 Alchemy 帐户!](https://auth.alchemy.com/signup)_ ``` wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo @@ -39,15 +35,15 @@ wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo ``` -## 如何使用WebSocket {#how-to-use-websockets} +## 如何使用 WebSockets {#how-to-use-websockets} -首先,使用应用的WebSocket URL打开WebSocket 你可以在[你的仪表板](https://dashboard.alchemyapi.io/)中打开应用的页面并点击“View Key”来找到你的应用的 WebSocket URL。 请注意,你的应用的 WebSocket URL 与其 HTTP 请求的 URL 不同,但两者都可以通过点击“View Key”找到。 +首先,使用应用的WebSocket URL打开WebSocket 你可以在[你的仪表板](https://dashboard.alchemy.com/)中打开应用的页面并点击“View Key”,即可找到应用的 WebSocket URL。 请注意,你的应用的 WebSocket URL 与其 HTTP 请求的 URL 不同,但两者都可以通过点击“View Key”找到。 -![在你的Alchemy仪表板中的何处可找到你的WebSocket URL](./use-websockets.gif) +![在你的 Alchemy 仪表板中查找 WebSocket URL 的位置](./use-websockets.gif) -[Alchemy API参考](https://docs.alchemyapi.io/documentation/alchemy-api-reference/)中列出的的任何API都可以通过WebSocket使用。 为此,请使用与HTTP POST请求正文相同的有效载荷,而不是通过WebSocket发送该有效负载。 +[Alchemy API 参考](https://www.alchemy.com/docs/reference/api-overview)中列出的任何 API 都可以通过 WebSocket 使用。 为此,请使用与HTTP POST请求正文相同的有效载荷,而不是通过WebSocket发送该有效负载。 -## 使用Web3 {#with-web3} +## 使用 Web3 {#with-web3} 在使用像Web3这样的客户端库时过渡到WebSocket是很简单的。 在实例化你的Web3客户端时,只需传递WebSocket URL而不是HTTP URL。 例如: @@ -59,11 +55,11 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893 ## 订阅 API {#subscription-api} -当通过WebSocket连接时,你可以使用两个额外的方法:`eth_subscribe`和`eth_unsubscribe`。 这些方法将允许你侦听特定事件并立即收到通知。 +通过 WebSocket 连接时,你可以使用两个额外的方法:`eth_subscribe` 和 `eth_unsubscribe`。 这些方法将允许你侦听特定事件并立即收到通知。 ### `eth_subscribe` {#eth-subscribe} -为指定的事件创建新的订阅。 [详细了解 `eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe)。 +为指定的事件创建新的订阅。 [了解有关 `eth_subscribe` 的更多信息](https://docs.alchemy.com/reference/eth-subscribe)。 #### 参数 {#parameters} @@ -72,27 +68,27 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893 第一个参数指定要侦听的事件类型。 第二个参数包含其他选项,具体取决于第一个参数。 不同的描述类型,其选项和事件有效载荷描述如下。 -#### 返回 {#returns} +#### 返回值 {#returns} -订阅 ID:此ID将附加到任何收到的事件 并且也可用于通过`eth_unsubscribe`取消订阅。 +订阅 ID:此 ID 将附加到所有收到的事件,也可用于通过 `eth_unsubscribe` 取消订阅。 #### 订阅事件 {#subscription-events} 当订阅处于活动状态时,你将收到包含以下字段的对象事件: -- `jsonrpc`:始终为“2.0” -- `method`:始终为“eth_subscription” -- `params`:具有以下字段的对象: - - `subscription`:由创建此订阅的 `eth_subscribe` 调用返回的订阅 ID。 - - `result`:其内容因订阅类型而异的对象。 +- `jsonrpc`:始终为 "2.0" +- `method`:始终为 "eth_subscription" +- `params`:一个包含以下字段的对象: + - `subscription`:创建此订阅的 `eth_subscribe` 调用所返回的订阅 ID。 + - `result`:一个对象,其内容因订阅类型而异。 #### 订阅类型 {#subscription-types} 1. `alchemy_newFullPendingTransactions` -返回被添加到待定状态的所有交易的交易信息。 此订阅类型订阅待处理交易,类似于标准 Web3 调用`web3.eth.subscribe("pendingTransactions")`,但不同之处是它触发_完整的交易信息_,而不只是交易哈希。 +返回被添加到待定状态的所有交易的交易信息。 此订阅类型可订阅待处理的交易,类似于标准 Web3 调用 `web3.eth.subscribe("pendingTransactions")`,但不同之处在于它会发出_完整的交易信息_,而不仅仅是交易哈希。 -示例: +例如: ```json > {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["alchemy_newFullPendingTransactions"]} @@ -129,7 +125,7 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893 发生链重组时,此订阅将触发一个事件,其中包含新链的所有新标头。 具体地说,这意味着你可能会看到多个高度相同的标头,当发生这种情况时,应该将后一个标头视为重组后的正确标头。 -示例: +例如: ```json > {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["newHeads"]} @@ -164,26 +160,26 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893 触发日志,这些日志是符合指定筛选条件的新添加区块的一部分。 -当发生链重组时,作为旧链上区块的一部分的日志将再次触发,并将属性`removed`设置为`true`。 此外,作为新链上区块的一部分的日志被触发,这意味着在重组的情况下可以多次看到同一交易的日志。 +当发生链重组时,属于旧链上区块的日志将再次发出,其 `removed` 属性会设置为 `true`。 此外,作为新链上区块的一部分的日志被触发,这意味着在重组的情况下可以多次看到同一交易的日志。 参数 1. 具有以下字段的对象: - - `address`(可选):表示地址的字符串或此类字符串的数组。 + - `address`(可选):一个表示地址的字符串,或由这类字符串组成的数组。 - 只会触发从这些地址之一创建的日志。 - - `topics`:主题说明符的数组。 - - 每个主题说明符都是`null`、表示主题的字符串或字符串数组。 - - 数组中非`null`的每个位置将触发的日志仅限制为在该位置具有给定主题之一的那些位置。 + - `topics`:主题说明符数组。 + - 每个主题说明符可以是 `null`、代表一个主题的字符串,或一个字符串数组。 + - 数组中每个非 `null` 的位置都会限制所发出的日志,只包含在相应位置上拥有给定主题之一的日志。 主题规范的一些示例: -- `[]`:任何允许的主题。 -- `[A]`: A位置第一个位置(以及后面任何位置)。 -- `[null, B]`:任何内容位置第一个位置的,B位于第二个位置(以及后面任何位置)。 -- `[A, B]`:A位于第一个位置的,B位于第二个位置(以及后面任何位置)。 -- `[[A、B]、[A、B]]`:(A或B)位于第一个位置,(A或B)位于第二个位置(以及后面任何位置)。 +- `[]`:允许任何主题。 +- `[A]`:A 在第一个位置(以及之后的任何内容)。 +- `[null, B]`:第一个位置为任何内容,第二个位置为 B(以及之后的任何内容)。 +- `[A, B]`:A 在第一个位置,B 在第二个位置(以及之后的任何内容)。 +- `[[A, B], [A, B]]`:第一个位置为(A 或 B),第二个位置为(A 或 B)(以及之后的任何内容)。 -示例: +例如: ```json > {"jsonrpc": "2.0", "id": 1, "method": "eth_subscribe", "params": ["logs", {"address": "0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", "topics": ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]} @@ -215,13 +211,13 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893 参数 -1. 先前从`eth_comment`调用返回的订阅ID。 +1. 订阅 ID,即先前从 `eth_subscribe` 调用返回的 ID。 -返回 +返回值 -如果订阅成功取消则为`true`,或者,如果没有具有给定ID的订阅,则为`false`。 +如果订阅成功取消,则为 `true`;如果不存在具有给定 ID 的订阅,则为 `false`。 -示例: +例如: **请求** @@ -246,4 +242,4 @@ curl https://eth-mainnet.alchemyapi.io/v2/your-api-key --- -免费[注册 Alchemy](https://auth.alchemyapi.io/signup),查看我们的[相关文档](https://docs.alchemyapi.io/),并关注我们的 [Twitter](https://twitter.com/AlchemyPlatform) 了解最新消息。 +免费[注册 Alchemy](https://auth.alchemy.com),查看[我们的文档](https://www.alchemy.com/docs/),并在 [Twitter](https://x.com/AlchemyPlatform) 上关注我们以获取最新消息。 From 7fd256eef570301dd7225c8edd79d9e4dc085c58 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:43 -0800 Subject: [PATCH 109/581] update(i18n): public/content/translations/zh/roadmap/fusaka/index.md --- .../translations/zh/roadmap/fusaka/index.md | 300 ++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 public/content/translations/zh/roadmap/fusaka/index.md diff --git a/public/content/translations/zh/roadmap/fusaka/index.md b/public/content/translations/zh/roadmap/fusaka/index.md new file mode 100644 index 00000000000..ab4e45dfd48 --- /dev/null +++ b/public/content/translations/zh/roadmap/fusaka/index.md @@ -0,0 +1,300 @@ +--- +title: Fulu-Osaka (Fusaka) +description: 了解 Fusaka 协议升级 +lang: zh +--- + +# Fusaka {#fusaka} + +**备受期待的以太坊 Fusaka 升级已于 2025 年 12 月 3 日上线** + +Fusaka 网络升级将在 [Pectra](/roadmap/pectra/) 升级后进行,将引入更多新功能并改进每位以太坊用户和开发者的体验。 该名称由执行层升级 Osaka 和以 Fulu 星命名的共识层版本组成。 以太坊的两个部分均获得升级,推动以太坊的扩容、安全性和用户体验迈向未来。 + + + + +Fusaka 升级只是以太坊长期发展目标中的其中一环。 了解有关[协议路线图](/roadmap/)和[以往升级](/ethereum-forks/)的更多信息。 + + + + +## Fusaka 的改进 {#improvements-in-fusaka} + +### 扩容 blob {#scale-blobs} + +#### 点对点数据可用性采样 (PeerDAS) {#peerdas} + +这是 Fusaka 分叉的_重头戏_,是本次升级中添加的主要功能。 二层网络目前将数据以 blob 形式发布到以太坊,blob 是专为二层网络创建的临时数据类型1. 在 Fusaka 之前,每个全节点都必须存储每个 blob 来确保数据存在。 由于 blob 吞吐量的增加,必须下载所有这些数据变得资源密集且难以维持。 + +通过[数据可用性采样](https://notes.ethereum.org/@fradamt/das-fork-choice),每个节点不再必须存储所有 blob 数据,而是只负责 blob 数据的一个子集。 blob 均匀随机地分布在网络上的所有节点,每个全节点只需保存八分之一的数据,因此理论上能够实现八倍的扩容。 为确保数据可用性,任何数据片段均可通过现有数据的 50% 进行重建,所采用的方法能将数据错误或缺失概率降至密码学意义上可忽略的水平(约 1020 分之一到 1024 分之一)。 + +这在保持节点的硬件和带宽要求稳定的同时,实现了 blob 扩容,从而实现二层网络扩容并降低其费用。 + +[深入了解 PeerDAS](/roadmap/fusaka/peerdas/) + +**资源**: + +- [EIP-7594 技术规范](https://eips.ethereum.org/EIPS/eip-7594) +- [DappLion 谈 PeerDAS:当今以太坊的扩容之道 | ETHSofia 2024](https://youtu.be/bONWd1x2TjQ?t=328) +- [学术:以太坊 PeerDAS 文档 (PDF)](https://eprint.iacr.org/2024/1362.pdf) + +#### 仅 Blob 参数分叉 {#blob-parameter-only-forks} + +二层网络扩容以太坊——由于这些网络的增长,他们需要将更多数据发布到以太坊。 这意味着随着时间推移,以太坊将需要提高可用的 blob 数量。 尽管 PeerDAS 实现了 blob 数据的扩容,但这仍需要逐步安全地完成。 + +由于以太坊是在数千个独立节点上运行的代码,这些节点需要就相同的规则达成一致,因此我们不能像部署网站更新那样,简单地引入增加 blob 数量之类的更改。 任何规则的变更都必须是一次协调后的升级,其中每个节点、客户端和验证者软件都必须在同一个预定区块之前进行升级。 + +这些协调后的升级通常包括许多更改,需要许多测试并会花费许多时间。 为了更改适应二层网络不断变化的 blob 需求,blob 参数分叉引入一种机制来增加 blob 数量,而无需等待升级流程。 + +Blob 参数分叉能够由客户端进行设置,与 gas 限制等其他配置类似。 在以太坊主要升级之间,客户端可以同意增加`目标`和`最大` blob 数量,如 9 个和 12 个,随后节点运营者将更新以参与该小型分叉。 Blob 参数分叉可以随时进行配置。 + +在 Dencun 升级中首次向网络添加 blob 时,目标数量是 3。 在 Pectra 升级中,该数量增加到 6。在 Fusaka 升级之后,现在可以独立于这些主要网络升级,以可持续的速度增加该数量。 + +![图表显示每个区块的平均 blob 数量以及随着升级而增加的目标](./average-blob-count-per-block.webp) + +图表来源:[Ethereum Blobs - @hildobby, Dune Analytics](https://dune.com/hildobby/blobs) + +**资源**:[EIP-7892 技术规范](https://eips.ethereum.org/EIPS/eip-7892) + +#### Blob 基本费用受到执行成本限制 {#blob-base-fee-bounded-by-execution-costs} + +二层网络在发布数据时支付两笔费用:blob 费用和用于验证这些 blob 的执行 gas。 如果执行 gas 占主导地位,blob 费用拍卖可能会下降到 1 wei,并不再作为价格信号。 + +EIP-7918 为每个 blob 设定了一个比例底价。 当储备金高于名义 blob 基本费用时,费用调整算法会将该区块视为超出目标,并停止压低费用,允许其正常上涨。 因此: + +- blob 费用市场始终对拥塞作出反应 +- 二层网络至少要为它们强加给节点的计算支付一部分有意义的费用 +- 执行层基本费用飙升不再会导致 blob 费用停留在 1 wei + +**资源**: + +- [EIP-7918 技术规范](https://eips.ethereum.org/EIPS/eip-7918) +- [故事书解说](https://notes.ethereum.org/@anderselowsson/AIG) + +### 扩容 L1 {#scale-l1} + +#### 历史记录到期和更简单的收据 {#history-expiry} + +2025 年 7 月,以太坊执行客户端 [开始支持部分历史记录到期](https://blog.ethereum.org/2025/07/08/partial-history-exp)。 此举删除了比[合并](https://ethereum.org/roadmap/merge/)更早的历史记录,以便在以太坊不断增长的同时,减少节点运营者所需的磁盘空间。 + +该 EIP 位于“核心 EIP”之外的章节,因为该分叉实际上并未实现任何更改——它只是一个通知,即客户端团队必须在 Fusaka 升级前支持历史记录到期。 实际上,客户端可以随时实现这一点,但将其添加到升级中,可将其明确地列入待办事项列表,并使他们能够结合此功能测试 Fusaka 的更改。 + +**资源**:[EIP-7642 技术规范](https://eips.ethereum.org/EIPS/eip-7642) + +#### 为MODEXP设置上限{#set-upper-bounds-for-modexp} + +直到现在,MODEXP预编译合约几乎可以接受任意大小的数字。 这使其难以测试、易被滥用,并为客户端稳定性带来风险。 EIP-7823规定了明确的限制:每个输入数字最多为8192位(1024 字节)。 超过这个限制的输入会被拒绝,交易消耗的Gas会被燃烧掉,且不会产生任何状态变化。 这一限制完全满足现实世界的需求,同时排除了那些极端情况,这些极端情况曾让Gas限额计划和安全审查变得复杂。 这一改动在不影响用户或开发者体验的前提下,提升了安全性并增强了DoS保护。 + +**资源**:[EIP-7823 技术规范](https://eips.ethereum.org/EIPS/eip-7823) + +#### 交易Gas上限{#transaction-gas-limit-cap} + +EIP-[7825](https://eips.ethereum.org/EIPS/eip-7825)为每笔交易增加了 16,777,216(2²⁴)Gas 的上限。 这是主动的DoS防御措施,在提升区块gas上限的同时,依然通过限定单笔交易最坏情况成本来进行约束。 它使得节点的验证和传播更容易建模,从而让我们能够通过提高gas上限来应对扩容问题。 + +为什么正好是2^24gas? 它比当前的区块gas上限要小得多,但足够支持真实合约部署和复杂的预编译操作,而且作为2的幂,便于在各客户端中实现。 这个新的最大交易大小与 Pectra 升级前的平均区块大小类似,因此对于以太坊上的任何操作来说,这是一个合理的限制。 + +**资源**:[EIP-7825 技术规范](https://eips.ethereum.org/EIPS/eip-7825) + +#### `MODEXP` 燃料成本增加 {#modexp-gas-cost-increase} + +MODEXP是一个预编译的内置函数,用于计算模指数运算,这是一种大数运算,常用于 RSA 签名验证和证明系统。 它允许智能合约直接执行这些计算,而无需自己去实现运算逻辑。 + +开发者和客户端团队认为,MODEXP是提高区块gas上限的主要障碍,因为当前的gas定价常常低估了某些输入所需的计算量。 这意味着一次使用MODEXP的交易可能会占用处理整个区块所需的大部分时间,从而导致网络变慢。 + +此 EIP 通过以下方式更改定价以匹配实际计算成本: + +- 将最低费用从200gas提高到500gas,并在一般费用计算中取消EIP-2565提出的三分之一折扣 +- 当指数输入很长时,成本会急剧增加。 如果指数(即作为第二个参数传递的“幂”数)长于32字节/256 位,则每个额外增加的字节其gas费用上升得更快 +- 对较大的底数或模数也会额外收费。 另外两个数字(底数和模数)假设至少为 32 字节——如果其中任何一个更大,费用会按其大小成比例增加 + +通过将费用更准确地与实际处理时间匹配,MODEXP不再会导致区块验证时间过长。 这一改动是多项措施之一,旨在为未来安全地提高以太坊区块gas上限铺平道路。 + +**资源**:[EIP-7883 技术规范](https://eips.ethereum.org/EIPS/eip-7883) + +#### 递归长度前缀 (RLP) 执行区块大小限制 {#rlp-execution-block-size-limit} + +这为区块大小设定了上限——这是对通过网络_发送_的内容的限制,与燃料限制不同,后者限制的是区块内的_工作量_。 区块大小上限为 10 MiB,并为共识数据保留了少量余量 (2 MiB),以便所有内容都能干净利落地适配和传播。 如果出现的区块大于该值,客户端将拒绝它。 +这是必要的,因为非常大的区块需要更长的时间在网络中传播和验证,并可能产生共识问题或被滥用为 DoS 攻击媒介。 此外,共识层的 gossip 协议已经不会转发超过约 10 MiB 的区块,因此将执行层与该限制对齐,可以避免出现“一些节点看到,另一些节点丢弃”的奇怪情况。 + +细节:这是对 [RLP](/developers/docs/data-structures-and-encoding/rlp/) 编码的执行区块大小的限制。 总共 10 MiB,为信标区块框架保留了 2 MiB 的安全余量。 实际上,客户端定义 + +`MAX_BLOCK_SIZE = 10,485,760` 字节和 + +`SAFETY_MARGIN = 2,097,152` 字节, + +并拒绝 RLP 有效负载超过以下限制的任何执行区块 + +`MAX_RLP_BLOCK_SIZE = MAX_BLOCK_SIZE − SAFETY_MARGIN` + +其目标是限制最坏情况下的传播/验证时间,并与共识层 gossip 行为保持一致,从而在不改变燃料记账的前提下,降低重组/DoS 攻击风险。 + +**资源**:[EIP-7934 技术规范](https://eips.ethereum.org/EIPS/eip-7934) + +#### 将默认燃料限制设置为 6000 万 {#set-default-gas-limit-to-60-million} + +在2025年2月将 gas 上限从30M 提高到36M(随后又提升至 45M)之前,这个数值自合并(2022 年 9 月)以来一直未曾改变。 该EIP旨在将持续扩容作为优先事项。 + +EIP-7935提案协调执行层EL客户端团队,在Fusaka升级中将默认gas上限提高到当前45M以上。 这是一个信息类提案EIP,但它明确要求客户端在开发网络devnets上测试更高的上限,测试出一个安全值,并在其Fusaka版本中发布该数值。 + +开发网Devnet的规划目标是约60M的压力测试(使用合成负载填满区块)并进行逐步提升;研究表明,即使在极端情况下,真正的风险阈值在150M左右。 推出时应与交易gas上限限制(EIP-7825)配合测试,这样即使整体上限提高,也不会出现单笔交易占据主导的情况。 + +**资源**:[EIP-7935 技术规范](https://eips.ethereum.org/EIPS/eip-7935) + +### 改善用户体验 {#improve-ux} + +#### 确定性区块提议者预览{#deterministic-proposer-lookahead} + +通过 EIP-7917,信标链将能够知道下一个时隙的区块提议者。 明确知道将要提议区块的验证者能够带来[预确定性](https://ethresear.ch/t/based-preconfirmations/17353)——与即将到来的提议者达成承诺以确保用户交易将被包含在其区块中,而无需等待实际的区块。 + +此功能有利于客户端实现和网络安全,因为它避免了验证者操纵提议者流程的边界情况。 预览机制还能降低实现的复杂度。 + +**资源**:[EIP-7917 技术规范](https://eips.ethereum.org/EIPS/eip-7917) + +#### 计数前导零 (CLZ) 操作码 {#count-leading-zeros-opcode} + +该功能添加了一个小型 EVM 指令,**计算前导零 (CLZ)**。 EVM 中的几乎所有内容都表示为 256 位值——这个新操作码返回前面有多少个零位。 这是许多指令集架构都具有的普通功能,因为它实现了更高效的算术运算。 实际上,这会把当前手工实现的逐位扫描bit scan合并为一步操作,通过找到第一个置位first set bit,扫描字节或解析位字段bitfields都变得更简单、更节省。 这个操作码消耗低、费用固定,并且经过基准测试,其性能与基本的加法操作相当。这样可以减少字节码长度,同时在完成相同工作的情况下节省gas。 + +**资源**:[EIP-7939 技术规范](https://eips.ethereum.org/EIPS/eip-7939) + +#### 用于支持 secp256r1 曲线的预编译 {#secp256r1-precompile} + +在固定地址 `0x100` 处引入一个内置的、通行密钥风格的 secp256r1 (P-256) 签名检查器,使用许多 L2 已经采用的相同调用格式并修复边缘情况,以便为这些环境编写的合约可以在 L1 上运行而无需更改。 + +用户体验升级! 对于用户来说,这解锁了设备原生签名和通行密钥。 钱包可以直接利用 Apple Secure Enclave、Android 密钥库、硬件安全模块 (HSM) 和 FIDO2/WebAuthn——无需助记词,入门更顺畅,多重身份验证流程感觉就像现代应用程序一样。 这带来了更好的用户体验、更轻松的恢复以及与数十亿台设备已有的模式相匹配的账户抽象模式。 + +对于开发者来说,它接受 160 字节的输入并返回 32 字节的输出,从而可以轻松移植现有库和 L2 合约。 在底层,它包括无限远点和模比较检查,以消除棘手的边缘情况,而不会破坏有效的调用者。 + +**资源**: + +- [EIP-7951 技术规范](https://eips.ethereum.org/EIPS/eip-7951) +- [关于 RIP-7212 的更多信息](https://www.alchemy.com/blog/what-is-rip-7212) _(请注意,EIP-7951 取代了 RIP-7212)_ + +### 元数据 {#meta} + +#### `eth_config` JSON-RPC 方法 {#eth-config} + +这是一个 JSON-RPC 调用,允许您询问节点正在运行什么分叉设置。 它返回三个快照:`current`、`next` 和 `last`,以便验证者和监控工具可以验证客户端是否为即将到来的分叉做好准备。 + +实际上,这是为了解决在 2025 年初 Pectra 分叉在 Holesky 测试网上线时发现的一个缺陷,当时轻微的配置错误导致了非最终确定状态。 这有助于测试团队和开发者确保主要分叉在从开发网迁移到测试网,以及从测试网迁移到主网时,能够按预期运行。 + +快照包括:`chainId`、`forkId`、计划的分叉激活时间、哪些预编译是活动的、预编译地址、系统合约依赖项以及分叉的 blob 时间表。 + +该 EIP 位于“核心 EIP”之外的章节,因为该分叉实际上并未实现任何更改——它只是一个通知,即客户端团队必须在 Fusaka 升级前实现此 JSON-RPC 方法。 + +**资源**:[EIP-7910 技术规范](https://eips.ethereum.org/EIPS/eip-7910) + +## 常见问题 {#faq} + +### 这次升级会影响所有以太坊节点和验证者吗? {#does-this-upgrade-affect-all-ethereum-nodes-and-validators} + +是的,Fusaka 升级需要同时更新[执行客户端和共识客户端](/developers/docs/nodes-and-clients/)。 所有主要以太坊客户端都将发布支持硬分叉的版本,并将其列为优先级。 你可以通过以下途径了解这些客户端版本的发布时间:客户端的GitHub库、它们的[Discord 频道](https://ethstaker.org/support)、[EthStaker Discord](https://dsc.gg/ethstaker),或者订阅以太坊博客以获取协议更新。 为了在升级后与以太坊网络保持同步,节点运营者必须确保正在运行支持的客户端版本。 请注意,关于客户端发布的信息具有时效性,用户应参考最新更新以获取最新详情。 + +### 硬分叉后如何转换以太币? {#how-can-eth-be-converted-after-the-hardfork} + +- **不需要对你的 ETH 进行任何操作**:在以太坊 Fusaka 升级之后,无需转换或升级你的 ETH。 硬分叉后,你的帐户余额不会改变,你目前持有的以太币仍将以其现有的形式保持可用。 +- **当心诈骗!** **任何引导你对以太币进行“升级”的人都是骗子**。你不需要进行任何与此升级有关的操作。 你的资产不会受到任何影响。 请记住,随时了解动态是防御诈骗的最佳手段。 + +[更多关于识别和规避诈骗的信息](/security/) + +### 为什么要用斑马? {#whats-with-the-zebras} + +斑马是开发者为 Fusaka 选择的“吉祥物”,因为它的条纹反映了 PeerDAS 基于列的数据可用性采样,其中节点保管某些列子网,并从每个对等点时隙中采样其他一些列,以检查 blob 数据是否可用。 + +2022 年的合并[使用熊猫](https://x.com/hwwonx/status/1431970802040127498)作为吉祥物,以表示执行层和共识层的合并。 从那时起,每个分叉都非正式地选择了吉祥物,并在升级时以 ASCII 艺术的形式出现在客户端日志中。 这只是一种有趣的庆祝方式。 + +### L2 扩容方面有哪些改进? {#what-improvements-are-included-for-l2-scaling} + +[PeerDAS](/roadmap/fusaka/peerdas) 是该分叉的主要功能。 它实现了数据可用性采样 (DAS),为 rollup 解锁了更大的可扩展性,理论上可将 blob 空间扩展到当前大小的 8 倍。 Blob 费用市场也将得到改进,以有效应对拥堵,并保证 L2 为 blob 对节点造成的计算和空间支付有意义的费用。 + +### BPO 分叉有何不同? {#how-are-bpo-forks-different} + +仅 Blob 参数分叉提供了一种机制,可以在 PeerDAS 激活后持续增加 blob 数量(目标和最大值),而无需等待完全协调的升级。 每次增加都被硬编码为在支持 Fusaka 的客户端版本中预先配置。 + +作为用户或验证者,您无需为每个 BPO 更新客户端,只需确保关注像 Fusaka 这样的主要硬分叉即可。 这与以前的做法相同,不需要采取特殊操作。仍然建议在升级和 BPO 期间监控您的客户端,并在主要版本之间也保持更新,因为修复或优化可能会跟随硬分叉。 + +### BPO 的时间表是怎样的? {#what-is-the-bpo-schedule} + +BPO 更新的确切时间表将随 Fusaka 的发布而确定。 关注[协议公告](https://blog.ethereum.org/category/protocol)和您的客户端的发布说明。 + +它可能看起来像这样: + +- Fusaka 之前:目标 6,最大 9 +- Fusaka 激活时:目标 6,最大 9 +- BPO1,Fusaka 激活后几周:目标 10,最大 15,增加三分之二 +- BPO2,BPO1 之后几周:目标 14,最大 21 + +### 这会降低以太坊(一层网络)上的费用吗?{#will-this-lower-gas} + +这次升级不会降低一层网络的燃料费用,至少不会直接降低。 主要重点是为 rollup 数据提供更多的 blob 空间,从而降低二层网络上的费用。 这可能对一层网络的费用市场产生一些副作用,但预计不会有重大变化。 + +### 作为质押者,我需要为这次升级做什么? {#as-a-staker-what-do-i-need-to-do-for-the-upgrade} + +与每次网络升级一样,请确保将您的客户端更新到支持 Fusaka 的最新版本。 关注邮件列表和 [EF 博客上的协议公告](https://blog.ethereum.org/category/protocol)以获取有关版本发布的信息。 +在 Fusaka 在主网上激活之前,您可以在测试网上运行验证者来验证您的设置。 Fusaka [在测试网上激活得更早](https://blog.ethereum.org/2025/09/26/fusaka-testnet-announcement),为您提供更多空间以确保一切正常并报告错误。 测试网分叉也会在邮件列表和博客中公布。 + +### “确定性提议者前瞻”(EIP-7917) 是否会影响验证者? {#does-7917-affect-validators} + +此更改不会改变您的验证者客户端的功能,但是,它将让您更深入地了解您未来的验证者职责。 请务必更新您的监控工具以跟上新功能。 + +### Fusaka 对节点和验证者的带宽要求有何影响? {#how-does-fusaka-affect-bandwidth-requirements-for-nodes-and-validators} + +PeerDAS 对节点传输 blob 数据的方式做出了重大改变。 所有数据都被分成称为列的片段,分布在 128 个子网上,节点只订阅其中一部分。 节点必须保管的子网列数量取决于其配置和连接的验证者数量。 实际的带宽要求将取决于网络中允许的 blob 数量和节点类型。 在 Fusaka 激活时,blob 目标与之前保持相同,但有了 PeerDAS,节点运营者可以看到他们的 blob 磁盘使用量和网络流量有所减少。 随着 BPO 在网络中配置更高的 blob 数量,必要的带宽将随每个 BPO 而增加。 + +即使在 Fusaka BPO 之后,节点要求仍在[建议的范围](https://eips.ethereum.org/EIPS/eip-7870)内。 + +#### 全节点 {#full-nodes} + +没有任何验证者的常规节点将只订阅 4 个子网,为原始数据的 1/8 提供保管。 这意味着在 blob 数据量相同的情况下,下载它们的节点带宽将减少八分之一 (8)。 普通全节点的磁盘使用量和 blob 下载带宽可能会减少约 80%,仅为几 Mb。 + +#### 独立质押者 {#solo-stakers} + +如果该节点用于验证者客户端,它就必须保管更多的列,因此需要处理更多的数据。 添加验证者后,节点至少订阅 8 个列子网,因此处理的数据是常规节点的两倍,但仍比 Fusaka 之前少。 如果验证者余额超过 287 ETH,将订阅越来越多的子网。 + +对于独立质押者来说,这意味着他们的磁盘使用量和下载带宽将减少约 50%。 然而,要在本地构建区块并将所有 blob 上传到网络,需要更高的上传带宽。 在 Fusaka 升级时,本地构建者将需要比以前高 2-3 倍的上行带宽。随着 BPO2 的目标 blob 数量达到 15/21,最终所需的上行带宽将需要高出约 5 倍,达到 100Mpbs。 + +#### 大型验证者 {#large-validators} + +订阅的子网数量随着更多的余额和添加到节点的验证者而增长。 例如,大约 800 ETH 的余额,该节点保管 25 个列,将需要比以前多大约 30% 的下载带宽。 必要的上传带宽与常规节点类似,至少需要 100Mbps。 + +在 4096 ETH,即 2 个最大余额验证者时,节点将成为“超级节点”,保管所有列,因此下载和存储所有内容。 这些节点通过回传缺失数据来积极修复网络,但也需要更多的带宽和存储空间。 最终的 blob 目标比以前高 6 倍,超级节点将不得不额外存储约 600GB 的 blob 数据,并需要更快的持续下载带宽,约为 20Mbps。 + +[阅读有关预期要求的更多详细信息。](https://ethpandaops.io/posts/fusaka-bandwidth-estimation/#theoretical-requirements) + +### 实现了哪些 EVM 更改? {#what-evm-changes-are-implemented} + +Fusaka 通过新的微小更改和功能巩固了 EVM。 + +- 为了在扩容时确保安全,单笔交易的最大大小将[限制为 1670 万](https://eips.ethereum.org/EIPS/eip-7825)单位燃料。 +- [新的操作码计算前导零 (CLZ)](https://eips.ethereum.org/EIPS/eip-7939) 已添加到 EVM,将使智能合约语言能够更有效地执行某些操作。 +- [`ModExp` 预编译的成本将增加](https://eips.ethereum.org/EIPS/eip-7883)——使用它的合约将收取更多的执行燃料。 + +### 新的 1600 万燃料限制对合约开发者有何影响? {#how-does-new-16m-gas-limit-affects-contract-developers} + +Fusaka 引入了对[单笔交易最大大小的限制,为 1670 万](https://eips.ethereum.org/EIPS/eip-7825) (2^24) 个燃料单位。 这大致相当于之前一个普通区块的大小,使其足以容纳会消耗整个区块的复杂交易。 此限制为客户端提供了保护,防止将来在区块燃料限制更高的情况下出现潜在的 DoS 攻击。 扩容的目标是使更多交易能够进入区块链,而不会让单笔交易消耗整个区块。 + +普通用户交易远未达到此限制。 某些边缘情况可能会受到此更改的影响,例如大型复杂的 DeFi 操作、大型智能合约部署或针对多个合约的批量交易。 这些交易将不得不被分成更小的交易或以其他方式进行优化。 在提交可能达到限制的交易之前,请使用模拟功能。 + +RPC 方法 `eth_call` 没有限制,将允许模拟比实际区块链限制更大的交易。 RPC 方法的实际限制可以由客户端运营者配置,以防止滥用。 + +### CLZ 对开发者意味着什么? {#what-clz-means-for-developers} + +像 Solidity 这样的 EVM 编译器将在底层实现并利用新的计数零函数。 如果新合约依赖于此类操作,可能会从燃料节省中受益。 关注智能合约语言的发布和功能公告,以获取有关潜在节省的文档。 + +### 对我现有的智能合约有任何更改吗? {#what-clz-means-for-developers} + +Fusaka 没有会破坏任何现有合约或改变其行为的直接影响。 对执行层引入的更改是为了向后兼容,但是,请始终关注边缘情况和潜在影响。 + +[随着 `ModExp` 预编译的成本增加](https://eips.ethereum.org/EIPS/eip-7883),依赖它的合约将消耗更多的执行燃料。 如果您的合约严重依赖此功能,并且对用户来说变得更加昂贵,请重新考虑其利用方式。 + +如果执行您合约的交易可能达到类似大小,请考虑[新的 1670 万限制](https://eips.ethereum.org/EIPS/eip-7825)。 + +## 扩展阅读{#further-reading} + +- [以太坊路线图](/roadmap/) +- [Forkcast: Fusaka](https://forkcast.org/upgrade/fusaka) +- [Fusaka Meta EIP](https://eips.ethereum.org/EIPS/eip-7607) +- [Fusaka 测试网博客公告](https://blog.ethereum.org/2025/09/26/fusaka-testnet-announcement) +- [Bankless: Fusaka 和 Pectra 将为以太坊带来什么](https://www.bankless.com/read/what-fusaka-pectra-will-bring-ethereum) +- [Bankless:以太坊的下一步升级:Fusaka、Glamsterdam及未来,与 Preston Van Loon对谈](https://x.com/BanklessHQ/status/1956017743289020633?t=502) +- [Fusaka 文件](https://www.youtube.com/playlist?list=PL4cwHXAawZxpz-erUbKKUnnGoQNdF8s7Z) +- [PEEPanEIPs 解说](https://www.youtube.com/playlist?list=PL4cwHXAawZxoIenfk7OJry4rxcqX-eqBt) From 6a2a4867454546cebad13c0890c523d5f90a5dc7 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:47 -0800 Subject: [PATCH 110/581] update(i18n): public/content/translations/zh/developers/docs/apis/backend/index.md --- .../zh/developers/docs/apis/backend/index.md | 96 ++++++++++--------- 1 file changed, 50 insertions(+), 46 deletions(-) diff --git a/public/content/translations/zh/developers/docs/apis/backend/index.md b/public/content/translations/zh/developers/docs/apis/backend/index.md index abf79b3467f..c8939568168 100644 --- a/public/content/translations/zh/developers/docs/apis/backend/index.md +++ b/public/content/translations/zh/developers/docs/apis/backend/index.md @@ -4,28 +4,28 @@ description: 以太坊客户端应用程序接口的介绍,使你能够从你 lang: zh --- -为了使软件应用程序能够与以太坊区块链进行交互(例如:读取区块链数据或发送交易信息到网络),软件必须连接到以太坊节点。 +软件应用程序要与以太坊区块链交互(即读取区块链数据和/或向网络发送交易),就必须连接到以太坊节点。 -为此,每个以太坊客户端都执行[JSON-RPC](/developers/docs/apis/json-rpc/)规范,以使应用程序可以依赖统一的[方法](/developers/docs/apis/json-rpc/#json-rpc-methods)集。 +为此,每个以太坊客户端都实现了 [JSON-RPC](/developers/docs/apis/json-rpc/) 规范,因此提供了一套统一的[方法](/developers/docs/apis/json-rpc/#json-rpc-methods),可供应用程序依赖。 -如果你想使用特定的编程语言去连接以太坊的节点,你可自行选择,但是在社区中已有几个方便的库,可以更方便地实现应用程序与以太坊的连接。 通过这些库,开发者可以方便地写下直观的一行函数来初始化(后端的)JSON RPC 请求并用于与以太坊进行交互。 +如果你想使用特定的编程语言去连接以太坊的节点,你可自行选择,但是在社区中已有几个方便的库,可以更方便地实现应用程序与以太坊的连接。 借助这些程序库,开发者可以编写直观的单行方法来初始化与以太坊交互的 JSON-RPC 请求(在后台运行)。 -## 前置要求 {#prerequisites} +## 前提条件 {#prerequisites} -了解[以太坊堆栈](/developers/docs/ethereum-stack/)和[以太坊客户端](/developers/docs/nodes-and-clients/)可能会对你有所帮助。 +了解[以太坊技术堆栈](/developers/docs/ethereum-stack/)和[以太坊客户端](/developers/docs/nodes-and-clients/)可能会有所帮助。 ## 为什么要使用库? {#why-use-a-library} -这些库降低了与一个以太坊节点交互的复杂性。 它们还提供实用的函数(例如:将 ETH 转化为 Gwei),而作为开发者,你可以花费更少的时间来处理以太坊客户端的复杂问题,从而将更多的时间集中于处理你的应用程序的独特功能。 +这些库降低了与一个以太坊节点直接交互的复杂性。 它们还提供实用功能(例如,将 ETH 转换为 Gwei),这样,作为开发者,你就可以花更少的时间处理以太坊客户端的复杂性,而将更多时间专注于应用程序的独特功能。 -## 可用的库 {#available-libraries} +## 可用程序库 {#available-libraries} ### 基础设施和节点服务 {#infrastructure-and-node-services} -**Alchemy -** **_以太坊开发平台_** +**Alchemy -** **_以太坊开发平台。_** - [alchemy.com](https://www.alchemy.com/) -- [相关文档](https://docs.alchemy.com/) +- [相关文档](https://www.alchemy.com/docs/) - [GitHub](https://github.com/alchemyplatform) - [Discord](https://discord.com/invite/alchemyplatform) @@ -35,11 +35,11 @@ lang: zh - [相关文档](https://docs.allthatnode.com) - [Discord](https://discord.gg/GmcdVEUbJM) -**Blast by Bware Labs -** **_面向以太坊主网和测试网的去中心化应用程序接口。_** +**Bware Labs 的 Blast -** **_适用于以太坊主网和测试网的去中心化应用程序接口。_** - [blastapi.io](https://blastapi.io/) - [相关文档](https://docs.blastapi.io) -- [Discord](https://discord.gg/bwarelabs) +- [Discord](https://discord.gg/SaRqmRUjjQ) **BlockPi -** **_提供更高效、更快速的 RPC 服务_** @@ -48,17 +48,22 @@ lang: zh - [GitHub](https://github.com/BlockPILabs) - [Discord](https://discord.com/invite/xTvGVrGVZv) -**Cloudflare 以太坊网关。** +**Cloudflare 以太坊网关.** - [cloudflare-eth.com](https://www.cloudflare.com/application-services/products/web3/) **Etherscan - 区块浏览器和交易应用程序接口** + - [相关文档](https://docs.etherscan.io/) -**GetBlock -** **_ 用于 Web3 开发的区块链即服务_** +**Blockscout - 开源区块浏览器** + +- [相关文档](https://docs.blockscout.com/) + +**GetBlock-** **_适用于 Web3 开发的区块链即服务_** - [GetBlock.io](https://getblock.io/) -- [相关文档](https://getblock.io/docs/) +- [相关文档](https://docs.getblock.io/) **Infura -** **_以太坊应用程序接口即服务。_** @@ -66,15 +71,15 @@ lang: zh - [相关文档](https://docs.infura.io/api) - [GitHub](https://github.com/INFURA) -**Node RPC - _经济高效的以太坊虚拟机 JSON-RPC 供应商_** +**Node RPC - _经济高效的 EVM JSON-RPC 提供商_** - [noderpc.xyz](https://www.noderpc.xyz/) - [相关文档](https://docs.noderpc.xyz/node-rpc) -**NOWNodes - _全节点和全区块浏览器。_** +**NOWNodes - _全节点和区块浏览器。_** - [NOWNodes.io](https://nownodes.io/) -- [相关文档](https://documenter.getpostman.com/view/13630829/TVmFkLwy#intro) +- [相关文档](https://nownodes.gitbook.io/documentation) **QuickNode -** **_区块链基础设施即服务。_** @@ -88,7 +93,7 @@ lang: zh - [相关文档](https://rivet.cloud/docs/) - [GitHub](https://github.com/openrelayxyz/ethercattle-deployment) -**Zmok -** **_注重速度的以太坊节点即 JSON-RPC/WebSockets 应用程序接口。_** +**Zmok -** **_高速以太坊节点,提供 JSON-RPC/WebSockets API。_** - [zmok.io](https://zmok.io/) - [GitHub](https://github.com/zmok-io) @@ -97,35 +102,35 @@ lang: zh ### 开发工具 {#development-tools} -**Ethers-kt - ****_ 面向基于以太坊虚拟机区块链的高性能异步 Kotlin/Java/Android 库。_** +**ethers-kt -** **_用于基于 EVM 的区块链的异步、高性能 Kotlin/Java/Android 库。_** - [GitHub](https://github.com/Kr1ptal/ethers-kt) - [示例](https://github.com/Kr1ptal/ethers-kt/tree/master/examples) - [Discord](https://discord.gg/rx35NzQGSb) -**Nethereum -** **_面向区块链的开源 .NET 集成库。_** +**Nethereum -** **_一个面向区块链的开源 .NET 集成库。_** - [GitHub](https://github.com/Nethereum/Nethereum) - [相关文档](http://docs.nethereum.com/en/latest/) - [Discord](https://discord.com/invite/jQPrR58FxX) -**Python 工具 -** **_通过 Python 和以太坊交互的各种库。_** +**Python 工具 -** **_通过 Python 与以太坊交互的各种程序库。_** -- [py.ethereum.org](https://python.ethereum.org/) +- [py.ethereum.org](https://snakecharmers.ethereum.org/) - [web3.py GitHub](https://github.com/ethereum/web3.py) -- [web3.py 聊天](https://gitter.im/ethereum/web3.py) +- [web3.py Chat](https://gitter.im/ethereum/web3.py) -**QuikNode -** **_终极区块链开发平台。_** +**Tatum -** **_终极区块链开发平台。_** - [Tatum](https://tatum.io/) - [GitHub](https://github.com/tatumio/) - [相关文档](https://docs.tatum.io/) - [Discord](https://discord.gg/EDmW3kjTC9) -**web3j -** **_面向以太坊的 Java/Android/Kotlin/Scala 集成库。_** +**web3j -** **_一个适用于以太坊的 Java/Android/Kotlin/Scala 集成库。_** - [GitHub](https://github.com/web3j/web3j) -- [相关文档](https://docs.web3j.io/) +- [文档](https://docs.web3j.io/) - [Gitter](https://gitter.im/web3j/web3j) ### 区块链服务 {#blockchain-services} @@ -135,29 +140,29 @@ lang: zh - [blockcypher.com](https://www.blockcypher.com/) - [相关文档](https://www.blockcypher.com/dev/ethereum/) -**公链 -** **_以太坊的一体化 web3 数据基础设施。_** +**Chainbase -** **_适用于以太坊的一体化 Web3 数据基础设施。_** - [chainbase.com](https://chainbase.com/) - [相关文档](https://docs.chainbase.com/) - [Discord](https://discord.gg/Wx6qpqz4AF) -**Chainstack -** **_共享及专用的以太坊节点即服务。_** +**Chainstack -** **_弹性且专用的以太坊节点即服务。_** - [chainstack.com](https://chainstack.com) -- [相关文档](https://docs.chainbase.com/docs) -- [以太坊应用程序接口参考](https://docs.chainstack.com/reference/ethereum-getting-started) +- [相关文档](https://docs.chainstack.com/) +- [以太坊 API 参考](https://docs.chainstack.com/reference/ethereum-getting-started) -**Coinbase 云节点 -** **_区块链基础设施应用程序接口。_** +**Coinbase Cloud Node -** **_区块链基础设施应用程序接口。_** -- [Coinbase 云节点](https://www.coinbase.com/cloud) -- [相关文档](https://docs.cloud.coinbase.com/) +- [Coinbase 云节点](https://www.coinbase.com/developer-platform) +- [相关文档](https://docs.cdp.coinbase.com/) -**Figment 数据中心 -** **_以太坊主网和测试网的 Web3 应用程序接口服务。_** +**Figment 的 DataHub -** **_支持以太坊主网和测试网的 Web3 API 服务。_** -- [数据中心](https://www.figment.io/) +- [DataHub](https://www.figment.io/) - [相关文档](https://docs.figment.io/) -**Moralis -** **_企业级以太坊虚拟机应用程序接口提供商。_** +**Moralis -** **_企业级 EVM API 提供商。_** - [moralis.io](https://moralis.io) - [相关文档](https://docs.moralis.io/) @@ -165,43 +170,42 @@ lang: zh - [Discord](https://moralis.io/joindiscord/) - [论坛](https://forum.moralis.io/) -**NFTPort -** **_以太坊数据和铸币应用程序接口。_** +**NFTPort -** **_以太坊数据和铸币 API。_** - [nftport.xyz](https://www.nftport.xyz/) - [相关文档](https://docs.nftport.xyz/) - [GitHub](https://github.com/nftport/) - [Discord](https://discord.com/invite/K8nNrEgqhE) -**Tokenview -** **_ 通用多重加密区块链应用程序接口平台。_** +**Tokenview -** **_通用多加密货币区块链 API 平台。_** - [services.tokenview.io](https://services.tokenview.io/) - [相关文档](https://services.tokenview.io/docs?type=api) - [GitHub](https://github.com/Tokenview) -**Watchdata -** **_提供对以太坊区块链简单可靠的API访问。_** +**Watchdata -** **_提供对以太坊区块链简单可靠的 API 访问。_** - [Watchdata](https://watchdata.io/) - [相关文档](https://docs.watchdata.io/) - [Discord](https://discord.com/invite/TZRJbZ6bdn) -**Covalent - ****_适用于 200 多条链的丰富区块链应用程序接口。_** +**Covalent -** **_适用于 200 多条链的丰富区块链 API。_** - [covalenthq.com](https://www.covalenthq.com/) - [相关文档](https://www.covalenthq.com/docs/api/) - [GitHub](https://github.com/covalenthq) - [Discord](https://www.covalenthq.com/discord/) +## 扩展阅读{#further-reading} -## 延伸阅读 {#further-reading} - -_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_ +_你还知道哪些对你有帮助的社区资源? 请编辑本页面并添加进来!_ -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} - [节点和客户端](/developers/docs/nodes-and-clients/) - [开发框架](/developers/docs/frameworks/) ## 相关教程 {#related-tutorials} -- [设置 Web3js 以在 JavaScript 中使用以太坊区块链](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– 在项目中设置 web3.js 的说明。_ -- [在 JavaScript 中调用智能合约](/developers/tutorials/calling-a-smart-contract-from-javascript/) _使用 DAI 代币,从而借助 JavaScript 调用合约函数。_ +- [设置 Web3.js 以在 JavaScript 中使用以太坊区块链](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– 在项目中设置 web3.js 的说明。_ +- [从 JavaScript 调用智能合约](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– 使用 DAI 代币,了解如何用 JavaScript 调用合约函数。_ From 910dc8393cff6d121afb347cef6932521cda1b72 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:50 -0800 Subject: [PATCH 111/581] update(i18n): public/content/translations/zh/roadmap/single-slot-finality/index.md --- .../zh/roadmap/single-slot-finality/index.md | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/public/content/translations/zh/roadmap/single-slot-finality/index.md b/public/content/translations/zh/roadmap/single-slot-finality/index.md index 1c2a369b79f..0a47de18220 100644 --- a/public/content/translations/zh/roadmap/single-slot-finality/index.md +++ b/public/content/translations/zh/roadmap/single-slot-finality/index.md @@ -6,7 +6,7 @@ lang: zh # 单时隙确定性 {#single-slot-finality} -目前,以太坊区块大约需要 15 分钟才能最终确定。 然而,我们可以提高以太坊的共识机制验证区块的效率,大幅减少最终确定所需的时间。 区块可以在同一时隙内提议并最终确定,无需等待 15 分钟。 这一概念叫做**单时隙确定性 (SSF)** 。 +目前,以太坊区块大约需要 15 分钟才能最终确定。 然而,我们可以提高以太坊的共识机制验证区块的效率,大幅减少最终确定所需的时间。 区块可以在同一时隙内提议并最终确定,无需等待 15 分钟。 这一概念叫做**单时隙确定性 (SSF)**。 ## 什么是最终确定性? {#what-is-finality} @@ -16,9 +16,9 @@ lang: zh 目前,最终确定区块所需的时间太长。 大多数用户都不希望等待 15 分钟才能最终确定交易,而且对于希望实现高交易吞吐量的应用程序和交易所来说,等待如此长时间才能确定交易是否最终完成也极其不便。 区块提出和最终确定之间的延迟也使得短时间重组有了可乘之机,攻击者可以利用这种方式审查某些区块或提取最大可提取价值 (MEV)。 处理分阶段升级区块的机制也相当复杂,而且已多次打补丁以弥补安全漏洞,这使得它成为以太坊代码库中较容易出现细微漏洞的部分之一。 这些问题都可以通过将最终确定时间缩短到一个时隙来解决。 -## 去中心化/时间/费用的权衡 {#the-decentralization-time-overhead-tradeoff} +## 去中心化/时间/开销的权衡 {#the-decentralization-time-overhead-tradeoff} -新区块并非可以立即实现有保证的最终确定性;新区块的最终确定需要时间。 之所以出现这种现象,是因为只有代表网络上的质押以太币总数的至少 2/3 的验证者投票支持("认证"),区块才能被视为最终确定。 网络上的每个验证节点必须处理来自其他节点的认证,才能知道某个区块是否达到了这一 2/3 阈值。 +新区块并非可以立即实现有保证的最终确定性;新区块的最终确定需要时间。 原因在于,一个区块要被视为已敲定,必须有代表网络上总质押 ETH 至少 2/3 的验证者为之投票(“证明”)。 网络上的每个验证节点必须处理来自其他节点的认证,才能知道某个区块是否达到了这一 2/3 阈值。 完成最后确认的时间越短,每个节点所需的算力就越强,因为它需要更快地完成认证处理。 此外,网络上的验证节点越多,每个区块需要处理的认证就越多,这也增加了所需的处理能力。 需要的处理能力越强,能参与的人数就越少,因为运行每个验证节点需要更加昂贵的硬件。 延长区块之间的时间可以降低每个节点所需的算力,但也会延长最终确认时间,因为认证的处理速度会变慢。 @@ -26,41 +26,40 @@ lang: zh 以太坊现有的共识机制通过以下途径平衡了这三个参数: -- **将最少质押数量设为 32 以太币**。 这就设定了单个节点需要处理的验证者认证数量的上限,因此也设定了每个节点的计算要求上限。 -- **将最终确定时间设置为大约 15 分钟**。 这使得验证者有充足的时间在普通家用计算机运行运算,从而安全地处理每个区块的认证。 +- **将最低质押数量设置为 32 ETH**。 这就设定了单个节点需要处理的验证者认证数量的上限,因此也设定了每个节点的计算要求上限。 +- **将达成确定性的时间设置为约 15 分钟**。 这使得验证者有充足的时间在普通家用计算机运行运算,从而安全地处理每个区块的认证。 根据目前的机制设计,为了减少最终确定的时间,必须减少网络上的验证者数量或者提高每个节点的硬件要求。 不过,我们可以改进处理认证的方式,在不增加每个节点的费用的前提下提高认证处理数量。 更高效的处理将可以在单一时隙内完成最终确定,无需延长至两个时段。 -## 单时隙确定性的实现路径 {#routes-to-ssf} +## 实现单时隙确定性的途径 {#routes-to-ssf} - + 目前的共识机制结合了多个验证者的认证(这些验证者被称为委员会),以减少每个验证者为验证区块需要处理的信息数量。 每个验证者都有机会在每个时段(32 个时隙)认证,但在每个时隙内,只有一部分验证者可以认证,这称为“委员会”认证。 为此,他们被分为几个子网,其中几个验证者被选为“聚合者”。 每个这些聚合者将他们在其所在子网内看到的其他验证者的所有签名合并为单一聚合签名。 聚合最多个人签名的聚合者将聚合签名传送给区块提议者,后者将该聚合签名与其他委员会的聚合签名一起添加到区块。 -通过此过程,每个验证者完全可以在每个时段中投票,因为“32 个时隙*64 个委员会*每一个委员会 256 个验证者=每个时段 524,288 个验证者”。 在本文章撰写时(2023 年 2 月),有大约 513,000 个活跃验证者。 +通过此过程,每个验证者完全可以在每个时段中投票,因为“32 个时隙_64 个委员会_每一个委员会 256 个验证者=每个时段 524,288 个验证者”。 在本文章撰写时(2023 年 2 月),有大约 513,000 个活跃验证者。 -按照这一方案,每个验证者只能在整个时段中通过分发他们的认证对区块投票。 然而,我们或许可以改进此机制,让每个验证者有机会在每个时隙内进行认证。 - +按照这一方案,每个验证者只能在整个时段中通过分发他们的认证对区块投票。 然而,我们或许可以改进此机制,让每个验证者有机会在每个时隙内进行认证。 自从以太坊共识机制设计问世以来,签名汇总方案 (BLS) 已经被证明比原先设想的扩展性更强,同时客户端处理和验证签名的能力也得到了提升。 事实证明,大量验证者在单时隙内处理认证是可行的。 例如,如果单时隙内一百万个验证者投票两次,时隙时间调整为 16 秒,则节点需要以每秒至少125,000 次聚合的速度认证签名,才能在单时隙内处理一百万次认证。 实际上,一台普通的计算机完成一次签名验证大约需要 500 纳秒,也就是说 125,000 次签名验证可以在大约 62.5 毫秒内完成 — 这远远低于 1 秒的阈值。 -通过创建超级委员会能够进一步提高效率,例如每个时隙随机选择 125,000 个验证者。 只有这些验证者才能对区块进行投票,因此只有这一部分的验证者能够决定是否最终确定区块。 这个想法是否可行取决于社区希望成功攻击以太坊的成本有多高。 这是因为攻击者获得_相应超级委员会_中三分之二的质押以太币,就可以最终确定不诚实的区块,无需获得三分之二的质押以太币总数。 这仍然是一个积极的研究领域,但有一点似乎有道理,对于一个大到需要首先成立超级委员会的验证者集合而言,攻击那些小委员会的成本会非常高(例如:以以太币为单位,攻击成本将是`2/3*125,000*32=~2,600,000 以太币`)。 攻击成本可以通过扩大验证者集合的规模进行调整(例如:调整验证者的规模,使攻击成本等于一百万以太币、四百万以太币、一千万以太币等)。 社区的[初步意见调查](https://youtu.be/ojBgyFl6-v4?t=755)似乎表明,一百万到两百万以太币是可接受的攻击成本,这意味着每个超级委员会约有 65,536 到 97,153 个验证者。 +通过创建超级委员会能够进一步提高效率,例如每个时隙随机选择 125,000 个验证者。 只有这些验证者才能对区块进行投票,因此只有这一部分的验证者能够决定是否最终确定区块。 这个想法是否可行取决于社区希望成功攻击以太坊的成本有多高。 这是因为攻击者无需获得总质押 ETH 的 2/3,而是可以用_该超级委员会_中 2/3 的质押 ETH 来敲定一个不诚实的区块。 这仍然是一个活跃的研究领域,但貌似对于一个大到首先就需要超级委员会的验证者集来说,攻击其中一个子委员会的成本将极高(例如,以 ETH 计价的攻击成本为 `2/3 * 125,000 * 32 = ~260 万 ETH`)。 攻击成本可以通过增加验证者集的规模来调整(例如,调整验证者集规模,使攻击成本等于 100 万以太币、400 万以太币、1000 万以太币等)。 社区的[初步调查](https://youtu.be/ojBgyFl6-v4?t=755)似乎表明,100-200 万以太币是可接受的攻击成本,这意味着每个超级委员会约有 65,536 - 97,152 个验证者。 然而,验证并不是真正的瓶颈 — 验证者节点的真正挑战是签名聚合。 要扩容签名聚合,可能需要增加每个子网中的验证者数量,增加子网的数量,或者增加额外聚合层(也就是说,设置委员会的委员会)。 部分解决措施可能是允许存在专业的聚合者 — 类似于通过提议者-构建者分离和 Danksharding,将区块构建和生成卷叠数据的承诺外包给专业区块构建者的做法。 ## 在单时隙确定性中,分叉选择规则的作用是什么? {#role-of-the-fork-choice-rule} -目前的共识机制依赖于确定性工具(决定三分之二的验证者是否已经认证某个区块链的算法)和分叉选择规则(决定在面临多种选择时哪一区块链是正确选择的算法)的紧密结合。 分叉选择算法只考虑最后一个确定的区块_之后_的区块。 在单时隙确定性下,不会有分叉选择规则要考虑任何区块,因为区块的确认时隙与提议时隙相同。 这意味着在单时隙确定性下,_要么_分叉选择算法,_要么_确定性工具,将会随时保持活跃。 确定性工具会最终确定三分之二的验证者在线并诚信认证的区块。 如果一个区块不能超过这一三分之二阈值,那么分叉选择规则将会确定遵循哪条区块链。 这也为维持怠惰惩罚机制创造了机会,这种机制能够收回> 1/3 的验证者离线的区块链(有一些额外的细微差别)。 +目前的共识机制依赖于确定性工具(决定三分之二的验证者是否已经认证某个区块链的算法)和分叉选择规则(决定在面临多种选择时哪一区块链是正确选择的算法)的紧密结合。 分叉选择算法只考虑_自_上一个已敲定区块以来的区块。 在单时隙确定性下,不会有分叉选择规则要考虑任何区块,因为区块的确认时隙与提议时隙相同。 这意味着在单时隙确定性 (SSF) 下,_要么_是分叉选择算法,_要么_是确定性小工具,总有一个处于活跃状态。 确定性工具会最终确定三分之二的验证者在线并诚信认证的区块。 如果一个区块不能超过这一三分之二阈值,那么分叉选择规则将会确定遵循哪条区块链。 这也创造了机会来维护怠惰惩罚 (inactivity leak) 机制,该机制可以在超过 1/3 的验证者离线时恢复链,尽管有一些额外的细微差别。 -## 未解决的问题 {#outstanding-issues} +## 待解决的问题 {#outstanding-issues} 通过增加每个子网的验证者数量来扩容聚合的问题是,这会导致点对点网络的负载增加。 添加聚合层的问题是,这设计起来非常复杂并且会增加延迟(也就是说,它会让区块提议者接收所有子网聚合者的消息的时间延长)。 即使使用 BLS 签名聚合,也不清楚如何处理网上活跃的验证者数量超过了每个时隙的处理能力的情况。 一种可能的解决方法是,由于所有验证者都在每个时隙内认证并且在单时隙确定性下没有委员会,可完全取消有效余额 32 个以太币的上限,这意味着管理多个验证者的运营商能够合并它们的质押并减少运行的验证者,从而减少验证节点需要处理的信息数量,满足整个验证者集合的需求。 这取决于大质押人是否同意合并他们的验证者。 也可以对任何时间的验证者数量或者质押的以太币数量设置固定上限。 然而,这需要建立相应机制,决定允许哪些验证者参与,禁止哪些验证者参与,这种机制容易产生不希望的附带影响。 ## 当前进展 {#current-progress} -单时隙确定性正处于研究阶段。 预计它不会在几年内推出,可能会在[沃克尔树](/roadmap/verkle-trees/)和 [Danksharding](/roadmap/danksharding/) 等其他重大升级之后推出。 +单时隙确定性正处于研究阶段。 预计它在几年内都不会上线,可能会在[沃克尔树](/roadmap/verkle-trees/)和 [Danksharding](/roadmap/danksharding/) 等其他重大升级之后才会推出。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [Vitalik 在 2022 年全球区块链技术前沿系列峰会关于单时隙确定性的演讲](https://www.youtube.com/watch?v=nPgUKNPWXNI) -- [Vitalik 的说明:通往单时隙确定性的路径](https://notes.ethereum.org/@vbuterin/single_slot_finality) +- [Vitalik 在 2022 年 EDCON 上关于 SSF 的演讲](https://www.youtube.com/watch?v=nPgUKNPWXNI) +- [Vitalik 的笔记:实现单时隙确定性的途径](https://notes.ethereum.org/@vbuterin/single_slot_finality) From 0e9522ab3d65411b06c9c569fd86a38b9b0568b1 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:53 -0800 Subject: [PATCH 112/581] update(i18n): public/content/translations/zh/contributing/adding-layer-2s/index.md --- .../zh/contributing/adding-layer-2s/index.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/public/content/translations/zh/contributing/adding-layer-2s/index.md b/public/content/translations/zh/contributing/adding-layer-2s/index.md index 2aec168e548..407f2bc02e7 100644 --- a/public/content/translations/zh/contributing/adding-layer-2s/index.md +++ b/public/content/translations/zh/contributing/adding-layer-2s/index.md @@ -8,7 +8,7 @@ lang: zh 我们想要确保上架的资源是最好的,让用户能够安全放心地浏览二层网络空间。 -任何人都可以提出向 ethereum.org 添加二层网络的建议。 如果有遗漏的二层网络,**[请提出建议](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_layer2.yaml)!** +任何人都可以提出向 ethereum.org 添加二层网络的建议。 如果我们遗漏了某个二层网络,**[请提交建议](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_layer2.yaml)!** 我们目前在以下页面上架了二层网络: @@ -18,14 +18,14 @@ lang: zh 对以太坊来说,二层网络是一个相对较新的、令人振奋的范式。 我们已尝试在 ethereum.org 上创建一个公平的考量框架,但纳入标准会随时间推移而变化和发展。 -## 决策框架 {#decision-framework} +## 决策框架{#decision-framework} -### 纳入标准:必备条件 {#criteria-for-inclusion-the-must-haves} +### 收录标准:必备条件 {#criteria-for-inclusion-the-must-haves} **在 L2BEAT 上架** -- 要想纳入考量范围,项目必须已在 [L2BEAT](https://l2beat.com) 上架。 L2BEAT 为二层网络项目提供了可靠的风险评估,可供我们评估二层网络项目。 **如果项目未在 L2BEAT 上架,则我们不会将其作为二层网络纳入 ethereum.org。** -- [了解如何将你的二层网络项目添加到 L2BEAT](https://github.com/l2beat/l2beat/blob/master/CONTRIBUTING.md)。 +- 要想纳入考量范围,该项目必须已在 [L2BEAT](https://l2beat.com) 上架。 L2BEAT 为二层网络项目提供了可靠的风险评估,可供我们评估二层网络项目。 **如果项目未在 L2BEAT 上架,我们不会将其作为二层网络在 ethereum.org 上列出。** +- [了解如何将您的 L2 项目添加到 L2BEAT](https://github.com/l2beat/l2beat/blob/master/CONTRIBUTING.md)。 **开源** @@ -42,7 +42,7 @@ _我们认为,其他不使用以太坊来实现数据可用性或安全性的 **以太坊数据可用性** -- 数据可用性是其他扩容方案与二层网络方案之间的重要区分因素。 一个项目**必须**使用以太坊主网来实现数据可用性,才考虑让它上架。 +- 数据可用性是其他扩容方案与二层网络方案之间的重要区分因素。 一个项目**必须**使用以太坊主网来实现数据可用性,才会被考虑收录。 **链桥** @@ -70,7 +70,7 @@ _我们认为,其他不使用以太坊来实现数据可用性或安全性的 - 上架的项目需要能正常工作的区块浏览器,让用户轻松浏览区块链。 -### 其他标准:最好具备 {#nice-to-haves} +### 其他标准:加分项 {#nice-to-haves} **交易所对项目的支持** @@ -78,7 +78,7 @@ _我们认为,其他不使用以太坊来实现数据可用性或安全性的 **二层网络生态系统去中心化应用程序链接** -- 我们希望能够提供有关用户可以在此二层网络上执行哪些操作的信息 (例如 https://portal.arbitrum.io/、https://www.optimism.io/apps)。 +- 我们希望能够提供有关用户可以在此二层网络上执行哪些操作的信息 (例如,https://portal.arbitrum.io/、https://www.optimism.io/apps) **代币合约列表** @@ -88,10 +88,10 @@ _我们认为,其他不使用以太坊来实现数据可用性或安全性的 - 是否有任何钱包原生支持二层网络? -## 添加你的二层网络 {#add-exchange} +## 添加您的二层网络 {#add-exchange} 如果你想将二层网络添加到 ethereum.org,请在 GitHub 上创建一个提议。 - 创建一个提议 +创设一个开源项目 From 5ce08a5f27bea65d3cb5245b94d9eae371222c3f Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:56 -0800 Subject: [PATCH 113/581] update(i18n): public/content/translations/zh/developers/docs/design-and-ux/index.md --- .../zh/developers/docs/design-and-ux/index.md | 105 +++++++++--------- 1 file changed, 50 insertions(+), 55 deletions(-) diff --git a/public/content/translations/zh/developers/docs/design-and-ux/index.md b/public/content/translations/zh/developers/docs/design-and-ux/index.md index bce01f31939..5e51d73c458 100644 --- a/public/content/translations/zh/developers/docs/design-and-ux/index.md +++ b/public/content/translations/zh/developers/docs/design-and-ux/index.md @@ -6,86 +6,81 @@ lang: zh 你不熟悉用以太坊进行设计吗? 如果是的话,那么这个地方你来对了。 以太坊社区已经编写了很多资源,介绍 Web3 的设计和研究基础知识。 你将学习一些核心概念,它们可能与你熟悉的其他应用程序设计不同。 -需要先对 Web3 有更基本的了解吗? 请浏览[**学习中心**](/learn/)。 +需要先对 Web3 有更基本的了解吗? 查看[**学习中心**](/learn/)。 ## 从用户研究开始 {#start-with-user-research} -有效的设计不仅仅是创建赏心悦目的用户界面。 还涉及到深入了解用户的需求、目标以及驱动因素。 因此,我们强烈建议所有设计师采用一种设计流程,例如[**双钻流程**](https://en.wikipedia.org/wiki/Double_Diamond_(design_process_model)),以确保其设计经过深思熟虑且有意为之。 +有效的设计不仅仅是创建赏心悦目的用户界面。 还涉及到深入了解用户的需求、目标以及驱动因素。 因此,我们强烈建议所有设计师采用一种设计流程,例如[**双钻流程**](https://en.wikipedia.org/wiki/Double_Diamond_\(design_process_model\)),以确保其设计经过深思熟虑且有意为之。 -- [Web3 需要更多用户体验研究人员和设计师](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers) - 当前设计成熟度概述 -- [在 Web3 中进行用户体验研究的简明指南](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - 研究方法简明指南 -- [如何在 Web3 中进行用户体验决策](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - 定量和定性研究简要概述及两者之间的区别(6 分钟视频) -- [在 Web3 中担任用户体验研究人员](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - 在 Web3 中担任用户体验研究人员的感受之个人看法 +- [Web3 需要更多的用户体验研究员和设计师](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers) - 当前设计成熟度概述 +- [web3 用户体验研究简明指南](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - 如何开展研究的简明指南 +- [如何在 Web3 中进行用户体验决策](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - 定量和定性研究简要概述及两者之间的区别(视频,6 分钟) +- [在 web3 中担任用户体验研究员](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - 关于在 web3 中担任用户体验研究员的个人观点 -## 针对 Web3 中的研究的调查 {#research-in-web3} +## Web3 研究 {#research-in-web3} 下面是一份已在 Web3 中进行的用户研究的精选清单,可能对设计和产品决策有所裨益,也可为自行进行研究提供灵感。 -| 关注领域 | 姓名 | -|:----------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 加密货币入门 | [WalletConnect Pulse 2024:加密货币消费者的情绪及使用情况](https://walletconnect.com/pulse-2024-crypto-consumer-report) | -| 加密货币入门 | [CRADL:加密货币中的用户体验](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) | -| 加密货币入门 | [CRADL:加密货币入门](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) | -| 加密货币入门 | [比特币用户体验报告](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) | -| 加密货币入门 | [ConSensys:2023 年全球 Web3 认知度状况](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) | -| 加密货币入门 | [NEAR:加速采用之路](https://drive.google.com/file/d/1VuaQP4QSaQxR5ddQKTMGI0b0rWdP7uGn/view) | -| 权益质押 | [OpenUX:Rocket Pool 节点运营商的用户体验](https://storage.googleapis.com/rocketpool/RocketPool-NodeOperator-UX-Report-Jan-2024.pdf) | -| 权益质押 | [质押:主要趋势、要点与预测 - Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) | -| 权益质押 | [多重应用程序质押](https://github.com/threshold-network/UX-User-Research/blob/main/Multi-App%20Staking%20(MAS)/iterative-user-study/MAS%20Iterative%20User%20Study.pdf) | -| 去中心化自治组织 | [2022 年去中心化自治组织研究更新:去中心化自治组织构建者需要什么?](https://blog.aragon.org/2022-dao-research-update/) | -| 去中心化金融 | [2024 年去中心化金融状况](https://stateofdefi.org/)(调查进行中) | -| 去中心化金融 | [保险池](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) | -| 去中心化金融 | [ConSensys:2022 年去中心化金融用户研究报告](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) | -| 元宇宙 | [元宇宙:用户研究报告](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) | -| 元宇宙 | [野外冒险:对元宇宙用户的研究](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube)(27 分钟视频) | -| Ethereum.org 用户体验数据 | [可用性与用户满意度调查仪表板 - Ethereum.org](https://lookerstudio.google.com/reporting/0a189a7c-a890-40db-a5c6-009db52c81c9) | - -## Web3 相关设计 {#design-for-web3} - -- [Web3 用户体验设计手册](https://web3ux.design/) - 设计 Web3 应用程序实用指南 -- [Web3 设计原则](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1) - 区块链去中心化应用程序的用户体验规则构架 +| 关注领域 | 名称 | +| :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 加密货币入门 | [The Reown Pulse 2024:加密货币消费者情绪和使用情况](https://reown.com/blog/unveiling-walletconnects-consumer-crypto-report) | +| 加密货币入门 | [CRADL:加密货币的用户体验](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) | +| 加密货币入门 | [CRADL:加密货币入门](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) | +| 加密货币入门 | [比特币用户体验报告](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) | +| 加密货币入门 | [Consensys:2023 年全球 Web3 认知状况](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) | +| 加密货币入门 | [NEAR:加速采用之旅](https://drive.google.com/file/d/1VuaQP4QSaQxR5ddQKTMGI0b0rWdP7uGn/view) | +| 质押 | [OpenUX:Rocket Pool 节点运营商用户体验](https://storage.googleapis.com/rocketpool/RocketPool-NodeOperator-UX-Report-Jan-2024.pdf) | +| 质押 | [质押:主要趋势、要点和预测 - Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) | +| 质押 | [多应用质押](https://github.com/threshold-network/UX-User-Research/blob/main/Multi-App%20Staking%20\(MAS\)/iterative-user-study/MAS%20Iterative%20User%20Study.pdf) | +| DAO | [2022 年 DAO 研究更新:DAO 构建者需要什么?](https://blog.aragon.org/2022-dao-research-update/) | +| DeFi | [保险池](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) | +| DeFi | [Consensys:2022 年 DeFi 用户研究报告](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) | +| 元宇宙 | [元宇宙:用户研究报告](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) | +| 元宇宙 | [Safari 之旅:在元宇宙中研究用户](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube)(视频,27 分钟) | + +## Web3 设计 {#design-for-web3} + +- [Web3 用户体验设计手册](https://web3ux.design/) - 设计 Web3 应用程序的实用指南 +- [Web3 设计原则](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1) - 基于区块链的去中心化应用程序的用户体验规则框架 - [区块链设计原则](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e) - IBM 区块链设计团队的经验教训 -- [Web3 设计模式](https://www.web3designpatterns.io/) - 真实 Web3 产品的精选设计模式库 -- [W3design.io](https://w3design.io/) - 生态系统中不同项目的精选用户界面流程库 -- [Neueux](https://neueux.com/apps) - 具有多种过滤选项的用户界面流程库 -- [Web3 的可用性危机:你需要知道的一切!](https://www.youtube.com/watch?v=oBSXT_6YDzg) - 关于以开发者为中心的项目建设中漏洞的小组讨论(34 分钟视频) +- [Neueux.com](https://neueux.com/apps) - 具有多种筛选选项的用户流程界面库 +- [Web3 的可用性危机:你需要知道什么!](https://www.youtube.com/watch?v=oBSXT_6YDzg) - 关于以开发者为中心的项目建设中陷阱的小组讨论(视频,34 分钟) -## 入门指南 {#getting-started} +## 入门 {#getting-started} -- [Web3 启发法](/developers/docs/design-and-ux/heuristics-for-web3/) - Web3 界面设计的 7 个启发法 -- [去中心化交易所 (DEX) 设计最佳实践](/developers/docs/design-and-ux/dex-design-best-practice/) - 去中心化交易所设计指南 +- [Web3 启发式方法](/developers/docs/design-and-ux/heuristics-for-web3/) - Web3 界面设计的 7 种启发式方法 +- [DEX 设计最佳实践](/developers/docs/design-and-ux/dex-design-best-practice/) - 去中心化交易所设计指南 ## Web3 设计案例研究 {#design-case-studies} -- [Deep Work Studio](https://deepwork.studio/case-studies/) -- [加密货币用户体验手册](https://www.cryptouxhandbook.com/) -- [在 OpenSea 售卖非同质化代币](https://builtformars.com/case-studies/opensea) -- [钱包用户体验分解:钱包需要怎样改变](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver)(20 分钟视频) +- [Deep Work Studio](https://www.deepwork.studio/case-studies) +- [在 OpenSea 上出售 NFT](https://builtformars.com/case-studies/opensea) +- [钱包用户体验分析:钱包需要如何改变](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver)(视频,20 分钟) -## 设计奖励 {#bounties} +## 设计赏金 {#bounties} - [Dework](https://app.dework.xyz/bounties) -- [Buildbox 黑客马拉松](https://app.buidlbox.io/) -- [ETHGlobal 骇客松](https://ethglobal.com/) +- [Buildbox 黑客松](https://app.buidlbox.io/) +- [ETHGlobal 黑客松](https://ethglobal.com/) -## 设计去中心化自治组织和社区 {#design-daos-and-communities} +## 设计 DAO 和社区 {#design-daos-and-communities} 加入专业的社区主导型组织或设计小组,与其他成员讨论设计和研究相关的主题和趋势。 - [Vectordao.com](https://vectordao.com/) - [Deepwork.studio](https://www.deepwork.studio/) -- [Designer-dao.xyz](https://www.designer-dao.xyz/) - [We3.co](https://we3.co/) - [Openux.xyz](https://openux.xyz/) -## 设计体系 {#design-systems} +## 设计系统和其他设计资源 {#design-systems-and-resources} -- [乐观设计](https://www.figma.com/@optimism) (Figma) -- [Ethereum.org 设计体系](https://www.figma.com/@ethdotorg) (Figma) -- [Finity,来自 Polygon 的设计体系](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma) -- [Kleros 设计体系](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma) -- [安全设计体系](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma) -- [ENS 设计体系](https://thorin.ens.domains/) -- [Mirror 设计体系](https://degen-xyz.vercel.app/) +- [Optimism 设计](https://www.figma.com/@optimism) (Figma) +- [Ethereum.org 设计系统](https://www.figma.com/@ethdotorg) (Figma) +- [Finity,Polygon 的一个设计系统](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma) +- [Kleros 设计系统](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma) +- [Safe 设计系统](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma) +- [ENS 设计系统](https://thorin.ens.domains/) +- [Mirror 设计系统](https://degen-xyz.vercel.app/) -**本页所列文章和项目并非官方认可,**仅供参考。 我们根据我们[上线政策](/contributing/design/adding-design-resources)中的条件添加本页的链接。 如果你希望我们添加某个项目/某篇文章,请在 [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/public/content/developers/docs/design-and-ux/index.md) 上编辑本页。 +**本页所列文章和项目并非官方认可**,仅供参考。 +我们根据[上榜政策](/contributing/design/adding-design-resources)中的标准将链接添加到此页面。 如果你希望我们添加项目/文章,请在 [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/public/content/developers/docs/design-and-ux/index.md) 上编辑此页面。 From 02cfe8d87ac613b5a6af4ed549b07df5dd837fda Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:12:59 -0800 Subject: [PATCH 114/581] update(i18n): public/content/translations/zh/developers/tutorials/ipfs-decentralized-ui/index.md --- .../tutorials/ipfs-decentralized-ui/index.md | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 public/content/translations/zh/developers/tutorials/ipfs-decentralized-ui/index.md diff --git a/public/content/translations/zh/developers/tutorials/ipfs-decentralized-ui/index.md b/public/content/translations/zh/developers/tutorials/ipfs-decentralized-ui/index.md new file mode 100644 index 00000000000..e1b490fd651 --- /dev/null +++ b/public/content/translations/zh/developers/tutorials/ipfs-decentralized-ui/index.md @@ -0,0 +1,73 @@ +--- +title: 用于去中心化用户界面的 IPFS +description: 本教程将教读者如何使用 IPFS 来存储去中心化应用程序的用户界面。 尽管应用程序的数据和业务逻辑是去中心化的,但如果没有一个抗审查的用户界面,用户仍有可能失去对它的访问权限。 +author: Ori Pomerantz +tags: [ "ipfs" ] +skill: beginner +lang: zh +published: 2024-06-29 +--- + +你编写了一个令人难以置信的全新去中心化应用程序。 你甚至为它编写了一个[用户界面](/developers/tutorials/creating-a-wagmi-ui-for-your-contract/)。 但现在你担心有人会试图通过关闭你的用户界面来审查它,而这个界面只是云端的一台服务器。 在本教程中,你将学习如何通过将用户界面上传到 **[星际文件系统 (IPFS)](https://ipfs.tech/developers/)** 来避免审查,这样任何感兴趣的人都能够将其固定到服务器上以供将来访问。 + +你可以使用像 [Fleek](https://resources.fleek.xyz/docs/) 这样的第三方服务来完成所有工作。 本教程适用于那些即使需要更多工作也想充分了解自己在做什么的人。 + +## 在本地开始 {#getting-started-locally} + +有多个[第三方 IPFS 提供商](https://docs.ipfs.tech/how-to/work-with-pinning-services/#use-a-third-party-pinning-service),但最好从本地运行 IPFS 开始进行测试。 + +1. 安装 [IPFS 用户界面](https://docs.ipfs.tech/install/ipfs-desktop/#install-instructions)。 + +2. 创建一个包含你的网站的目录。 如果你正在使用 [Vite](https://vite.dev/),请使用此命令: + + ```sh + pnpm vite build + ``` + +3. 在 IPFS Desktop 中,点击**导入 > 文件夹**,然后选择上一步中创建的目录。 + +4. 选择你刚刚上传的文件夹,然后点击**重命名**。 给它一个更有意义的名称。 + +5. 再次选择它,然后点击**分享链接**。 将 URL 复制到剪贴板。 该链接将类似于 `https://ipfs.io/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`。 + +6. 点击**状态**。 展开**高级**选项卡以查看网关地址。 例如,在我的系统上,地址是 `http://127.0.0.1:8080`。 + +7. 将链接步骤中的路径与网关地址结合起来,找到你的地址。 例如,对于上面的示例,URL 是 `http://127.0.0.1:8080/ipfs/QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`。 在浏览器中打开该 URL 以查看你的网站。 + +## 上传 {#uploading} + +所以现在你可以使用 IPFS 在本地提供文件,这并不是很令人兴奋。 下一步是在你离线时让全世界都可以访问它们。 + +有许多知名的[固定服务](https://docs.ipfs.tech/concepts/persistence/#pinning-services)。 选择其中一个。 无论你使用哪种服务,都需要创建一个帐户,并向其提供 IPFS 桌面版中的**内容标识符 (CID)**。 + +就我个人而言,我发现 [4EVERLAND](https://docs.4everland.org/storage/4ever-pin/guides) 是最容易使用的。 以下是相关说明: + +1. 浏览到[仪表板](https://dashboard.4everland.org/overview)并用你的钱包登录。 + +2. 在左侧边栏中,点击 **Storage > 4EVER Pin**。 + +3. 点击**上传 > 选定的 CID**。 为你的内容命名,并提供来自 IPFS 桌面版的 CID。 目前,CID 是一个以 `Qm` 开头的字符串,后面跟着 44 个字母和数字,代表一个 [base-58 编码的](https://medium.com/bootdotdev/base64-vs-base58-encoding-c25553ff4524)哈希,例如 `QmaCuQ7yN6iyBjLmLGe8YiFuCwnePoKfVu6ue8vLBsLJQJ`,但[这很可能会改变](https://docs.ipfs.tech/concepts/content-addressing/#version-1-v1)。 + +4. 初始状态为**排队中**。 重新加载,直到它变为**已固定**。 + +5. 点击你的 CID 以获取链接。 你可以在[这里](https://bafybeifqka2odrne5b6l5guthqvbxu4pujko2i6rx2zslvr3qxs6u5o7im.ipfs.dweb.link/)看到我的应用程序。 + +6. 你可能需要激活你的帐户,才能将其固定超过一个月。 帐户激活费用约为 1 美元。 如果你关闭了它,请注销并重新登录,系统会再次要求你激活。 + +## 从 IPFS 使用 {#using-from-ipfs} + +此时,你拥有一个指向中心化网关的链接,该网关为你的 IPFS 内容提供服务。 简而言之,你的用户界面可能更安全一些,但仍然不具备抗审查能力。 要实现真正的抗审查能力,用户需要[直接从浏览器](https://docs.ipfs.tech/install/ipfs-companion/#prerequisites)使用 IPFS。 + +一旦你安装了它(并且桌面版 IPFS 正常工作),你可以在任何网站上访问 [/ipfs/``](https://any.site/ipfs/bafybeifqka2odrne5b6l5guthqvbxu4pujko2i6rx2zslvr3qxs6u5o7im),你将以去中心化的方式获得该内容。 + +## 缺点 {#drawbacks} + +你无法可靠地删除 IPFS 文件,因此,只要你在修改用户界面,最好要么保持其中心化,要么使用[星际名称系统 (IPNS)](https://docs.ipfs.tech/concepts/ipns/#mutability-in-ipfs),这是一个在 IPFS 之上提供可变性的系统。 当然,任何可变的东西都可能被审查,就 IPNS 而言,可以通过向持有其对应私钥的人施压来实现。 + +此外,某些软件包与 IPFS 存在兼容性问题,因此如果你的网站非常复杂,这可能不是一个好的解决方案。 当然,任何依赖于服务器集成的东西都不能仅仅通过将客户端放在 IPFS 上来实现去中心化。 + +## 结论 {#conclusion} + +正如以太坊让你能够将去中心化应用程序的数据库和业务逻辑方面去中心化一样,IPFS 也能让你将用户界面去中心化。 这可以让你关闭针对你的去中心化应用程序的又一个攻击向量。 + +[点击此处查看我的更多作品](https://cryptodocguy.pro/)。 From 44a9dd698f14231581580e6ee8661b808fd8b65e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:02 -0800 Subject: [PATCH 115/581] update(i18n): public/content/translations/zh/developers/docs/scaling/validium/index.md --- .../developers/docs/scaling/validium/index.md | 99 ++++++++++--------- 1 file changed, 50 insertions(+), 49 deletions(-) diff --git a/public/content/translations/zh/developers/docs/scaling/validium/index.md b/public/content/translations/zh/developers/docs/scaling/validium/index.md index eef58dd0131..38b08e98415 100644 --- a/public/content/translations/zh/developers/docs/scaling/validium/index.md +++ b/public/content/translations/zh/developers/docs/scaling/validium/index.md @@ -5,21 +5,21 @@ lang: zh sidebarDepth: 3 --- -Validium 是一种[扩容解决方案](/developers/docs/scaling/),使用[零知识卷叠](/developers/docs/scaling/zk-rollups/)等有效性证明来执行交易的完整性,但它不在以太坊主网上存储交易数据。 虽然链下数据可用性是一种折衷方案,但它可以显著提升可扩展性(Validium 每秒可以处理[约 9000 笔交易,甚至更多](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263))。 +Validium 是一种[扩容解决方案](/developers/docs/scaling/),它使用像 [ZK 卷叠](/developers/docs/scaling/zk-rollups/)这样的有效性证明来强制执行交易的完整性,但不在以太坊主网上存储交易数据。 虽然链下数据可用性会引入一些权衡,但它可以极大地提高可扩展性(Validium 每秒可以处理[约 9,000 笔或更多笔交易](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263))。 ## 前提条件 {#prerequisites} -你应该已经阅读并理解关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2)的页面。 +你应该已经阅读并理解我们关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2)的页面。 ## 什么是 Validium? {#what-is-validium} -Validium 是使用链下数据可用性和计算的扩展解决方案,旨在通过在以太坊主网外处理交易来提高吞吐量。 与零知识卷叠(ZK 卷叠)一样,Validium 发布[零知识证明](/glossary/#zk-proof)以便在以太坊上验证链下交易。 这样可以防止无效的状态转换并增强 Validium 链的安全保障。 +Validium 是使用链下数据和计算结果的扩容解决方案,旨在通过在以太坊主网外处理交易来提高吞吐量。 与零知识卷叠 (ZK-rollups) 一样,validium 会发布[零知识证明](/glossary/#zk-proof)以在以太坊上验证链下交易。 这样可以防止无效的状态转换并增强 Validium 链的安全保障。 -这些“有效性证明”可以有 ZK-SNARK(零知识简洁非交互式知识论证)或 ZK-STARK(零知识可扩展透明知识论证)等形式。 更多关于[零知识证明](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)的信息。 +这些“有效性证明”可以有 ZK-SNARK(零知识简洁非交互式知识论证)或 ZK-STARK(零知识可扩展透明知识论证)等形式。 更多关于[零知识证明](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)。 -属于 Validium 用户的资金由以太坊上的智能合约控制。 恰如零知识卷叠一样,Validium 几乎可以提供即时提款;在主网上验证提款请求的有效性证明后,用户可以通过提供[默克尔证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)提取资金。 默克尔证明验证用户的提款交易是否包含在经过验证的交易批次中,从而允许链上合约处理提款。 +属于 Validium 用户的资金由以太坊上的智能合约控制。 Validium 提供近乎即时的提款,与 ZK 卷叠非常相似;一旦提款请求的有效性证明在主网上得到验证,用户就可以通过提供[默克尔证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)来提取资金。 默克尔证明用于验证用户的提款交易是否包含在经过验证的交易批次中,从而允许链上合约处理提款。 -但是,Validium 用户可以冻结他们的资金并限制提款。 如果 Validium 链上的数据可用性管理器不给用户提供链下状态数据,就会发生这种情况。 如果无法访问交易数据,用户将无法计算证明资金所有权和执行提款所需的默克尔证明。 +但是,Validium 用户可以冻结他们的资金并限制提款。 如果 Validium 链的数据管理员不给用户提供链下数据,就会发生这种情况。 如果无法访问交易数据,用户将无法计算证明资金所有权和执行提款所需的默克尔证明。 这是 Validium 和零知识卷叠之间的主要区别,它们在数据可用性范围内的位置不同。 两种解决方案处理数据存储的方式不同,这会对安全性和去信任产生影响。 @@ -27,27 +27,27 @@ Validium 是使用链下数据可用性和计算的扩展解决方案,旨在 Validium 是建立在现有以太坊链上的扩容协议。 虽然它在链下执行交易,但 Validium 链由部署在主网上的一系列智能合约管理,包括: -1. **验证者合约**:验证者合约验证 Validium 运营商在进行状态更新时所提交证明的有效性。 该合约包括证明链下交易正确性的有效性证明和验证链下交易数据存在的数据可用性证明。 +1. **验证者合约**:验证者合约在进行状态更新时,会验证 validium 运营商提交的证明的有效性。 该合约包括证明链下交易正确性的有效性证明和验证链下交易数据存在的数据可用性证明。 -2. **主合约**:主合约存储区块生产者提交的状态承诺(默克尔根),并在链上验证有效性证明后更新 Validium 的状态。 该合约还处理 Validium 链上的存款和提款。 +2. **主合约**:主合约存储区块生产者提交的状态承诺(默克尔根),并在有效性证明在链上得到验证后,更新 validium 的状态。 该合约还处理 Validium 链上的存款和提款。 Validium 还依赖以太坊主链实现: ### 结算 {#settlement} -在父链验证其有效性之前,无法完全确认在 Validium 上执行的交易。 所有在 Validium 上进行的业务最终都必须在主网上结算。 以太坊区块链还为 Validium 用户提供了“结算保障”,这意味着一旦提交到链上,链下交易就不能逆转或改变。 +在父链验证其有效性之前,无法完全确认在 Validium 上执行的交易。 所有在 Validium 上进行的业务最终都必须在主网上结算。 以太坊区块链还为 Validium 用户提供了“结算保障”,这意味着一旦提交到链上,链下交易就不能更改。 -### 安全性 {#security} +### 安全 {#security} -作为结算层的以太坊也保证 Validium 上状态转换的有效性。 在 Validium 链上执行的链下交易通过以太坊基础层上的智能合约进行验证。 +作为结算层的以太坊也保证 Validium 上状态转换的有效性。 在 Validium 链上执行的链下交易通过以太坊基础阶段的智能合约进行验证。 -如果链上验证者合约断定证明无效,则交易被拒绝。 这意味着运营商必须满足以太坊协议执行的有效性条件,然后才能更新 Validium 的状态。 +如果链上合约验证者断定证明无效,则交易会被拒绝。 这意味着运营商必须满足以太坊协议执行的有效性条件,然后才能更新 Validium 的状态。 ## Validium 如何运作? {#how-does-validium-work} ### 交易 {#transactions} -用户向运营商提交交易,运营商是负责在 Validium 链上执行交易的节点。 一些 Validium 可能采用单个运营商来执行链,或者依靠[权益证明 (PoS)](/developers/docs/consensus-mechanisms/pos/) 机制轮换运营商。 +用户向运营商提交交易,运营商是负责在 Validium 链上执行交易的节点。 一些 validium 可能会使用单一运营商来执行链,或依靠[权益证明 (PoS)](/developers/docs/consensus-mechanisms/pos/) 机制来轮换运营商。 运营商将交易聚合成一个批次并发送到证明线路进行证明。 证明线路接受交易批次(及其他相关数据)作为输入,并输出验证操作正确执行的有效性证明。 @@ -55,11 +55,11 @@ Validium 还依赖以太坊主链实现: Validium 的状态被哈希处理成默克尔树,其根存储在以太坊的主合约中。 默克尔根又称为状态根,作为对 Validium 上当前帐户状态和余额的加密承诺。 -要执行状态更新,运营商必须(在执行交易后)计算一个新的状态根并将提交给链上合约。 如果有效性证明得到证实,提出的状态被接受,Validium 切换到新的状态根。 +要更新状态,运营商必须(在执行交易后)计算并提出一个新的状态根并提交给链上合约。 如果有效性证明得到证实,提出的状态被接受,Validium 切换到新的状态根。 ### 存款和提款 {#deposits-and-withdrawals} -用户通过在链上合约中存入以太币(或任何与以太坊意见征求兼容的代币),将资金从以太坊转移到 Validium。 该合约将存款事件转发到链下 Validium,并向用户在 Validium 上的地址存入与其存款相同的金额。 运营商还将此存款交易添加到新批次中。 +用户通过在链上合约中存入以太币(或任何与以太坊兼容的代币)将资金从以太坊转移到 Validium。 该合约将存款事件转发到链下 Validium,并向用户在 Validium 上的地址存入与其存款相同的金额。 运营商还将此存款交易添加到新批次中。 要将资金转移回主网,Validium 用户发起提款交易并将其提交给运营商,后者验证提款请求并将其包含在批次中。 在用户能够退出系统前,他们在 Validium 链上的资产也被销毁。 一旦与该批次相关的有效性证明得到验证,用户就可以调用主合约来提取剩余的初始存款。 @@ -69,97 +69,98 @@ Validium 的状态被哈希处理成默克尔树,其根存储在以太坊的 执行一批交易后,运营商向验证者合约提交相关有效性证明,并向主合约提出新的状态根。 如果证明是有效的,则主合约更新 Validium 的状态并最终确定批次中交易的结果。 -与零知识卷叠不同,Validium 上的区块生产者不需要发布交易批次的交易数据(仅发布区块头)。 这使得 Validium 成为一个纯粹的链下扩容协议,而不是在以太坊主链(例如 `calldata`)上发布状态数据的“混合”扩容协议(即[二层网络](/layer-2/))。 +与零知识卷叠不同,Validium 上的区块生产者不需要发布交易批次的交易数据(仅发布区块头)。 这使得 validium 成为一种纯粹的链下扩容协议,而不是“混合”扩容协议(即[二层网络](/layer-2/)),后者使用 blob 数据、calldata 或两者的组合在以太坊主链上发布状态数据。 ### 数据可用性 {#data-availability} -如上所述,Validium 利用一个链下数据可用性模型,运营商通过该模型将所有交易数据存储在以太坊主网之外。 Validium 的低链上数据足迹提升了可扩展性(吞吐量不受以太坊数据处理能力的限制),并降低了用户费用(发布 `calldata` 的成本降低)。 +如上所述,Validium 会使用链下数据可用性模型,而运营商通过该模型将所有交易数据存储在以太坊主网之外。 Validium 的低链上数据占用提高了可扩展性 (吞吐量不受以太坊数据处理能力的限制),并降低了用户费用 (在链上发布数据的成本更低)。 然而,链下数据可用性带来了一个问题:创建或验证默克尔证明所需的数据可能不可用。 这意味着如果运营商采取恶意行为,用户可能无法从链上合约中提取资金。 各种 Validium 解决方案试图通过以去中心化的方式存储状态数据来解决这个问题。 即,强制区块生产者将底层数据发送给“数据可用性管理器”,这些管理器负责存储链下数据并在用户请求时提供给用户。 -Validium 中的数据可用性管理器通过签署每个 Validium 批次来证明链下交易数据的可用性。 这些签名构成了一种“可用性证明”,链上验证者合约在批准状态更新之前对其进行检查。 +Validium 中的数据可用性管理器通过签署每个 Validium 批次来证明链下交易数据的可用性。 这些签名构成了一种“可用性证明”,而链上合约验证者在批准状态更新之前会对其进行检查。 Validium 的数据可用性管理方法不同。 一些依赖受信任方存储状态数据,而另一些则使用随机指定的验证者。 #### 数据可用性委员会 (DAC) {#data-availability-committee} -为了保证链下数据的可用性,一些 Validium 解决方案指定了一组受信任的实体(统称为数据可用性委员会 (DAC))来存储状态副本并提供数据可用性证明。 由于成员较少,数据可用性委员会更容易实施并且需要较少的协调。 +为了保证链下数据的可用性,一些 Validium 解决方案指定了一组受信任的实体,统称为数据可用性委员会 (DAC)来存储状态副本并提供数据可用性证明。 由于成员较少,数据可用性委员会更容易实施并且需要较少的协调。 -但是,用户必须信任数据可用性委员会,才能在需要时(例如用于生成默克尔证明)获得数据。 数据可用性委员会的成员有可能[被恶意行为者入侵](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view),然后会扣留链下数据。 +但是,用户必须信任数据可用性委员会,才能在需要时(例如用于生成默克尔证明)获得数据。 数据可用性委员会的成员有可能会[被恶意行为者攻破](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view),然后扣留链下数据。 -[更多关于 Validium 中数据可用性委员会的信息](https://medium.com/starkware/data-availability-e5564c416424)。 +[更多关于 validium 中的数据可用性委员会](https://medium.com/starkware/data-availability-e5564c416424)。 -#### 绑定数据可用性 {#bonded-data-availability} +#### 质押数据可用性 {#bonded-data-availability} 其他 Validium 要求负责存储离线数据的参与者在承担其角色之前在智能合约中质押(即锁定)代币。 这种质押作为“保证金”,保证数据可用性管理者之间采取的诚实行为并减少信任假设。 如果这些参与者不能证明数据的可用性,那么保证金就会被惩没。 -在绑定数据可用性方案中,任何人在提供要求的质押后,都可以指定其保存链下数据。 这扩大了合格数据可用性管理者池,削弱了对数据可用性委员会 (DAC) 造成影响的中心化。 更重要的是,这种方法依赖于加密经济激励措施防止恶意活动,这比指定受信任方在 Validium 中保护离线数据要安全得多。 +在联结数据可用性方案中,任何人在满足要求的质押后,都可能被指定保存链下数据。 这扩大了合格数据可用性管理者池,削弱了对数据可用性委员会 (DAC) 造成影响的中心化。 更重要的是,这种方法依赖于加密经济激励措施防止恶意活动,这比指定受信任方在 Validium 中保护离线数据要安全得多。 -[更多关于 Validium 中绑定数据可用性的信息](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)。 +[更多关于 validium 中的质押数据可用性](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)。 -## Volitions 和 Validium {#volitions-and-validium} +## Volition 和 validium {#volitions-and-validium} Validium 提供了诸多好处,但也进行了折衷(最值得注意的是数据可用性)。 但是,与许多扩容解决方案一样,Validium 适合特定的用例,这就是 Volitions 方案出现的原因。 -Volitions 结合了零知识卷叠和 Validium 链,它允许用户在两种扩容解决方案之间切换。 使用 Volitions,用户可以利用 Validium 的链下数据可用性进行某些交易,同时可以在需要时自由地切换到链上数据可用性解决方案(零知识卷叠)。 这实质上使用户可以根据他们的独特情况自由地进行权衡取舍。 +Volitions 结合了零知识卷叠和 Validium 链,它允许用户在两种扩容解决方案之间切换。 使用 Volitions,用户可以利用 Validium 的链下数据进行某些交易,同时可以在需要时自由地切换到链上数据可用性解决方案(零知识卷叠)。 这实质上使用户可以根据他们的独特情况自由地进行权衡取舍。 去中心化交易所 (DEX) 可能更喜欢使用 Validium 的可扩展和私有基础设施进行大额交易。 它还可以为需要零知识卷叠更高安全性保证和去信任性的用户使用零知识卷叠。 -## Validium 和以太坊虚拟机的兼容性 {#validiums-and-evm-compatibility} +## Validium 和 EVM 兼容性 {#validiums-and-evm-compatibility} -与零知识卷叠一样,Validium 最适合简单的应用,例如代币交换和支付。 鉴于在零知识证明线路中证明[以太坊虚拟机](/developers/docs/evm/)指令的开销很大,因此在 Validium 之间很难为通用计算和智能合约执行提供支持。 +与零知识卷叠一样,Validium 最适合简单的应用,例如代币交换和支付。 鉴于在零知识证明电路中证明[EVM](/developers/docs/evm/) 指令的开销相当大,在 validium 之间支持通用计算和智能合约执行是很难实现的。 一些 Validium 项目试图通过编译与以太坊虚拟机兼容的语言(例如 Solidity、Vyper)来生成针对高效证明而优化的自定义字节码,从而回避这个问题。 这种方法的一个缺点是零知识证明友好的新的虚拟机可能不支持重要的以太坊虚拟机操作码,而且开发者必须直接用高级语言编写才能获得最佳体验。 这带来了更多问题:它迫使开发者使用全新的开发堆栈构建去中心化应用程序,并破坏了与当前以太坊基础设施的兼容性。 -然而,一些团队正在尝试针对零知识证明线路优化现有以太坊虚拟机操作码。 这将导致零知识以太坊虚拟机 (zkEVM) 的开发,这是一种与以太坊虚拟机兼容的虚拟机,可生成验证程序是否正确执行的证明。 使用零知识以太坊虚拟机,Validium 链可以在链下执行智能合约并提交有效性证明,以便在以太坊上验证链下计算(无需重新执行)。 +然而,一些团队正在尝试针对零知识证明线路优化现有以太坊虚拟机操作码。 这将导致零知识以太坊虚拟机 (zkEVM) 的开发,这是一种与以太坊虚拟机兼容的虚拟机,可生成验证程序是否正确执行的证明。 使用零知识以太坊虚拟机,Validium 链可以在链下执行智能合约并提交有效性证明,以便在以太坊上验证链下计算结果(无需重新执行)。 -[更多关于零知识以太坊虚拟机的信息](https://www.alchemy.com/overviews/zkevm)。 +[更多关于 zkEVM](https://www.alchemy.com/overviews/zkevm)。 ## Validium 如何扩展以太坊? {#scaling-ethereum-with-validiums} -### 1. 链下数据存储 {#off-chain-data-storage} +### 1. 链下数据存储 {#offchain-data-storage} -二层网络扩容项目(例如乐观卷叠和零知识卷叠)通过将部分交易数据发布到一层网络,牺牲了纯链下扩容协议(例如 [Plasma](/developers/docs/scaling/plasma/))的无限可扩展性来换取安全性。 然而,这意味着卷叠的可扩展性属性受到以太坊主网上数据带宽的限制(因此,[数据分片](/roadmap/danksharding/)提议要提高以太坊的数据存储容量)。 +二层网络扩容项目(例如乐观卷叠和 ZK 卷叠)通过在 L1 上发布一些交易数据来换取安全性,从而牺牲了纯链下扩容协议(例如 [Plasma](/developers/docs/scaling/plasma/))的无限可扩展性。 但这意味着卷叠的可扩展性受限于以太坊主网的数据带宽(为此,[数据分片](/roadmap/danksharding/)旨在提高以太坊的数据存储容量)。 -Validium 实现了可扩展性,它将所有交易数据保存在链下并且在将状态更新传送到以太坊主链时仅发布状态承诺(和有效性证明)。 然而,有效性证明的存在为 Validium 提供了比其他纯链下扩容解决方案(包括 Plasma 和[侧链](/developers/docs/scaling/sidechains/))更高的安全保障。 通过减少以太坊在验证链下交易之前必须处理的数据量,Validium 设计极大地提升了主网上的吞吐量。 +Validium 实现了可扩展性。它将所有交易数据保存在链下并且在将状态更新传送到以太坊主链时仅发布状态承诺(和有效性证明)。 然而,有效性证明的存在,为 validium 提供了比其他纯链下扩容解决方案(包括 Plasma 和[侧链](/developers/docs/scaling/sidechains/))更高的安全保证。 通过减少以太坊在验证链下交易之前必须处理的数据量,Validium 极大地提升了主网的吞吐量。 ### 2. 递归证明 {#recursive-proofs} 递归证明是一种有效性证明,它验证其他证明的有效性。 这些“证明的证明”的生成方式如下:通过以递归方式聚合多个证明直到创建一个可验证所有先前证明的最终证明,即递归证明。 递归证明通过增加每个有效性证明可以验证的交易数量来提升区块链处理速度。 -通常,Validium 运营商提交到以太坊作验证用途的每个有效性证明都会验证单个区块的完整性。 而一个递归证明可用来同时确认几个 Validium 区块的有效性 — 这是可能的,因为证明线路能够以递归方式将几个区块证明聚合成一个最终证明。 如果链上验证者合约接受递归证明,则所有底层区块都会立即最终确定。 +通常,Validium 运营商提交到以太坊作验证用途的每个有效性证明都会验证单个区块的完整性。 而一个递归证明可用来同时确认几个 Validium 区块的有效性 — 这是可能的,因为证明线路能够以递归方式将几个区块证明聚合成一个最终证明。 如果链上验证者合约接受递归证明,则所有底层区块都会立即确定。 ## Validium 的优缺点 {#pros-and-cons-of-validium} -| 优点 | 缺点 | -| ---------------------------------- | --------------------------------------------------------- | -| 有效性证明强制验证链下交易的完整性,并阻止运营商最终定无效状态更新。 | 生成有效性证明需要使用专用硬件,这会带来中心化风险。 | -| 提高用户的资本效率(将资金提取回以太坊时不会出现延迟) | 对通用计算/智能合约的支持有限;开发需要专门语言。 | -| 在高价值应用中,不容易受到基于欺诈证明的系统所面临的某些经济攻击。 | 生成零知识证明需要强大的算力;对于低吞吐量的应用不具有成本效益。 | -| 通过不将调用数据发布到以太坊主网来降低用户的燃料费用。 | 较慢的主观最终确定性时间(生成零知识证明需要 10-30 分钟),但完全最终确定性要快一些,因为没有争议时间延迟。 | -| 适用于特定用例,例如优先考虑交易隐私和可扩展性的交易或区块链游戏。 | 可以防止用户提取资金,因为生成所有权的默克尔证明需要链下数据始终可用。 | -| 链下数据可用性提升了吞吐量并增强了可扩展性。 | 安全模型依赖于信任假设和加密经济激励措施,与完全依赖加密安全机制的零知识卷叠不同。 | +| 优点 | 缺点 | +| -------------------------------------- | --------------------------------------------------------- | +| 有效性证明强制验证链下交易的完整性,并阻止运营商出现最终状态更新无效的情况。 | 生成有效性证明需要使用专用硬件,这会带来中心化风险。 | +| 提高用户的资本效率(将资金提取回以太坊时不会出现延迟) | 对通用计算/智能合约的支持有限;开发需要专门语言。 | +| 在高价值应用中,不容易受到基于欺诈证明的系统所面临的某些经济攻击。 | 生成零知识证明需要强大的算力;对于低吞吐量的应用不具有成本效益。 | +| 通过不将调用数据发布到以太坊主网来降低用户的燃料费用。 | 较慢的主观最终确定性时间(生成零知识证明需要 10-30 分钟),但完全最终确定性要快一些,因为没有争议时间延迟。 | +| 适用于特定用例,例如优先考虑交易隐私和可扩展性的交易或区块链游戏。 | 由于生成 Merkle 所有权证明需要始终提供链下数据,因此可能会阻止用户提取资金。 | +| 链下数据可用性提升了吞吐量并增强了可扩展性。 | 安全模型依赖于信任假设和加密经济激励措施,与完全依赖加密安全机制的零知识卷叠不同。 | ### 使用 Validium/Volitions {#use-validium-and-volitions} 许多项目提供 Validium 和 Volitions 实现,你可以将它们集成到自己的去中心化应用程序中: -**StarkWare StarkEx** - _StarkEx 是基于有效性证明的以太坊二层网络 (L2) 可扩展性解决方案。 它可以在零知识卷叠或 Validium 数据可用性模式下运行。_ +**StarkWare StarkEx** - _StarkEx 是一种基于有效性证明的以太坊二层网络 (L2) 扩容解决方案。 它可以在 ZK-Rollup 或 Validium 数据可用性模式下运行。_ - [相关文档](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes#validium) - [网站](https://starkware.co/starkex/) -**Matter Labs zkPorter**- _zkPorter 是一个二层扩容协议,它用一种结合了零知识卷叠和分片观点的混合方法来处理数据可用性。 它支持任意多个分片,每个分片都有自己的数据可用性策略。_ +**Matter Labs zkPorter** - _zkPorter 是一种二层网络扩容协议,它通过结合 zkRollup 和分片的思想,采用混合方法处理数据可用性问题。 它能支持任意数量的分片,每个分片都有自己的数据可用性策略。_ - [博客](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf) - [相关文档](https://docs.zksync.io/zksync-protocol/rollup/data-availability) - [网站](https://zksync.io/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [Validium 和二层 2 x 2 矩阵 — 第 99 期](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two) -- [零知识卷叠与 Validium](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263) -- [Volition 与新兴数据可用性范围](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb) -- [Rollups、Validium 和 Volitions:了解最热门的以太坊扩容解决方案](https://www.defipulse.com/blog/rollups-validiums-and-volitions-learn-about-the-hottest-ethereum-scaling-solutions) +- [Validium 和二层网络二分法 — 第 99 期](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two) +- [ZK 卷叠与 Validium 的比较](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263) +- [Volition 和新兴的数据可用性范围](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb) +- [Rollup、Validium 和 Volition:了解最热门的以太坊扩容解决方案](https://www.defipulse.com/blog/rollups-validiums-and-volitions-learn-about-the-hottest-ethereum-scaling-solutions) +- [以太坊 Rollup 实用指南](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) From 22d0522e5f136668194b46a048751bda08be30c8 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:05 -0800 Subject: [PATCH 116/581] update(i18n): public/content/translations/zh/developers/docs/data-availability/index.md --- .../docs/data-availability/index.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/public/content/translations/zh/developers/docs/data-availability/index.md b/public/content/translations/zh/developers/docs/data-availability/index.md index df19a599b8e..82d0644709c 100644 --- a/public/content/translations/zh/developers/docs/data-availability/index.md +++ b/public/content/translations/zh/developers/docs/data-availability/index.md @@ -6,79 +6,79 @@ lang: zh “不信任,验证”是以太坊中通用的信条。 这种观念是指,你的节点可以通过执行从对等节点接收的区块中的所有交易来独立验证它收到的信息是正确的,以此来确保提议的更改与其独立计算出的更改完全一致。 这意味着节点无需相信区块的发送者是诚实的。 但如果数据遗失,就无法验证。 -**数据可用性**是指用户能够确信,验证区块所需的数据确实可供所有网络参与者使用。 对于在以太坊一层网络上的全节点来说,数据可用性相对简单;全节点下载每个区块中所有数据的副本 - 这些数据_必须_可用才能使下载得以进行。 数据缺失的区块将被丢弃,而不是添加进区块链。 这就是“链上数据可用性”,是单片式区块链的特征。 无法欺骗全节点让其接受无效交易,因为它们自己下载并执行所有交易。 然而,对于模块化区块链、二层网络卷叠和轻客户端来说,数据可用性局面更加复杂,需要更加复杂的验证程序。 +**数据可用性**是指用户能够确信,验证区块所需的数据确实可供所有网络参与者使用。 对于以太坊 Layer 1 上的全节点来说,这相对简单;全节点会下载每个区块中所有数据的副本——数据_必须_可用,下载才可能进行。 数据缺失的区块将被丢弃,而不是添加进区块链。 这就是”链上数据可用性“,是单片式区块链的特征。 无法欺骗全节点让其接受无效交易,因为它们自己下载并执行所有交易。 然而,对于模块化区块链、二层网络卷叠和轻客户端来说,数据可用性局面更加复杂,需要更加复杂的验证程序。 -## 前言 {#prerequisites} +## 前提条件 {#prerequisites} -你应该很好地理解[区块链基础知识](/developers/docs/intro-to-ethereum/),尤其是[共识机制](/developers/docs/consensus-mechanisms/)。 本页面还假设读者熟悉[区块](/developers/docs/blocks/)、[交易](/developers/docs/transactions/)、[节点](/developers/docs/nodes-and-clients/)、[扩容解决方案](/developers/docs/scaling/)和其他相关主题。 +你应该对[区块链基础知识](/developers/docs/intro-to-ethereum/)有很好的了解,尤其是[共识机制](/developers/docs/consensus-mechanisms/)。 本页面还假设读者熟悉[区块](/developers/docs/blocks/)、[交易](/developers/docs/transactions/)、[节点](/developers/docs/nodes-and-clients/)、[扩容解决方案](/developers/docs/scaling/)及其他相关主题。 ## 数据可用性问题 {#the-data-availability-problem} 数据可用性问题是指,需要向整个网络证明正在被添加到区块链中的某些汇总交易数据确实代表一组有效的交易,但在证明时不需要所有节点下载所有数据。 完整的交易数据是独立验证块所必需的,但要求所有节点下载所有交易数据是对扩容的阻碍。 解决数据可用性问题的目的是充分保证,自己不下载和存储数据的网络参与者可以使用全部交易数据进行验证。 -对于需要可靠的数据可用性保障但无法自己下载和处理交易数据的网络参与者,[轻节点](/developers/docs/nodes-and-clients/light-clients)和[二层网络卷叠](/developers/docs/scaling)是两个重要示例。 无需下载交易数据是轻节点之所以轻量并让卷叠成为有效扩容解决方案的原因。 +[轻节点](/developers/docs/nodes-and-clients/light-clients)和 [Layer 2 卷叠](/developers/docs/scaling)是重要的网络参与者示例,它们需要强大的数据可用性保证,但无法自行下载和处理交易数据。 无需下载交易数据是轻节点之所以轻量并让卷叠成为有效扩容解决方案的原因。 -对于无需下载并存储数据以验证区块的未来[“无状态”](/roadmap/statelessness)以太坊客户端,数据可用性也是一个重要关切点。 无状态客户端仍需要确认数据_在某处_可用并且已被正确处理。 +数据可用性对于未来的["无状态"](/roadmap/statelessness)以太坊客户端来说也是一个关键问题,这些客户端无需下载和存储状态数据即可验证区块。 无状态客户端仍需要确定数据_在某个地方_是可用的,并且已被正确处理。 ## 数据可用性解决方案 {#data-availability-solutions} ### 数据可用性采样 (DAS) {#data-availability-sampling} -数据可用性采样 (DAS) 是网络在不给任何单个节点带来过多压力的情况下检查数据是否可用的一种方法。 每个节点(包括非质押节点)下载全部数据中随机选择的数据小子集。 成功地下载样本便可以非常肯定地确认所有数据都是可用的。 这依赖于数据纠删码,即用冗余信息扩展给定的数据集(实现方法是将一个称为_多项式_的函数与数据拟合,并在额外的点上对该多项式进行评估)。 这样可以在必要时从冗余数据中恢复原始数据。 这种数据创建的结果是,如果原始数据中的_任何_部分不可用,那么_一半_的扩展数据将丢失! 每个节点下载的数据样本量可以进行调整,以便_在_实际上不到一半的数据可用时,每个客户端采样的数据片段_极有可能_至少缺失一个。 +数据可用性采样 (DAS) 是网络在不给任何单个节点带来过多压力的情况下检查数据是否可用的一种方法。 每个节点(包括非质押节点)下载全部数据中随机选择的数据小子集。 成功地下载样本便可以非常肯定地确认所有数据都是可用的。 这依赖于数据纠删码,它用冗余信息来扩展给定的数据集(实现方法是将一个称为_多项式_的函数与数据拟合,并在额外的点上对该多项式进行评估)。 这样可以在必要时从冗余数据中恢复原始数据。 这种数据创建的一个后果是,如果_任何_原始数据不可用,那么扩展数据中的_一半_将会丢失! 每个节点下载的数据样本量可以调整,这样_如果_实际可用的数据不足一半,那么每个客户端采样的数据片段就_极有_可能至少会丢失一个。 -DAS 将用于确保汇总运营商在实施[完整 Danksharding](/roadmap/danksharding/#what-is-danksharding) 后提供其交易数据。 以太坊节点将使用上述冗余方案,随机采样二进制大对象中提供的交易数据,以确保所有数据都存在。 同样的技术也可用于确保区块生产者让将其所有数据可用,以保护轻客户端的安全。 同样,在[提议者-构建者分离](/roadmap/pbs)的情况下,只要求区块构建者处理整个区块,其他验证者将使用数据可用性采样进行验证。 +在[完整 Danksharding](/roadmap/danksharding/#what-is-danksharding) 实施后,DAS 将用于确保卷叠运营方公布其交易数据。 以太坊节点将使用上述冗余方案,随机采样二进制大对象中提供的交易数据,以确保所有数据都存在。 同样的技术也可用于确保区块生产者让将其所有数据可用,以保护轻客户端的安全。 同样,在[提议者-构建者分离](/roadmap/pbs)下,只需要区块构建者处理整个区块——其他验证者将使用数据可用性采样进行验证。 ### 数据可用性委员会 {#data-availability-committees} -数据可用性委员会 (DAC) 是提供或证明数据可用性的可信参与方。 可以使用数据可用性委员会而非数据可用性采样,或者可以[两者结合](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS)使用。 数据可用性委员会提供的安全保证取决于具体设置。 例如,以太坊使用随机抽样的验证者子集来证明轻节点的数据可用性。 +数据可用性委员会 (DAC) 是提供或证明数据可用性的可信参与方。 数据可用性委员会 (DAC) 可以替代 DAS,[或与](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) DAS 结合使用。 数据可用性委员会提供的安全保证取决于具体设置。 例如,以太坊使用随机抽样的验证者子集来证明轻节点的数据可用性。 一些 Validium 也使用数据可用性委员会。 数据可用性委员会是一组可信节点,它们在线下存储数据副本。 在出现争议时,需要通过数据可用性委员会来确保数据可用。 数据可用性委员会的成员还需要发布链上认证来证明这些数据确实是可用的。 有些 Validium 使用权益证明 (PoS) 验证者系统代替数据可用性委员会。 在该系统中,任何人都能成为验证者并在链下存储数据。 然而,他们必须提供“保证金”,并且保证金存入到智能合约中。 在发生恶意行为时,例如验证者隐藏数据,保证金会被罚没。 权益证明数据可用性委员会在安全性方面明显优于一般数据可用性委员,因为它们直接激励诚实的行为。 -## 数据可用性与轻节点 {#data-availability-and-light-nodes} +## 数据可用性和轻节点 {#data-availability-and-light-nodes} -[轻节点](/developers/docs/nodes-and-clients/light-clients)需要验证收到的区块头的正确性,不用下载区块数据。 轻节点轻量化的代价就是无法像全节点那样在本地独立地重新执行交易以验证区块头。 +[轻节点](/developers/docs/nodes-and-clients/light-clients)需要验证所接收区块头的正确性,而无需下载区块数据。 轻节点轻量化的代价就是无法像全节点那样在本地独立地重新执行交易以验证区块头。 -以太坊轻节点信任由 512 个验证者组成的随机验证者组,该验证者组被分配到一个_同步委员会_。 同步委员会充当数据可用性委员会,使用加密签名向轻节点表明区块头中的数据是正确的。 同步委员会每天都刷新。 每个区块头都提醒轻节点哪些验证者应签核_下一个_区块,这样轻节点就不会被骗相信假装成真正同步委员会的恶意小组。 +以太坊轻节点信任由 512 个验证者组成的随机集合,这些验证者被分配到一个_同步委员会_。 同步委员会充当数据可用性委员会,使用加密签名向轻节点表明区块头中的数据是正确的。 同步委员会每天都刷新。 每个区块头都会提醒轻节点,预期哪些验证者会签发_下一个_区块,这样它们就不会被骗去信任一个冒充真实同步委员会的恶意团体。 -但是,如果攻击者_确实_想方设法向轻节点传输了恶意区块头,并使轻节点相信它是由诚实的同步委员会签核的,会发生什么? 在这种情况下,攻击者可能会添加无效的交易,而轻节点将会盲目地接受它们,因为轻节点无法独立验证汇总在区块头中的所有状态变化。 为了防止这种情况,轻节点可以使用欺诈证明。 +但是,如果攻击者_确实_设法将恶意区块头传递给轻客户端,并使他们相信该区块头是由诚实的同步委员会签署的,会发生什么? 在这种情况下,攻击者可能会添加无效的交易,而轻节点将会盲目地接受它们,因为轻节点无法独立验证汇总在区块头中的所有状态变化。 为了防止这种情况,轻节点可以使用欺诈证明。 欺诈证明的工作原理如下:全节点发现一个无效状态转换在网络上广播时,可以快速生成证明已提议状态转换不可能源自给定一组交易的一小段数据,并把这段数据广播到对等节点。 轻节点可以选取这些欺诈证明并用来丢弃有害的区块头,确保它们和全节点留在相同的诚实区块链上。 这仰仗于全节点能够访问完整的交易数据。 广播有害区块头并且不提供交易数据的攻击者可能能够阻止全节点生成欺诈证明。 全节点也许可以发出关于有害区块的警告,但没有证据来证明它们的警告,因为没有可用于生成证明据的数据! -数据可用性采样可以解决这个数据可用性问题。 轻节点下载完整状态数据的小随机片段,并使用这些样本验证完整数据集可用。 在下载 N 个随机片段后,对完整数据的可用性做出错误估计的真实可能性是可以计算的([如果是 100 个数据片段,则概率是 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html),也就是说几乎不可能)。 +数据可用性采样可以解决这个数据可用性问题。 轻节点下载完整状态数据的小随机片段,并使用这些样本验证完整数据集可用。 在下载 N 个随机数据块后错误地假定数据完全可用的实际可能性是可以计算的([下载 100 个数据块的概率为 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html),即极不可能)。 即使出现错误估计,仅仅隐藏几个字节的攻击,可能不会被发出随机数据请求的客户端所察觉。 纠删码通过重建丢失的小数据片段来解决这个问题,这些数据片段可用来检查提议的状态变化。 然后,可以使用重建的数据构建欺诈证明,防止轻节点接受有害的区块头。 -**注意:**数据可用性采样和欺诈证明尚未在权益证明以太坊轻客户端上实现,但它们已经在规划中,很可能采取基于 ZK-SNARK 证明的形式。 目前,轻客户端依赖于一种数据可用性委员会:它们验证同步委员会的身份,然后信任接收到的已签名区块头。 +\*\*注意:\*\*数据可用性采样 (DAS) 和欺诈证明尚未为权益证明以太坊轻客户端实现,但它们已在路线图上,很可能采取基于 ZK-SNARK 的证明形式。 目前,轻客户端依赖于一种数据可用性委员会:它们验证同步委员会的身份,然后信任接收到的已签名区块头。 ## 数据可用性和二层网络卷叠 {#data-availability-and-layer-2-rollups} -[二层网络扩容方案](/layer-2/)(例如[卷叠](/glossary/#rollups))通过在链下处理交易减少交易费用并增加以太坊的吞吐量。 卷叠交易是分批次压缩并发布到以太坊上。 批次表示将成千上万单个链下交易打包到以太坊上的单个交易中。 这减少了基础层的拥塞并降低了用户费用。 +[二层网络扩容解决方案](/layer-2/),例如[卷叠](/glossary/#rollups),通过在链下处理交易来降低交易成本并提高以太坊的吞吐量。 卷叠交易是分批次压缩并发布到以太坊上。 批次表示将成千上万单个链下交易打包到以太坊上的单个交易中。 这减少了基础层的拥塞并降低了用户费用。 然而,只有提议的状态变化可被独立验证并确认是应用所有单独链下交易的结果时,才能信任发布到以太坊上的“汇总”交易。 如果卷叠运营者不提供进行此验证所需的交易数据,那么它们可以将不正确的数据发送至以太坊。 -[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)将压缩交易数据发布到以太坊并等待一定时间(通常为 7 天),以便独立验证者检查数据。 如果有任何验证者发现问题,它们可以生成欺诈证明并用来质疑卷叠。 这将导致链回滚并丢弃无效区块。 只有在数据可用时,才能实现这一点。 目前,乐观卷叠有两种方式将交易数据发布到一层网络。 有些卷叠使数据以 `CALLDATA` 的形式永久可用,并永久存在于链上。 随着 EIP-4844 的实施,一些卷叠将其交易数据发布到更便宜的二进制大对象存储中。 它不是永久存储。 独立验证者必须在数据从以太坊第 1 层删除之前约 18 天内查询二进制大对象并提出挑战。 通过以太坊协议,数据可用性仅在一个短暂的固定窗口期内得到保证。 此后,数据可用性成为以太坊生态系统中其他实体的责任。 任何节点都可以使用数据可用性采样来验证数据可用性,即下载二进制大对象数据的随机小样本。 +[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)将压缩后的交易数据发布到以太坊,并等待一段时间(通常为 7 天),以允许独立验证者检查数据。 如果有任何验证者发现问题,它们可以生成欺诈证明并用来质疑卷叠。 这将导致链回滚并丢弃无效区块。 只有在数据可用时,才能实现这一点。 目前,乐观卷叠有两种方式将交易数据发布到一层网络。 一些卷叠以 `CALLDATA` 的形式使数据永久可用,这些数据永久存在于链上。 随着 EIP-4844 的实施,一些卷叠将其交易数据发布到更便宜的二进制大对象存储中。 它不是永久存储。 独立验证者必须在数据从以太坊第 1 层删除之前约 18 天内查询二进制大对象并提出挑战。 通过以太坊协议,数据可用性仅在一个短暂的固定窗口期内得到保证。 此后,数据可用性成为以太坊生态系统中其他实体的责任。 任何节点都可以使用 DAS 验证数据可用性,即通过下载 blob 数据的小型随机样本。 -[零知识 (ZK) 卷叠](/developers/docs/scaling/zk-rollups)无需发布交易数据,因为[零知识有效性证明](/glossary/#zk-proof)可保证状态转换的正确性。 然而,数据可用性依然是一个问题,因为在不访问其状态数据的情况下我们无法担保零知识卷叠的功能(或与之交互)。 例如,如果运营者隐瞒了卷叠状态的细节,用户就无法知道自己的余额。 而且,用户也不能使用新添加区块中的信息来执行状态更新。 +[零知识 (ZK) 卷叠](/developers/docs/scaling/zk-rollups)不需要发布交易数据,因为[零知识有效性证明](/glossary/#zk-proof)保证了状态转换的正确性。 然而,数据可用性依然是一个问题,因为在不访问其状态数据的情况下我们无法担保零知识卷叠的功能(或与之交互)。 例如,如果运营者隐瞒了卷叠状态的细节,用户就无法知道自己的余额。 而且,用户也不能使用新添加区块中的信息来执行状态更新。 ## 数据可用性与数据可检索性 {#data-availability-vs-data-retrievability} 数据可用性不同于数据可检索性。 数据可用性是一种保障,它确保全节点能够访问和验证与某个特定区块相关的全部交易。 然而,数据也不见得始终可以访问。 -数据可检索性是指节点从区块链中检索_历史信息_的能力。 验证新区块不需要此历史数据,历史数据仅用于将全节点与创世区块同步或者满足具体的历史数据请求。 +数据可检索性是节点从区块链中检索_历史信息_的能力。 验证新区块不需要此历史数据,历史数据仅用于将全节点与创世区块同步或者满足具体的历史数据请求。 -核心以太坊协议主要涉及数据可用性,而不是数据可检索性。 数据可检索性可由第三方管理的少数归档节点提供,或者可以通过去中心化文件存储(如 [Portal Network](https://www.ethportal.net/))来分散到整个网络。 +核心以太坊协议主要涉及数据可用性,而不是数据可检索性。 数据可检索性可以由第三方运行的少量存档节点提供,也可以使用去中心化文件存储(例如 [Portal Network](https://www.ethportal.net/))分布在整个网络中。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [到底什么是数据可用性?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f) -- [什么是数据可用性?](https://coinmarketcap.com/alexandria/article/what-is-data-availability) -- [以太坊链下数据可用性概况](https://blog.celestia.org/ethereum-off-chain-data-availability-landscape/) -- [数据可用性检查入门知识](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html) -- [分片 + 数据可用性委员会提案释义](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling) +- [什么是数据可用性?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f) +- [什么是数据可用性?](https://coinmarketcap.com/academy/article/what-is-data-availability) +- [数据可用性检查入门](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html) +- [分片 + DAS 提案解说](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling) - [关于数据可用性和纠删码的说明](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#can-an-attacker-not-circumvent-this-scheme-by-releasing-a-full-unavailable-block-but-then-only-releasing-individual-bits-of-data-as-clients-query-for-them) - [数据可用性委员会。](https://medium.com/starkware/data-availability-e5564c416424) - [权益证明数据可用性委员会。](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf) - [数据可检索性问题的解决方案](https://notes.ethereum.org/@vbuterin/data_sharding_roadmap#Who-would-store-historical-data-under-sharding) -- [数据可用性或:卷叠如何学会停止担忧并爱上以太坊](https://ethereum2077.substack.com/p/data-availability-in-ethereum-rollups) +- [数据可用性,或:卷叠如何学会不再担忧并爱上以太坊](https://web.archive.org/web/20250515194659/https://web.archive.org/web/20241108192208/https://research.2077.xyz/data-availability-or-how-rollups-learned-to-stop-worrying-and-love-ethereum) +- [EIP-7623:增加 Calldata 成本](https://web.archive.org/web/20250515194659/https://research.2077.xyz/eip-7623-increase-calldata-cost) From 21e1c1fd24bd503e60bc17d41d4a6c4f01c1e7e7 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:09 -0800 Subject: [PATCH 117/581] update(i18n): public/content/translations/zh/zero-knowledge-proofs/index.md --- .../zh/zero-knowledge-proofs/index.md | 142 ++++++++++-------- 1 file changed, 83 insertions(+), 59 deletions(-) diff --git a/public/content/translations/zh/zero-knowledge-proofs/index.md b/public/content/translations/zh/zero-knowledge-proofs/index.md index 7bab93aac70..a9b7485c816 100644 --- a/public/content/translations/zh/zero-knowledge-proofs/index.md +++ b/public/content/translations/zh/zero-knowledge-proofs/index.md @@ -1,6 +1,6 @@ --- title: 零知识证明 -description: 面向初学者的非技术性零知识证明介绍 +description: 面向初学者的非技术性零知识证明介绍。 lang: zh --- @@ -8,9 +8,9 @@ lang: zh 零知识证明是能够在不披露声明本身的情况下,验证声明有效性的一种方法。 “证明者”是试图证明声明的一方,而“验证者”则负责验证声明。 -零知识证明在 1985 年的一篇论文“[交互式证明系统的知识复杂度](http://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf)”中被首次提出,它给出了至今仍被广泛使用的零知识证明的定义: +零知识证明首次出现于 1985 年的论文《[The knowledge complexity of interactive proof systems](http://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf)》中,该论文为当今广泛使用的零知识证明提供了定义: -> 零知识协议是一种方法,通过这种方法,一方(证明者)可以向另一方(验证者)**证明**某个声明是真实的,并且除了该声明是真实的外,**不会透露任何额外信息**。 +> 零知识协议是一种方法,一方(证明者)可以通过该方法向另一方(验证者)**证明**某事为真,但除了该特定声明为真之外,**不透露任何信息**。 多年来,零知识证明一直在发展,目前已经在现实世界中得到应用。 @@ -22,7 +22,7 @@ lang: zh 但这种方法存在问题,主要是缺乏隐私。 与第三方服务商共享的个人身份信息 (PII) 储存在中心化数据库中,这些数据库很容易受到黑客攻击。 随着身份盗用成为一个严峻问题,人们呼吁采用更能保护隐私的方式来分享敏感信息。 -**通过在不透露相关信息的情况下证明声明的有效性**,零知识证明解决了这个问题。 零知识协议使用声明(称为“证人”)作为输入,然后生成一个其有效性的简要证明。 这种证明有力地保证一项声明是真实的,且不透露创建声明时所使用的信息。 +零知识证明通过**消除为证明声明有效性而透露信息的需求**来解决这个问题。 零知识协议使用声明(称为“证人”)作为输入,然后生成一个其有效性的简要证明。 这种证明有力地保证一项声明是真实的,且不透露创建声明时所使用的信息。 回到我们前面的例子,你只需要提供零知识证明即可证明你的公民身份声明。 验证者只需要检查证明中的一些属性是否属实,从而确认背后声明的真实性。 @@ -32,21 +32,44 @@ lang: zh 信用卡支付通常对多方可见,包括支付服务提供商、银行和其他相关方(比如政府部门)。 金融监管有助于识别非法活动,但同时也会损害普通民众的隐私。 -加密货币旨在为用户提供一种私密的、点对点的交易手段。 但是大部分加密货币的交易在区块链上是公开可见的。 用户身份通常是匿名的,但也可以主动跟现实世界的身份相关联(例如在 Twitter 或 GitHub 的个人资料上包含以太坊地址),又或者能够利用一些基本的链上或脱链数据分析来与现实世界的身份进行关联。 +加密货币旨在为用户提供一种私密的、点对点的交易手段。 但是大部分加密货币的交易在区块链上是公开可见的。 用户身份通常是假名的,可以通过在 Twitter 或 GitHub 个人资料中包含 ETH 地址等方式有意地与真实世界身份相关联,也可以使用基本的链上和脱链数据分析与真实世界身份相关联。 有一些专门为完全匿名交易设计的“隐私币”。 注重隐私的区块链,例如 Zcash 和 Monero,它们会屏蔽交易细节,包括发送人和接收人的地址、资产类型、数量和交易时间线。 -通过在协议中加入零知识技术,注重隐私的[区块链](/glossary/#blockchain)网络允许[节点](/glossary/#node)在无需访问交易数据的情况下验证交易。 +通过在协议中内置零知识技术,注重隐私的[区块链](/glossary/#blockchain)网络允许[节点](/glossary/#node)验证交易,而无需访问交易数据。 [EIP-7503](https://eips.ethereum.org/EIPS/eip-7503) 是一个提案设计示例,它将支持在以太坊区块链上进行原生隐私价值转移。 然而,由于安全、监管和用户体验等方面的考虑,这些提议难以实现。 -**零知识证明也用于在公共区块链上对交易进行匿名处理**。 其中一个例子是 Tornado Cash,它是一个去中心化的非托管服务,允许用户在以太坊上进行私密交易。 Tornado Cash 使用零知识证明来模糊化交易细节和保证金融隐私。 不幸的是,由于这些是“主动选择加入”的隐私工具,它们与非法活动有关。 为了克服这个问题,隐私最终也必须要成为公开区块链的默认项。 +**零知识证明也被应用于公有区块链上的交易匿名化**。 其中一个例子是 Tornado Cash,它是一个去中心化的非托管服务,允许用户在以太坊上进行私密交易。 Tornado Cash 使用零知识证明来模糊化交易细节和保证金融隐私。 不幸的是,由于这些是“主动选择加入”的隐私工具,它们与非法活动有关。 为了克服这个问题,隐私最终也必须要成为公开区块链的默认项。 了解更多关于[以太坊上的隐私](/privacy/)。 ### 身份保护 {#identity-protection} 目前的身份管理系统让个人信息面临风险。 零知识证明能帮助个人验证身份,同时保护敏感细节。 -零知识证明在[去中心化身份](/decentralized-identity/)中特别有用。 去中心化身份(又称为“自主身份”)让个人可以控制私人身份信息的访问。 在不透露税号或护照细节的情况下,证明你的公民身份就是一个用零知识技术实现去中心化身份的好例子。 +在[去中心化身份](/decentralized-identity/)的背景下,零知识证明尤其有用。 去中心化身份(又称为“自主身份”)让个人可以控制私人身份信息的访问。 在不透露税号或护照细节的情况下,证明你的公民身份就是一个用零知识技术实现去中心化身份的好例子。 -### 认证 {#authentication} + + + + + ZKP + 身份实践:基于以太坊的不丹国家数字身份 (NDI) + + +

                                + 在身份管理系统中使用 ZKP 的一个真实世界示例是基于以太坊构建的不丹王国国家数字身份 (NDI) 系统。 不丹的 NDI 使用 ZKP,允许公民以加密方式证明关于自己的事实,例如“我是一名公民”或“我已年满 18 岁”,而无需透露其身份证件上的敏感个人数据。 +

                                +

                                + 在去中心化身份案例研究中了解有关不丹 NDI 的更多信息。 +

                                +
                                +
                                +
                                + +### 人性证明 {#proof-of-humanity} + +当今实际应用的零知识证明最广泛的例子之一是 [World ID 协议](https://world.org/blog/world/world-id-faqs),它可以被认为是“人工智能时代的全球数字护照”。 人们证明自己是独特的个体,而无需透露个人信息。 这是通过一种Orb的设备而实现的, 该设备可以扫描人的虹膜并生成虹膜代码。 通过检查和验证虹膜编码来确认此人是独一无二的人类个体 验证完成后,在用户设备上生成的身份承诺(承诺本身不包含可识别的个人生物信息 )会被添加到区块链上的安全列表中 之后,每当用户想要证明自己是经过验证的人类——无论是登录、投票还是执行其他操作——他们都可以生成一个零知识证明,以确认自己在该安全列表中的成员身份。 使用零知识证明的优势在于,只揭示一个信息:被验证人的唯一性。 其余一切都保持私密 + +World ID 依赖于由以太坊基金会的 [PSE 团队](https://pse.dev/)开发的 [Semaphore 协议](https://docs.semaphore.pse.dev/)。 Semaphore 是一个设计轻盈但功能强大的生成和验证零知识证明的方法。 它允许用户证明自己属于某个群体(在此例中为经过验证的人类),而无需透露自己在群体中的具体身份。 Semaphore 还具有高度的灵活性,允许基于各种标准创建群体,例如身份验证、参与活动或拥有特定凭证。 + +### 身份验证 {#authentication} 使用在线服务需要证明你的身份和访问这些平台的权利。 这通常需要提供个人信息,比如姓名、邮箱地址、出生日期等等。 你可能需要记住长长的密码,也需要承担无法访问的风险。 @@ -56,11 +79,11 @@ lang: zh 可验证计算是零知识技术用于改进区块链设计的另一种应用。 可验证计算允许我们将计算外包给另一个实体,同时保留可验证的计算结果。 该实体将计算结果和验证程序被正确执行的证据一起提交。 -可验证计算对于在不降低安全性的前提下**提高区块链上的处理速度非常重要**。 要明白这一点,需要知道拟议的以太坊扩容解决方案之间的差异。 +在不降低安全性的前提下,可验证计算**对于提高区块链的处理速度至关重要**。 要明白这一点,需要知道拟议的以太坊扩容解决方案之间的差异。 -[链上扩容方案](/developers/docs/scaling/#on-chain-scaling),例如分片,需要对区块链的基础层进行大量修改。 然而,这种方法非常复杂,如果在实现过程中出错,则会危害以太坊的安全模型。 +[链上扩容方案](/developers/docs/scaling/#onchain-scaling)(例如分片)需要对区块链的基础层进行大量修改。 然而,这种方法非常复杂,如果在实现过程中出错,则会危害以太坊的安全模型。 -[脱链扩容解决方案](/developers/docs/scaling/#off-chain-scaling)无需重新设计以太坊的核心协议。 相反,它们依靠外包计算模型来提高以太坊基础层的吞吐量。 +[脱链扩容方案](/developers/docs/scaling/#offchain-scaling)不需要重新设计核心以太坊协议。 相反,它们依靠外包计算模型来提高以太坊基础层的吞吐量。 以下是实际运作过程: @@ -72,45 +95,45 @@ lang: zh 链上需要一种方法来验证脱链交易,而无需重新执行它们,不然脱链执行就失去它的价值。 -这就是可验证计算发挥作用的地方。 当一个节点在以太坊外执行交易时,它提交一个零知识证明来证明脱链执行的正确性。 这个证明(称为[有效性证明](/glossary/#validity-proof))保证了一个交易是有效的,允许以太坊把结果应用到状态中 — 无需等待任何人提出异议。 +这就是可验证计算发挥作用的地方。 当一个节点在以太坊外执行交易时,它提交一个零知识证明来证明脱链执行的正确性。 这个证明(称为[有效性证明](/glossary/#validity-proof))保证了交易的有效性,允许以太坊将其结果应用到其状态中,而无需等待任何人提出异议。 -[零知识卷叠](/developers/docs/scaling/zk-rollups)和 [Validium](/developers/docs/scaling/validium/) 是两个脱链扩容的解决方案,它们使用有效性证明来提供安全的可扩容性。 这些协议执行了数以千计的脱链交易,并提交了用于以太坊验证的证明。 一旦证明被验证,这些结果就会被立即应用,它允许以太坊在不增加基础层计算量的情况下处理更多的交易。 +[零知识卷叠](/developers/docs/scaling/zk-rollups)和 [validiums](/developers/docs/scaling/validium/) 是两种使用有效性证明来提供安全可扩展性的脱链扩容解决方案。 这些协议执行了数以千计的脱链交易,并提交了用于以太坊验证的证明。 一旦证明被验证,这些结果就会被立即应用,它允许以太坊在不增加基础层计算量的情况下处理更多的交易。 ### 减少链上投票中的贿赂和串通 {#secure-blockchain-voting} -区块链投票方案有很多有利的特点:它们是完全可审计的、安全抗攻击、抗审查以及不受地域限制。 但即使是链上投票方案也难以避免**串通**问题。 +区块链投票方案有很多有利的特点:它们是完全可审计的、安全抗攻击、抗审查以及不受地域限制。 但即使是链上投票方案也无法避免**串通**问题。 -串通的定义是"通过欺骗、诈骗和误导他人来协调,达到限制公开竞争的目的",串通的形式可能是恶意行为者通过行贿来影响投票。 例如,Alice 可能收到 Bob 的贿赂,让她在选票上投给`选项 B`,即使她更倾向于`选项 A`。 +串通的定义是"通过欺骗、诈骗和误导他人来协调,达到限制公开竞争的目的",串通的形式可能是恶意行为者通过行贿来影响投票。 例如,Alice 可能会收受 Bob 的贿赂,在选票上投票给 `option B`,即使她更喜欢 `option A`。 贿赂和串通限制了任何以投票作为信号机制的过程的有效性(特别是在用户可以证明他们如何投票的情况下)。 这可能会产生重大影响,特别是在通过投票来分配稀缺资源的情况下。 -例如,[二次融资机制](https://www.radicalxchange.org/concepts/plural-funding/)根据捐款来衡量对不同公益项目中某些选项的偏好。 每笔捐款都算作对某一特定项目的“投票”,获得更多投票的项目将从匹配资金池中获得更多资金。 +例如,[二次方募资机制](https://www.radicalxchange.org/wiki/plural-funding/)依靠捐赠来衡量不同公益项目中某些选项的偏好。 每笔捐款都算作对某一特定项目的“投票”,获得更多投票的项目将从匹配资金池中获得更多资金。 使用链上投票使得二次融资容易受到串通的影响:区块链交易是公开的,所以行贿者可以检查受贿者的链上活动,看他们是如何“投票”的。 这种方式使得二次融资不再是一个根据社区的集体偏好来分配资金的有效手段。 -幸运的是,更新的解决方案,例如 MACI(最低限度的反串通基础设施),正在使用零知识证明来让链上投票(例如二次融资机制)能够抵制贿赂和串通。 MACI 是一个智能合约和脚本的集合,它允许中央管理员(称为“协调员”)汇总票数和统计结果,_无需_暴露每个人是如何投票的。 即便如此,仍然可以验证投票是否被正确计数,或确认某个人参加了该轮的投票。 +幸运的是,诸如 MACI(最低反串通基础设施)等较新的解决方案正在使用零知识证明,使链上投票(例如,二次方募资机制)能够抵制贿赂和串通。 MACI 是一套智能合约和脚本,允许中央管理员(称为“协调员”)汇总投票和统计结果,_而无需_透露每个人的具体投票方式。 即便如此,仍然可以验证投票是否被正确计数,或确认某个人参加了该轮的投票。 #### MACI 是如何与零知识证明协作的? {#how-maci-works-with-zk-proofs} 一开始,协调员在以太坊部署 MACI 合约,之后用户就可以注册投票(通过把它们的公钥注册到智能合约上)。 用户通过发送经公钥加密后的信息给智能合约来完成投票(一个有效投票必须使用与用户身份关联的最新公钥来签名,另外还有其他标准)。 然后,协调员在投票期结束后处理所有的信息,统计票数,在链上验证结果。 -在 MACI 中,零知识证明用来确保计算的正确性,避免协调员错误地处理投票和汇总结果。 这是通过要求协调员生成零知识简洁非交互式知识论证证明来实现的,验证 a) 所有的信息都被正确处理 b) 最后的结果与所有_有效_投票总和对应。 +在 MACI 中,零知识证明用来确保计算的正确性,避免协调员错误地处理投票和汇总结果。 这是通过要求协调员生成 ZK-SNARK 证明来验证 a) 所有消息都已正确处理 b) 最终结果与所有_有效_投票的总和相对应来实现的。 因此,即便没有分享每个用户的投票明细(通常是这样的),MACI 也能保证计算过程中计算结果的完整性。 这一特点有助于减少基本的串通方案的有效性。 通过之前 Bob 贿赂 Alice 来给某个选项投票的例子,我们可以探索这种可能性: - Alice 通过发送她的公钥到智能合约来注册投票。 -- Alice 同意投票给`选项 B`,以此来换取 Bob 的贿赂。 -- Alice 投票给`选项 B`。 +- Alice 同意投票给 `option B`,以换取 Bob 的贿赂。 +- Alice 投票给 `option B`。 - Alice 偷偷发送一个加密交易来更改与她身份关联的公钥。 -- Alice 发送另一个(加密的)消息到智能合约,使用新的公钥给`选项 A` 投票。 -- Alice 向 Bob 展示交易,显示她已经投票给了`选项 B`(投票是无效的,因为最初的那个公钥在系统中已经不再跟 Alice 的身份关联)。 -- 在处理消息时,协调员跳过 Alice 投给`选项 B` 的选票,只把`选项 A` 的投票纳入计数。 因此,Bob 串通 Alice 和操纵链上投票的意图失败了。 +- Alice 使用新的公钥向智能合约发送另一条(加密)消息,投票给 `option A`。 +- Alice 向 Bob 展示了一笔交易,表明她投票给了 `option B`(该投票无效,因为该公钥在系统中已不再与 Alice 的身份相关联) +- 在处理消息时,协调员会跳过 Alice 给 `option B` 的投票,只计算给 `option A` 的投票。 因此,Bob 串通 Alice 和操纵链上投票的意图失败了。 -使用最低限度的反串通基础设施时,_确实_需要相信协调员不会与行贿者串通或者试图自己来贿赂投票者。 协调员可以解密用户消息(创建证明的时候需要),以确保它们可以准确验证每个人是如何投票的。 +使用 MACI _确实_需要信任协调员不会与行贿者串通,或试图亲自贿赂投票者。 协调员可以解密用户消息(创建证明的时候需要),以确保它们可以准确验证每个人是如何投票的。 -在协调员保持诚实的情况下,MACI 代表了一个强大的工具,保证了链上投票的神圣性。 这解释了它为何在二次融资应用中如此受欢迎(例如 [clr.fund](https://clr.fund/#/about/maci)),二次融资严重依赖于每个人投票选择的完整性。 +在协调员保持诚实的情况下,MACI 代表了一个强大的工具,保证了链上投票的神圣性。 这就解释了为什么它在二次方募资应用(例如,[clr.fund](https://clr.fund/#/about/maci))中如此受欢迎,这些应用严重依赖每个个人投票选择的完整性。 -[了解更多关于最小反串谋基础设施的信息](https://maci.pse.dev)。 +[了解有关 MACI 的更多信息](https://maci.pse.dev/)。 ## 零知识证明如何运作? {#how-do-zero-knowledge-proofs-work} @@ -118,29 +141,29 @@ lang: zh 零证明协议需要满足以下标准: -1. **完备性**:如果输入是有效的,那么零知识协议应该始终返回"真"。 因此,如果所依据的声明是真的,同时证明者和验证者都诚实,那么证明就能被接受。 +1. **完整性**:如果输入有效,零知识协议总是返回“真”。 因此,如果所依据的声明是真的,同时证明者和验证者都诚实,那么证明就能被接受。 -2. **可靠性**:如果输入是无效的,那么理论上不可能欺骗零知识协议输出“真”。 因此,一个说谎的证明者无法忽悠一个诚实的验证者相信一个无效的声明是有效的(小概率事件除外)。 +2. **可靠性**:如果输入无效,理论上不可能欺骗零知识协议返回“真”。 因此,一个说谎的证明者无法忽悠一个诚实的验证者相信一个无效的声明是有效的(小概率事件除外)。 3. **零知识**:验证者除了知道声明的有效性或虚假性之外,其余一概不知(他们对声明内容“一无所知”)。 这项要求也阻止了验证者从证明中推导出原始输入(声明的内容)。 -零知识证明的基本形式由三个要素组成:**证人**、**挑战**和**回复**。 +一个零知识证明基本上由三个要素组成:**见证**、**挑战**和**响应**。 -- **证人**:通过零知识证明,证明者想要证明对一些隐藏信息的了解。 这些秘密信息就是证明的“证人”,证明者基于对证人的了解设立了一组问题,这些问题只有了解信息的一方才能回答出来。 因此,证明者随机选择一个问题来发起证明,计算问题答案,然后发送给验证者。 +- **见证**:通过零知识证明,证明者希望证明自己知道某些隐藏信息。 这些秘密信息就是证明的“证人”,证明者基于对证人的了解设立了一组问题,这些问题只有了解信息的一方才能回答出来。 因此,证明者随机选择一个问题来发起证明,计算问题答案,然后发送给验证者。 -- **挑战**:验证者从问题集里随机挑选另外一个问题,然后让证明者来回答。 +- **挑战**:验证者从问题集中随机挑选另一个问题,并要求证明者回答。 -- **回复**:证明者接收问题,计算答案,然后把答案发送给验证者。 证明者的回复让验证者可以检验证明者是否真的可以接触到证人。 为了确保证明者并不是偶然盲目猜对答案的,验证者会再选择一个问题来提问。 通过多次重复这个过程,证明者造假的可能性会极大的降低,直到最终验证者满意。 +- **响应**:证明者接受问题,计算答案,并将其返回给验证者。 证明者的回复让验证者可以检验证明者是否真的可以接触到证人。 为了确保证明者并不是偶然盲目猜对答案的,验证者会再选择一个问题来提问。 通过多次重复这个过程,证明者造假的可能性会极大的降低,直到最终验证者满意。 以上描述了“交互式零知识证明”的结构。 早期的零知识协议使用交互式证明,验证一个声明的有效性需要证明者和验证者之间来回多次沟通。 -一个比较好的展示交互式证明是如何运转的例子是 Jean-Jacques Quisquater 非常有名的[阿里巴巴山洞故事](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave)。 在故事里,Peggy(证明者)想要向Victor(验证者)证明她知道打开魔法之门的暗号,但她又没有透露暗号是什么。 +Jean-Jacques Quisquater 著名的[阿里巴巴洞穴故事](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave)是说明交互式证明如何运作的一个很好的例子。 在故事里,Peggy(证明者)想要向Victor(验证者)证明她知道打开魔法之门的暗号,但她又没有透露暗号是什么。 ### 非交互式零知识证明 {#non-interactive-zero-knowledge-proofs} 虽然是革命性的,但互动式证明的作用有限,因为它要求双方同时在线,反复互动。 即使验证者相信证明者是诚实的,该证明也不能用于独立验证(计算一个新的证明需要证明者和验证者之间一个新的信息集)。 -为了解决这个问题,Manuel Blum、Paul Feldman 和 Silvio Micali 提出了第一个[非交互式零知识证明](https://dl.acm.org/doi/10.1145/62212.62222),证明者和验证者将有一个共享的密钥。 这能让证明者表明他们对某些信息(即证人)的了解,而不提供信息本身。 +为了解决这个问题,Manuel Blum、Paul Feldman 和 Silvio Micali 提出了第一个[非交互式零知识证明](https://dl.acm.org/doi/10.1145/62212.62222),其中证明者和验证者拥有一个共享密钥。 这能让证明者表明他们对某些信息(即证人)的了解,而不提供信息本身。 与交互式证明不同的是,非互动式证明只需要参与者(证明者和验证者)之间进行一轮沟通。 证明者把秘密信息输入到一个特殊的算法中,然后计算出一个零知识证明。 这个证明会被发送给验证者,验证者使用另一个算法来检验证明者是否知道秘密信息。 @@ -150,33 +173,33 @@ lang: zh ### 零知识证明的类型 {#types-of-zero-knowledge-proofs} -#### 零知识简洁非交互式知识论证 (ZK-SNARK) {#zk-snarks} +#### ZK-SNARKs {#zk-snarks} -ZK-SNARK是**零知识简洁非交互式知识论证**的缩写。 零知识简洁非交互式知识论证协议具有以下特点: +ZK-SNARK 是 \*\*Zero-Knowledge Succinct Non-Interactive Argument of Knowledge(零知识简洁非交互式知识论证)\*\*的缩写。 零知识简洁非交互式知识论证协议具有以下特点: -- **零知识**:验证者可以验证声明的完整性,而不需要知道关于该声明的任何其他信息。 验证者对声明的唯一了解就是它是真还是假。 +- **零知识**:验证者可以验证一个陈述的完整性,而无需了解关于该陈述的任何其他信息。 验证者对声明的唯一了解就是它是真还是假。 -- **简洁**:零知识证明比证人小,可以快速验证。 +- **简洁**:零知识证明比见证要小,并且可以快速验证。 -- **非交互式**:该证明是非交互式的,因为证明者和验证者之间只需要交互一次,不像交互式证明需要多轮的沟通。 +- **非交互式**:该证明是“非交互式”的,因为证明者和验证者只交互一次,不像交互式证明需要多轮通信。 -- **论证**:该证明满足“可靠性”要求,因此基本不可能作弊。 +- **论证**:该证明满足“可靠性”要求,因此作弊的可能性极小。 -- **(的)知识**:如果不能获取秘密信息(证人),就无法构建零知识证明。 证明者在没有证人的情况下计算一个有效的零知识证明是非常困难的,即便不是不可能。 +- **知识(Of Knowledge)**:如果没有秘密信息(见证),零知识证明就无法构建。 证明者在没有证人的情况下计算一个有效的零知识证明是非常困难的,即便不是不可能。 前面提到的“共享密钥”是指证明者和验证者同意在生成和验证证明时使用的公共参数。 生成公共参数(统称为通用参考编码 (CRS))是一个敏感的操作,因为它在协议安全性方面非常重要。 如果用于生成通用参考编码的熵(随机数)落入到不诚实的证明者手上,他们就能计算虚假证明。 -[多方计算 (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) 是一种在生成公共参数时降低风险的方法。 多个参与方参与到[信任设置仪式](https://zkproof.org/2021/06/30/setup-ceremonies/amp/),每个人提供一些随机数值来生成通用参考编码。 只要有一个诚实的参与方销毁了他们那部分的熵,零知识简洁非交互式知识论证协议就能保持计算的可靠性。 +[多方计算 (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) 是降低生成公共参数风险的一种方法。 多方参与[可信设置仪式](https://zkproof.org/2021/06/30/setup-ceremonies/amp/),每个人都贡献一些随机值来生成 CRS (通用参考字符串)。 只要有一个诚实的参与方销毁了他们那部分的熵,零知识简洁非交互式知识论证协议就能保持计算的可靠性。 信任设置要求用户信任参数生成的参与者。 然而,ZK-STARK 的发展使其能在非信任的设置下证明协议。 -#### 零知识可扩容透明知识论证 (ZK-STARK) {#zk-starks} +#### ZK-STARKs {#zk-starks} -ZK-STARK 是**零知识可扩容透明知识论证**的缩写。 ZK-STARK 类似于ZK-SNARK,除了它是: +ZK-STARK 是 \*\*Zero-Knowledge Scalable Transparent Argument of Knowledge(零知识可扩展透明知识论证)\*\*的缩写。 ZK-STARK 类似于ZK-SNARK,除了它是: -- **可扩容**:当证人的规模比较大时,ZK-STARK 生成和验证证明比零知识简洁非交互式知识论证要快。 随着证人规模的增加,简洁的非交互式知识论证证明的证明和验证时间只会略微增加(简洁的非交互式知识论证证明和验证时间与证人规模呈线性增长)。 +- **可扩展**:当见证的规模较大时,ZK-STARK 在生成和验证证明方面比 ZK-SNARK 更快。 随着证人规模的增加,简洁的非交互式知识论证证明的证明和验证时间只会略微增加(简洁的非交互式知识论证证明和验证时间与证人规模呈线性增长)。 -- **透明**:ZK-STARK 依赖于可公开验证的随机数来生成用于证明和验证的公共参数,而不是信任设置。 因此,它比零知识简洁非交互式知识论证更加透明。 +- **透明**:ZK-STARK 依靠可公开验证的随机性来生成用于证明和验证的公共参数,而不是可信设置。 因此,它比零知识简洁非交互式知识论证更加透明。 ZK-STARK 会产生比零知识简洁非交互式知识论证更大的证明,这意味着它通常具有更高的验证开销。 然而,在有些情况下(如证明大型数据集),ZK-STARK 可能比零知识简洁非交互式知识论证更具成本效益。 @@ -186,7 +209,7 @@ ZK-STARK 会产生比零知识简洁非交互式知识论证更大的证明, 生成零知识证明涉及到非常复杂的计算,最好在专用机器上运行。 由于这类机器价格昂贵,普通人通常买不起。 此外,想要使用零知识技术的应用必须考虑硬件成本 — 这可能会增加终端用户的费用。 -### 证明验证费用 {#proof-verification-costs} +### 证明验证成本 {#proof-verification-costs} 验证证明也需要复杂的计算,这增加了在应用中实施零知识技术的成本。 这种成本在证明计算方面尤其突出。 例如,零知识卷叠在以太坊上支付约 500,000 单位燃料来验证一个零知识简洁非交互式知识论证证明,零知识可扩容透明知识论证则需要更高的费用。 @@ -196,19 +219,20 @@ ZK-STARK 会产生比零知识简洁非交互式知识论证更大的证明, 但是并没有什么方法能让用户评估参与者是否诚实,用户必须相信开发者的话。 零知识可扩容透明知识论证不存在信任假设,因为生成字符串所使用的随机数是可公开验证的。 与此同时,研究人员正在研究零知识简洁非交互式知识论证的非可信设置,以增加证明机制的安全性。 -### 量子计算的威胁 {#quantum-computing-threats} +### 量子计算威胁 {#quantum-computing-threats} 零知识简洁非交互式知识论证使用椭圆曲线加密法进行加密。 虽然椭圆曲线离散对数问题目前被认为是难以破解的,但在未来,量子计算机的发展可能会打破这种安全模式。 由于仅使用抗碰撞的哈希函数确保安全性,零知识可扩容透明知识论证被认为不会受到量子计算的威胁。 与椭圆曲线加密法中使用的公私密钥对不同,抗碰撞哈希算法更难被量子计算算法破解。 -## 延伸阅读 {#further-reading} - -- [零知识证明用例概述](https://pse.dev/projects) — _Privacy and Scaling Explorations Team_ -- [SNARKs 与 STARKS 与 递归 SNARK](https://www.alchemy.com/overviews/snarks-vs-starks) — _Alchemy Overviews_ -- [零知识证明:改善区块链上的隐私](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) — _Dmitry Lavrenov_ -- [zk-SNARK — 一个现实的零知识例子和深入研究](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Adam Luciano_ -- [ZK-STARK — 创建可验证的信任,即使面对量子计算机](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Adam Luciano_ -- [关于如何让 zk-SNARK 成为可能的大致介绍](https://vitalik.eth.limo/general/2021/01/26/snarks.html) — _Vitalik Buterin_ -- [为什么零知识证明 (ZKP) 是自主主权身份的颠覆者](https://frankiefab.hashnode.dev/why-zero-knowledge-proofs-zkps-is-a-game-changer-for-self-sovereign-identity) — _Franklin Ohaegbulam_ - +## 扩展阅读{#further-reading} + +- [零知识证明用例概述](https://pse.dev/projects) — _隐私和扩容探索团队_ +- [SNARKs vs. STARKS vs. Recursive SNARKs](https://www.alchemy.com/overviews/snarks-vs-starks) — _Alchemy Overviews_ +- [零知识证明:提升区块链隐私](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) — _Dmitry Lavrenov_ +- [zk-SNARKs — 一个现实的零知识示例和深度解析](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Adam Luciano_ +- [ZK-STARKs — 即使面对量子计算机也能创建可验证的信任](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Adam Luciano_ +- [zk-SNARKs 实现原理近似介绍](https://vitalik.eth.limo/general/2021/01/26/snarks.html) — _Vitalik Buterin_ +- [为什么零知识证明 (ZKP) 是自主身份的游戏规则改变者](https://frankiefab.hashnode.dev/why-zero-knowledge-proofs-zkps-is-a-game-changer-for-self-sovereign-identity) — _Franklin Ohaegbulam_ +- [EIP-7503 详解:使用 ZK 证明在以太坊上实现隐私转账](https://research.2077.xyz/eip-7503-zero-knowledge-wormholes-for-private-ethereum-transactions#introduction) — _Emmanuel Awosika_ +- [ZK 卡牌游戏:学习 ZK 基础知识和现实用例的游戏](https://github.com/ZK-card/zk-cards) - _ZK-Cards_ From f0b155bf8baaa7b04abb150bc2ef63ab2a4ea6e6 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:12 -0800 Subject: [PATCH 118/581] update(i18n): public/content/translations/zh/contributing/adding-glossary-terms/index.md --- .../zh/contributing/adding-glossary-terms/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/content/translations/zh/contributing/adding-glossary-terms/index.md b/public/content/translations/zh/contributing/adding-glossary-terms/index.md index 4d4da032750..8dd0ff48e1d 100644 --- a/public/content/translations/zh/contributing/adding-glossary-terms/index.md +++ b/public/content/translations/zh/contributing/adding-glossary-terms/index.md @@ -4,11 +4,11 @@ lang: zh description: 添加新术语到 ethereum.org 词汇表的标准 --- -# 添加词汇表术语 {#contributing-to-ethereumorg-} +# 添加术语表术语 {#contributing-to-ethereumorg-} -这一领域每天都在发生变化。 新术语不断进入以太坊用户的词典,我们需要你的帮助,为以太坊的所有事物提供准确、最新的参考。 请查看目前的[词汇表](/glossary/),如果你想要提供帮助的话,请参阅下面的内容! +这一领域每天都在发生变化。 新术语不断进入以太坊用户的词典,我们需要你的帮助,为以太坊的所有事物提供准确、最新的参考。 查看当前的[术语表](/glossary/),如果你想提供帮助,请参阅以下内容! -## 标准 {#criteria} +## 标准{#criteria} 将按照下列标准评估词汇表的新术语: @@ -23,4 +23,4 @@ description: 添加新术语到 ethereum.org 词汇表的标准 ## 添加你的术语 {#how-decisions-about-the-site-are-made} -如果你想为 ethereum.org 添加一个词汇表术语,并且该术语符合标准,[请在 GitHub 上创建一个问题](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_glossary_term.yaml)。 +如果你想在 ethereum.org 上添加术语表术语,并且该术语符合标准,请[在 GitHub 上创建一个问题](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_glossary_term.yaml)。 From a3e688b1d4f7a7645e643e2e1525f7f52f40c19d Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:15 -0800 Subject: [PATCH 119/581] update(i18n): public/content/translations/zh/contributing/adding-developer-tools/index.md --- .../adding-developer-tools/index.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/public/content/translations/zh/contributing/adding-developer-tools/index.md b/public/content/translations/zh/contributing/adding-developer-tools/index.md index eaa42b07b60..65db633ed94 100644 --- a/public/content/translations/zh/contributing/adding-developer-tools/index.md +++ b/public/content/translations/zh/contributing/adding-developer-tools/index.md @@ -10,43 +10,43 @@ description: 开发者工具上架 ethereum.org 的标准 如果我们遗漏了有用的开发工具,请随时在适当的地方提出建议。 -目前,我们在[开发者门户](/developers/)中上架了开发者工具。 +我们目前在[开发者门户](/developers/)上列出了开发者工具。 -**请随时去适当的页面提出新的建议。** +**欢迎随时为合适的页面提出增补建议。** -## 我们如何做出决定 {#ways-to-contribute} +## 我们的决策方式 {#ways-to-contribute} 提交的开发者工具将按照以下标准进行评估: -**它是否与已上架的工具有明显的区别?** +**它是否与已列出的工具有明显的区别?** - 新类别或新类型的工具 - 与现有类似工具比较具有新功能 - 针对现有类似工具未涵盖的独特用例 -**这个工具是否有相关文档给予充分支持?** +**该工具的文档是否完善?** - 是否存在相关文档? - 相关文档是否能满足工具使用需求? - 最近是否更新过? -**工具是否得到广泛使用?** +**该工具是否被广泛使用?** - 我们将考虑诸如 GitHub 星级、下载量等因素,以及是否被知名公司或项目使用过。 -**工具的质量是否足够好?** +**该工具的质量是否足够好?** - 是否有重复出现的错误? - 工具是否可靠? - 工具是否获得主动积极的维护? -**工具是否开源?** +**该工具是否开源?** 以太坊领域的许多项目都是开源的。 我们更愿意让开源项目上架,以便社区开发者检查代码并为这些项目做出贡献。 --- -## 产品排序 {#product-ordering} +## 产品订购{#product-ordering} 除非指定产品按特定方式排序,如按字母顺序排序,否则产品将默认从最早到最近添加到页面的顺序显示。 换句话说,最新的产品被添加到列表的底部。 @@ -57,5 +57,5 @@ description: 开发者工具上架 ethereum.org 的标准 如果你想向 ethereum.org 添加开发者工具并且它符合标准,请在 GitHub 上创建提议。 - 创建提议 + 创建议题 From 45b7031aa1b5abd4ee912c9b0d4fa08b5de642e1 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:17 -0800 Subject: [PATCH 120/581] update(i18n): public/content/translations/zh/developers/tutorials/secure-development-workflow/index.md --- .../secure-development-workflow/index.md | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/zh/developers/tutorials/secure-development-workflow/index.md index a0e6bdba9bb..459455f4ec6 100644 --- a/public/content/translations/zh/developers/tutorials/secure-development-workflow/index.md +++ b/public/content/translations/zh/developers/tutorials/secure-development-workflow/index.md @@ -2,10 +2,7 @@ title: 智能合约安全清单 description: 编写安全智能合约的推荐工作流程 author: "Trailofbits" -tags: - - "智能合约" - - "安全性" - - "solidity" +tags: [ "智能合同", "安全性。", "Solidity" ] skill: intermediate lang: zh published: 2020-09-07 @@ -13,7 +10,7 @@ source: 构建安全的合约 sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/workflow.md --- -## 智能合约开发清单 {#smart-contract-development-checklist} +## 智能合约开发核对清单 {#smart-contract-development-checklist} 这是一个高级别的过程,我们建议在你编写智能合约时遵循。 @@ -24,21 +21,21 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel 考虑你的智能合约的特殊功能: -- 你的合约是否可以升级? 使用 [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) 或 [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/) 检查你的可升级代码是否有缺陷。 我们记录了 17 种升级可能出现的问题。 -- 你的合约是否声明符合 ERC 的要求? 使用 [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) 对它们进行审核。 这个工具能立即识别出六个常见规范的偏差。 -- 你是否与第三方代币集成? 在依赖外部合约之前,请先查看我们的[代币集成清单](/developers/tutorials/token-integration-checklist/)。 +- 你的合约是否可以升级? 使用 [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) 或 [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/) 审核可升级代码中的漏洞。 我们记录了 17 种升级可能出现的问题。 +- 你的合约是否声明符合 ERC 的要求? 使用 [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) 检查它们。 这个工具能立即识别出六个常见规范的偏差。 +- 你是否与第三方代币集成? 在依赖外部合约之前,请查看我们的[代币集成核对清单](/developers/tutorials/token-integration-checklist/)。 目视检查代码的关键安全功能。 -- 查看 Slither 的 [inheritance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) printer。 避免以外屏蔽和 C3 线性化问题。 -- 查看 Slither 的 [function-summary](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) printer。 它报告功能可见性和访问控制。 -- 查看 Slither 的 [vars-and-auth](https://github.com/trailofbits/slither/wiki/Printer-documentation#variables-written-and-authorization) printer。 它报告了对状态变量的访问控制。 +- 查看 Slither 的 [inheritance-graph](https://github.com/trailofbits/slither/wiki/Printer-documentation#inheritance-graph) 打印机。 避免以外屏蔽和 C3 线性化问题。 +- 查看 Slither 的 [function-summary](https://github.com/trailofbits/slither/wiki/Printer-documentation#function-summary) 打印机。 它报告功能可见性和访问控制。 +- 查看 Slither 的 [vars-and-auth](https://github.com/trailofbits/slither/wiki/Printer-documentation#variables-written-and-authorization) 打印机。 它报告了对状态变量的访问控制。 记录关键安全属性,并使用自动化测试生成器对其进行评估: -- 学习 [记录代码的安全属性](/developers/tutorials/guide-to-smart-contract-security-tools/)。 一开始是艰难的,但它是实现良好结果的最重要的活动。 这也是使用本教程中任何高级技术的先决条件。 -- 在 Solidity 中定义安全属性,用于 [Echidna](https://github.com/crytic/echidna) 和 [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html)。 重点是你的状态机、访问控制、算术运算、外部交互和标准一致性。 -- 使用 [ Slither 的 Python API](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) 定义安全属性。 重点是继承、变量依赖项、访问控制和其他结构问题。 +- 学习如何[为您的代码记录安全属性](/developers/tutorials/guide-to-smart-contract-security-tools/)。 一开始是艰难的,但它是实现良好结果的最重要的活动。 这也是使用本教程中任何高级技术的先决条件。 +- 在 Solidity 中定义安全属性,以便与 [Echidna](https://github.com/crytic/echidna) 和 [Manticore](https://manticore.readthedocs.io/en/latest/verifier.html) 结合使用。 重点是你的状态机、访问控制、算术运算、外部交互和标准一致性。 +- 使用 [Slither 的 Python API](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) 定义安全属性。 重点是继承、变量依赖项、访问控制和其他结构问题。 - 在每次提交时,使用 [Crytic](https://crytic.io) 运行你的属性测试。 Crytic 可以使用和评估安全属性测试,因此团队中的每个人都可以轻松地看到他们通过 GitHub。 测试失败会阻止提交。 最后,请注意自动化工具无法轻易找到的问题: @@ -48,8 +45,8 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel - 加密操作 - 与外部 DeFi 组件的风险互动 -## 寻求帮助 {#ask-for-help} +## 请求帮助 {#ask-for-help} -[以太坊的办公时间](https://calendly.com/dan-trailofbits/office-hours)为每周二下午。 这些 1 小时的 1 对 1 会议是一个机会,你可以向我们询问有关安全的任何问题,使用我们的工具进行故障排除,并获得专家对你当前方法的反馈。 我们将帮助你消化本指南。 +[以太坊答疑时间](https://calendly.com/dan-trailofbits/office-hours)于每周二下午举行。 这些 1 小时的 1 对 1 会议是一个机会,你可以向我们询问有关安全的任何问题,使用我们的工具进行故障排除,并获得专家对你当前方法的反馈。 我们将帮助你消化本指南。 -加入我们的 Slack: [ Empire Hacking](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw)。 如果你有任何问题,可以随时在 #crytic 和 #ethereum 频道上联系我们。 +加入我们的 Slack:[Empire Hacking](https://join.slack.com/t/empirehacking/shared_invite/zt-h97bbrj8-1jwuiU33nnzg67JcvIciUw)。 如果你有任何问题,可以随时在 #crytic 和 #ethereum 频道上联系我们。 From 2e89de951b4dd6c3a521ac6bdb6400fc836e558f Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:20 -0800 Subject: [PATCH 121/581] update(i18n): public/content/translations/zh/developers/tutorials/scam-token-tricks/index.md --- .../tutorials/scam-token-tricks/index.md | 470 ++++++++++++++++++ 1 file changed, 470 insertions(+) create mode 100644 public/content/translations/zh/developers/tutorials/scam-token-tricks/index.md diff --git a/public/content/translations/zh/developers/tutorials/scam-token-tricks/index.md b/public/content/translations/zh/developers/tutorials/scam-token-tricks/index.md new file mode 100644 index 00000000000..9d80c23ffea --- /dev/null +++ b/public/content/translations/zh/developers/tutorials/scam-token-tricks/index.md @@ -0,0 +1,470 @@ +--- +title: "诈骗代币使用的一些伎俩以及如何检测它们" +description: 在本教程中,我们将剖析一个诈骗代币,了解诈骗者使用的一些伎俩、他们如何实施这些伎俩,以及我们如何检测它们。 +author: Ori Pomerantz +tags: + [ + "诈骗", + "Solidity", + "erc-20", + "javascript", + "typescript" + ] +skill: intermediate +published: 2023-09-15 +lang: zh +--- + +在本教程中,我们将剖析[一个诈骗代币](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code),了解诈骗者使用的一些伎俩以及他们如何实施这些伎俩。 在本教程结束时,你将对 ERC-20 代币合约、其功能以及为何有必要保持怀疑态度有更全面的了解。 然后,我们查看该诈骗代币发出的事件,并了解如何自动识别它不是合法代币。 + +## 诈骗代币——它们是什么、人们为什么发行诈骗代币,以及如何避免它们 {#scam-tokens} + +以太坊最常见的用途之一是由一个团队来打造一种可以交易的代币,在某种意义上是他们自己的货币。 然而,任何存在可以带来价值的合法使用场景的地方,就会有试图窃取那些价值的犯罪分子。 + +你可以从用户角度在 [ethereum.org 的其他地方](/guides/how-to-id-scam-tokens/)阅读更多关于此主题的内容。 本教程重点剖析一个诈骗代币,了解它是如何制作的以及如何被检测出来。 + +### 我如何知道 wARB 是个骗局? {#warb-scam} + +我们剖析的代币是 [wARB](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code),它伪装成与合法的 [ARB 代币](https://etherscan.io/token/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1)等价。 + +知道哪个是合法代币的最简单方法是查看其发行组织 [Arbitrum](https://arbitrum.foundation/)。 合法地址已在[他们的相关文档](https://docs.arbitrum.foundation/deployment-addresses#token)中指定。 + +### 为什么源代码是可用的? {#why-source} + +通常,我们期望试图诈骗他人的人会保密,事实上,许多诈骗代币的代码都不可用(例如,[这个](https://optimistic.etherscan.io/token/0x15992f382d8c46d667b10dc8456dc36651af1452#code)和[这个](https://optimistic.etherscan.io/token/0x026b623eb4aada7de37ef25256854f9235207178#code))。 + +然而,合法代币通常会公布其源代码,因此为了显得合法,诈骗代币的作者有时也会这样做。 [wARB](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82#code) 是那些源代码可用的代币之一,这使得理解它变得更容易。 + +虽然合约部署者可以选择是否公布源代码,但他们_不能_公布错误的源代码。 区块浏览器独立编译提供的源代码,如果得不到完全相同的字节码,它就会拒绝该源代码。 [你可以在 Etherscan 网站上阅读更多相关内容](https://etherscan.io/verifyContract)。 + +## 与合法 ERC-20 代币的比较 {#compare-legit-erc20} + +我们将把这个代币与合法的 ERC-20 代币进行比较。 如果你不熟悉合法 ERC-20 代币通常是如何编写的,请[参阅本教程](/developers/tutorials/erc20-annotated-code/)。 + +### 特权地址的常量 {#constants-for-privileged-addresses} + +合约有时需要特权地址。 为长期使用而设计的合约允许一些特权地址更改这些地址,例如,为了能够使用新的多签合约。 有几种方法可以做到这一点。 + +[`HOP` 代币合约](https://etherscan.io/address/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc#code) 使用 [`Ownable`](https://docs.openzeppelin.com/contracts/2.x/access-control#ownership-and-ownable) 模式。 特权地址保存在存储中,在一个名为 `_owner` 的字段中(参见第三个文件 `Ownable.sol`)。 + +```solidity +abstract contract Ownable is Context { + address private _owner; + . + . + . +} +``` + +[`ARB` 代币合约](https://etherscan.io/address/0xad0c361ef902a7d9851ca7dcc85535da2d3c6fc7#code)没有直接的特权地址。 然而,它不需要一个。 它位于[地址 `0xb50721bcf8d664c30412cfbc6cf7a15145234ad1`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1#code) 的一个 [`proxy`](https://docs.openzeppelin.com/contracts/5.x/api/proxy) 之后。 该合约有一个特权地址(参见第四个文件 `ERC1967Upgrade.sol`),可用于升级。 + +```solidity + /** + * @dev 在 EIP1967 管理员时隙中存储一个新地址。 + */ + function _setAdmin(address newAdmin) private { + require(newAdmin != address(0), "ERC1967: new admin is the zero address"); + StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin; + } +``` + +相比之下,`wARB` 合约有一个硬编码的 `contract_owner`。 + +```solidity +contract WrappedArbitrum is Context, IERC20 { + . + . + . + address deployer = 0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1; + address public contract_owner = 0xb40dE7b1beE84Ff2dc22B70a049A07A13a411A33; + . + . + . +} +``` + +[此合约所有者](https://etherscan.io/address/0xb40dE7b1beE84Ff2dc22B70a049A07A13a411A33)不是一个可以在不同时间由不同帐户控制的合约,而是一个[外部所有的帐户](/developers/docs/accounts/#externally-owned-accounts-and-key-pairs)。 这意味着它可能是为个人短期使用而设计的,而不是作为控制一个将保持有价值的 ERC-20 的长期解决方案。 + +事实上,如果我们查看 Etherscan,我们会发现诈骗者在 2023 年 5 月 19 日期间仅使用了该合约 12 小时(从[第一笔交易](https://etherscan.io/tx/0xf49136198c3f925fcb401870a669d43cecb537bde36eb8b41df77f06d5f6fbc2)到[最后一笔交易](https://etherscan.io/tx/0xdfd6e717157354e64bbd5d6adf16761e5a5b3f914b1948d3545d39633244d47b))。 + +### 虚假的 `_transfer` 函数 {#the-fake-transfer-function} + +标准做法是使用[一个内部的 `_transfer` 函数](/developers/tutorials/erc20-annotated-code/#the-_transfer-function-_transfer)来进行实际的转账。 + +在 `wARB` 中,这个函数看起来几乎是合法的: + +```solidity + function _transfer(address sender, address recipient, uint256 amount) internal virtual{ + require(sender != address(0), "ERC20: transfer from the zero address"); + require(recipient != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(sender, recipient, amount); + + _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); + _balances[recipient] = _balances[recipient].add(amount); + if (sender == contract_owner){ + sender = deployer; + } + emit Transfer(sender, recipient, amount); + } +``` + +可疑的部分是: + +```solidity + if (sender == contract_owner){ + sender = deployer; + } + emit Transfer(sender, recipient, amount); +``` + +如果合约所有者发送代币,为什么 `Transfer` 事件显示它们来自 `deployer`? + +然而,还有一个更重要的问题。 谁调用这个 `_transfer` 函数? 它不能从外部调用,它被标记为 `internal`。 而且我们拥有的代码不包含任何对 `_transfer` 的调用。 很明显,它在这里只是个诱饵。 + +```solidity + function transfer(address recipient, uint256 amount) public virtual override returns (bool) { + _f_(_msgSender(), recipient, amount); + return true; + } + + function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { + _f_(sender, recipient, amount); + _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); + return true; + } +``` + +当我们查看用于转账代币的函数 `transfer` 和 `transferFrom` 时,我们看到它们调用了一个完全不同的函数 `_f_`。 + +### 真正的 `_f_` 函数 {#the-real-f-function} + +```solidity + function _f_(address sender, address recipient, uint256 amount) internal _mod_(sender,recipient,amount) virtual { + require(sender != address(0), "ERC20: transfer from the zero address"); + require(recipient != address(0), "ERC20: transfer to the zero address"); + + _beforeTokenTransfer(sender, recipient, amount); + + _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); + _balances[recipient] = _balances[recipient].add(amount); + if (sender == contract_owner){ + + sender = deployer; + } + emit Transfer(sender, recipient, amount); + } +``` + +这个函数中有两个潜在的危险信号。 + +- 使用了[函数修饰符](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm) `_mod_`。 然而,当我们查看源代码时,我们发现 `_mod_` 实际上是无害的。 + + ```solidity + modifier _mod_(address sender, address recipient, uint256 amount){ + _; + } + ``` + +- 我们在 `_transfer` 中看到的同样问题,即当 `contract_owner` 发送代币时,它们似乎来自 `deployer`。 + +### 虚假事件函数 `dropNewTokens` {#the-fake-events-function-dropNewTokens} + +现在我们来看一个看起来像真正骗局的东西。 为了便于阅读,我对函数做了一些编辑,但功能上是等效的。 + +```solidity +function dropNewTokens(address uPool, + address[] memory eReceiver, + uint256[] memory eAmounts) public auth() +``` + +这个函数有 `auth()` 修饰符,这意味着它只能由合约所有者调用。 + +```solidity +modifier auth() { + require(msg.sender == contract_owner, "Not allowed to interact"); + _; +} +``` + +这个限制完全合理,因为我们不希望随机帐户分发代币。 然而,函数的其余部分是可疑的。 + +```solidity +{ + for (uint256 i = 0; i < eReceiver.length; i++) { + emit Transfer(uPool, eReceiver[i], eAmounts[i]); + } +} +``` + +一个将资金从池子帐户转账到一个接收者数组(包含金额数组)的函数是完全合理的。 在许多用例中,你会希望将代币从单一来源分发到多个目的地,例如工资发放、空投等。 在单笔交易中完成比发行多笔交易更便宜(在燃料方面),甚至比在同一笔交易中从不同的合约多次调用 ERC-20 更便宜。 + +然而,`dropNewTokens` 并没有这样做。 它会发出 [`Transfer` 事件](https://eips.ethereum.org/EIPS/eip-20#transfer-1),但实际上并不转账任何代币。 没有正当理由通过告知脱链应用一笔并未真正发生的转账来迷惑它们。 + +### 销毁 `Approve` 函数 {#the-burning-approve-function} + +ERC-20 合约应该有一个用于授权的 [`approve` 函数](/developers/tutorials/erc20-annotated-code/#approve),我们的诈骗代币确实有这样一个函数,而且它甚至是正确的。 然而,由于 Solidity 源于 C,它是区分大小写的。 “Approve”和“approve”是不同的字符串。 + +此外,该功能与 `approve` 无关。 + +```solidity + function Approve( + address[] memory holders) +``` + +此函数被调用时,会传入一个代币持有者的地址数组。 + +```solidity + public approver() { +``` + +`approver()` 修饰符确保只有 `contract_owner` 可以调用此函数(见下文)。 + +```solidity + for (uint256 i = 0; i < holders.length; i++) { + uint256 amount = _balances[holders[i]]; + _beforeTokenTransfer(holders[i], 0x0000000000000000000000000000000000000001, amount); + _balances[holders[i]] = _balances[holders[i]].sub(amount, + "ERC20: burn amount exceeds balance"); + _balances[0x0000000000000000000000000000000000000001] = + _balances[0x0000000000000000000000000000000000000001].add(amount); + } + } + +``` + +对于每个持有者地址,该函数将持有者的全部余额转移到地址 `0x00...01`,从而有效地销毁它(标准中的实际 `burn` 也会更改总供应量,并将代币转账到 `0x00...00`)。 这意味着 `contract_owner` 可以移除任何用户的资产。 这看起来不像是你希望在治理代币中拥有的功能。 + +### 代码质量问题 {#code-quality-issues} + +这些代码质量问题并不能_证明_这个代码是骗局,但它们让它看起来很可疑。 像 Arbitrum 这样的有组织的公司通常不会发布这么糟糕的代码。 + +#### `mount` 函数 {#the-mount-function} + +虽然[标准](https://eips.ethereum.org/EIPS/eip-20)中没有规定,但一般来说,创建新代币的函数被称为 [`mint`](https://ethereum.org/el/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn)。 + +如果我们查看 `wARB` 的构造函数,我们会发现 mint 函数由于某种原因被重命名为 `mount`,并且被调用五次,每次使用初始供应量的五分之一,而不是为了效率一次性处理全部数量。 + +```solidity + constructor () public { + + _name = "Wrapped Arbitrum"; + _symbol = "wARB"; + _decimals = 18; + uint256 initialSupply = 1000000000000; + + mount(deployer, initialSupply*(10**18)/5); + mount(deployer, initialSupply*(10**18)/5); + mount(deployer, initialSupply*(10**18)/5); + mount(deployer, initialSupply*(10**18)/5); + mount(deployer, initialSupply*(10**18)/5); + } +``` + +`mount` 函数本身也很可疑。 + +```solidity + function mount(address account, uint256 amount) public { + require(msg.sender == contract_owner, "ERC20: mint to the zero address"); +``` + +查看 `require`,我们发现只有合约所有者被允许铸币。 这是合法的。 但是错误信息应该是_只有所有者才能铸币_或类似的东西。 相反,它使用了不相关的 _ERC20: mint to the zero address_。 检查是否铸币到零地址的正确测试是 `require(account != address(0), "")`,但该合约从未费心去检查。 + +```solidity + _totalSupply = _totalSupply.add(amount); + _balances[contract_owner] = _balances[contract_owner].add(amount); + emit Transfer(address(0), account, amount); + } +``` + +还有两个与铸币直接相关的可疑事实: + +- 有一个 `account` 参数,大概是应该接收铸币数量的帐户。 但增加的余额实际上是 `contract_owner` 的。 + +- 虽然增加的余额属于 `contract_owner`,但发出的事件却显示了一笔向 `account` 的转账。 + +### 为什么同时有 `auth` 和 `approver`? 为什么 `mod` 什么都不做? {#why-both-autho-and-approver-why-the-mod-that-does-nothing} + +这个合约包含三个修饰符:`_mod_`、`auth` 和 `approver`。 + +```solidity + modifier _mod_(address sender, address recipient, uint256 amount){ + _; + } +``` + +`_mod_` 接收三个参数,但不对它们做任何处理。 为什么要有它? + +```solidity + modifier auth() { + require(msg.sender == contract_owner, "Not allowed to interact"); + _; + } + + modifier approver() { + require(msg.sender == contract_owner, "Not allowed to interact"); + _; + } +``` + +`auth` 和 `approver` 更合理,因为它们检查合约是否由 `contract_owner` 调用。 我们期望某些特权操作,例如铸币,仅限于该帐户。 然而,设置两个功能_完全相同的_独立函数有什么意义呢? + +## 我们可以自动检测到什么? {#what-can-we-detect-automatically} + +通过查看 Etherscan,我们可以看到 `wARB` 是一个诈骗代币。 然而,这是一个中心化的解决方案。 理论上,Etherscan 可能会被颠覆或黑客攻击。 最好能够独立判断一个代币是否合法。 + +我们可以通过查看它们发出的事件来使用一些技巧来识别一个 ERC-20 代币是否可疑(无论是骗局还是写得非常糟糕)。 + +## 可疑的 `Approval` 事件 {#suspicious-approval-events} + +[`Approval` 事件](https://eips.ethereum.org/EIPS/eip-20#approval)只应在直接请求下发生(与 [`Transfer` 事件](https://eips.ethereum.org/EIPS/eip-20#transfer-1) 不同,后者可能因授权而发生)。 关于此问题的详细解释以及为何请求需要是直接的,而不是由合约介导,请参阅 [Solidity 文档](https://docs.soliditylang.org/en/v0.8.20/security-considerations.html#tx-origin)。 + +这意味着批准从[外部所有的帐户](/developers/docs/accounts/#types-of-account)支出的 `Approval` 事件必须来自源于该帐户且目的地为 ERC-20 合约的交易。 来自外部所有的帐户的任何其他类型的批准都是可疑的。 + +这里有一个[识别这类事件的程序](https://github.com/qbzzt/20230915-scam-token-detection),它使用了 [viem](https://viem.sh/) 和 [TypeScript](https://www.typescriptlang.org/docs/),这是一种具有类型安全的 JavaScript 变体。 要运行它: + +1. 将 `.env.example` 复制到 `.env`。 +2. 编辑 `.env` 以提供以太坊主网节点的 URL。 +3. 运行 `pnpm install` 以安装必要的包。 +4. 运行 `pnpm susApproval` 以查找可疑的批准。 + +下面是逐行解释: + +```typescript +import { + Address, + TransactionReceipt, + createPublicClient, + http, + parseAbiItem, +} from "viem" +import { mainnet } from "viem/chains" +``` + +从 `viem` 导入类型定义、函数和链定义。 + +```typescript +import { config } from "dotenv" +config() +``` + +读取 `.env` 以获取 URL。 + +```typescript +const client = createPublicClient({ + chain: mainnet, + transport: http(process.env.URL), +}) +``` + +创建一个 Viem 客户端。 我们只需要从区块链读取数据,所以这个客户端不需要私钥。 + +```typescript +const testedAddress = "0xb047c8032b99841713b8e3872f06cf32beb27b82" +const fromBlock = 16859812n +const toBlock = 16873372n +``` + +可疑 ERC-20 合约的地址,以及我们将在其中查找事件的区块。 节点提供商通常会限制我们读取事件的能力,因为带宽可能会变得昂贵。 幸运的是,`wARB` 在 18 小时内没有被使用,所以我们可以查找所有事件(总共只有 13 个)。 + +```typescript +const approvalEvents = await client.getLogs({ + address: testedAddress, + fromBlock, + toBlock, + event: parseAbiItem( + "event Approval(address indexed _owner, address indexed _spender, uint256 _value)" + ), +}) +``` + +这是向 Viem 请求事件信息的方式。 当我们向它提供确切的事件签名,包括字段名称时,它会为我们解析事件。 + +```typescript +const isContract = async (addr: Address): boolean => + await client.getBytecode({ address: addr }) +``` + +我们的算法仅适用于外部所有的帐户。 如果 `client.getBytecode` 返回任何字节码,这意味着这是一个合约,我们应该直接跳过它。 + +如果你以前没有使用过 TypeScript,函数定义可能看起来有点奇怪。 我们不仅告诉它第一个(也是唯一的)参数叫做 `addr`,还告诉它类型是 `Address`。 同样,`: boolean` 部分告诉 TypeScript 该函数的返回值是布尔值。 + +```typescript +const getEventTxn = async (ev: Event): TransactionReceipt => + await client.getTransactionReceipt({ hash: ev.transactionHash }) +``` + +这个函数从一个事件中获取交易收据。 我们需要收据来确保我们知道交易的目的地是什么。 + +```typescript +const suspiciousApprovalEvent = async (ev : Event) : (Event | null) => { +``` + +这是最重要的函数,它实际决定了一个事件是否可疑。 返回类型 `(Event | null)` 告诉 TypeScript 这个函数可以返回一个 `Event` 或 `null`。 如果事件不可疑,我们返回 `null`。 + +```typescript +const owner = ev.args._owner +``` + +Viem 有字段名称,所以它为我们解析了事件。 `_owner` 是要花费的代币的所有者。 + +```typescript +// 合约的批准不可疑 +if (await isContract(owner)) return null +``` + +如果所有者是合约,则假定此批准不可疑。 要检查合约的批准是否可疑,我们需要追踪交易的完整执行过程,看它是否到达了所有者合约,以及该合约是否直接调用了 ERC-20 合约。 这比我们想做的要消耗更多资源。 + +```typescript +const txn = await getEventTxn(ev) +``` + +如果批准来自外部所有的帐户,获取导致它的交易。 + +```typescript +// 如果批准来自不是交易 `from` 的 EOA 所有者,则该批准是可疑的 +if (owner.toLowerCase() != txn.from.toLowerCase()) return ev +``` + +我们不能只检查字符串是否相等,因为地址是十六进制的,所以它们包含字母。 有时,例如在 `txn.from` 中,这些字母都是小写的。 在其他情况下,例如 `ev.args._owner`,地址是[用于错误识别的混合大小写](https://eips.ethereum.org/EIPS/eip-55)。 + +但是如果交易不是来自所有者,并且该所有者是外部所有的,那么我们就有一个可疑的交易。 + +```typescript +// 如果交易目的地不是我们正在 +// 调查的 ERC-20 合约,那也是可疑的 +if (txn.to.toLowerCase() != testedAddress) return ev +``` + +同样,如果交易的 `to` 地址,即第一个被调用的合约,不是正在调查的 ERC-20 合约,那么它就是可疑的。 + +```typescript + // 如果没有理由怀疑,则返回 null。 + return null +} +``` + +如果两个条件都不成立,那么 `Approval` 事件就不可疑。 + +```typescript +const testPromises = approvalEvents.map((ev) => suspiciousApprovalEvent(ev)) +const testResults = (await Promise.all(testPromises)).filter((x) => x != null) + +console.log(testResults) +``` + +[`async` 函数](https://www.w3schools.com/js/js_async.asp)返回一个 `Promise` 对象。 使用常见语法 `await x()`,我们在继续处理之前等待该 `Promise` 完成。 这在编程和理解上很简单,但效率也很低。 在等待特定事件的 `Promise` 完成时,我们已经可以开始处理下一个事件了。 + +这里我们使用 [`map`](https://www.w3schools.com/jsref/jsref_map.asp) 来创建一个 `Promise` 对象数组。 然后我们使用 [`Promise.all`](https://www.javascripttutorial.net/es6/javascript-promise-all/) 等待所有这些 promise 完成。 然后我们 [`filter`](https://www.w3schools.com/jsref/jsref_filter.asp) 这些结果以移除不可疑的事件。 + +### 可疑的 `Transfer` 事件 {#suspicious-transfer-events} + +另一种识别诈骗代币的可能方法是查看它们是否有任何可疑的转账。 例如,从没有那么多代币的帐户进行的转账。 你可以看到[如何实现这个测试](https://github.com/qbzzt/20230915-scam-token-detection/blob/main/susTransfer.ts),但 `wARB` 没有这个问题。 + +## 结论 {#conclusion} + +ERC-20 诈骗的自动检测存在[假阴性](https://en.wikipedia.org/wiki/False_positives_and_false_negatives#False_negative_error)问题,因为骗局可以使用一个完全正常的 ERC-20 代币合约,而这个合约只是不代表任何真实的东西。 所以你应该总是尝试_从可信来源获取代币地址_。 + +自动检测在某些情况下可以提供帮助,例如在 DeFi 组件中,那里有许多代币,需要自动处理。 但一如既往,[买家自负](https://www.investopedia.com/terms/c/caveatemptor.asp),自己做研究,并鼓励你的用户也这样做。 + +[点击此处查看我的更多作品](https://cryptodocguy.pro/)。 From 32a04d67a4a4aaf1ed4367ec5f8b7326644f977d Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:23 -0800 Subject: [PATCH 122/581] update(i18n): public/content/translations/zh/developers/docs/consensus-mechanisms/index.md --- .../docs/consensus-mechanisms/index.md | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/public/content/translations/zh/developers/docs/consensus-mechanisms/index.md b/public/content/translations/zh/developers/docs/consensus-mechanisms/index.md index 401a2d5fc06..733e2047eab 100644 --- a/public/content/translations/zh/developers/docs/consensus-mechanisms/index.md +++ b/public/content/translations/zh/developers/docs/consensus-mechanisms/index.md @@ -4,17 +4,17 @@ description: 解释分布式系统中的协商一致协议及其在以太坊中 lang: zh --- -“共识机制”一词常常泛指“权益证明”、“工作量证明”或“权威证明”协议。 不过,这些协议只是共识机制的组成部分,用于防范[女巫攻击](/glossary/#sybil-attack)。 共识机制是由一整套想法、协议和激励构成的体系,使得一系列分布式节点能够就区块链状态达成一致。 +“共识机制”一词常常泛指“权益证明”、“工作量证明”或“权威证明”协议。 但是,它们只是共识机制中用于防御[女巫攻击](/glossary/#sybil-attack)的部分。 共识机制是由一整套想法、协议和激励构成的体系,使得一系列分布式节点能够就区块链状态达成一致。 ## 前提条件 {#prerequisites} -为了更好地理解此页面,我们建议你先阅读[以太坊简介](/developers/docs/intro-to-ethereum/)。 +为了更好地理解本页面,我们建议您先阅读我们的[以太坊简介](/developers/docs/intro-to-ethereum/)。 ## 什么是共识? {#what-is-consensus} 我们所说的共识,是指达成了广泛的一致。 比如,一群人去看电影, 如果他们对于提议“看某部电影”没有任何异议,那么就可以说共识达成了。 如果存在异议,那么他们就必须通过某种方法决定看哪一部电影。 在极端情况下,这群人就会分开。 -对于以太坊区块链来说,达成共识的过程是标准化的,达成共识意味着全网络中至少 66% 的节点就网络的全局状态达成一致。 +对于以太坊区块链来说,该过程是标准化的,达成共识意味着全网络中至少 66% 的节点就网络的全局状态达成一致。 ## 什么是共识机制? {#what-is-a-consensus-mechanism} @@ -28,21 +28,21 @@ lang: zh 这些部分共同组成了共识机制。 -## 共识机制类型 {#types-of-consensus-mechanisms} +## 共识机制的类型 {#types-of-consensus-mechanisms} ### 基于工作量证明 {#proof-of-work} -和比特币类似,以太坊也曾经使用基于**工作量证明 (PoW)** 的共识协议。 +与比特币类似,以太坊曾一度使用基于**工作量证明 (PoW)** 的共识协议。 #### 区块创建 {#pow-block-creation} 矿工相互竞争以创建新的包括已处理交易的区块。 优胜者将与网络中的其他矿工分享该新区块,以获得新铸造的以太币。 数学问题解决速度最快的计算机可以在比赛中获胜。 这将生成当前区块和之前的区块之间的加密链接。 解决此问题就是要在“工作量证明”中开展的工作了。 规范链随后由一条叉选择规则确定,该规则选择了一组区块,这些区块在挖矿方面做得最多。 -#### 安全性 {#pow-security} +#### 安全 {#pow-security} 因为用户需要拥有网络中 51% 的算力才能够欺骗整条链,因此网络的安全得以保证。 这将需要巨大的设备与能源投入,支出很有可能超过收益。 -关于[工作量证明](/developers/docs/consensus-mechanisms/pow/)的更多信息 +更多关于[工作量证明](/developers/docs/consensus-mechanisms/pow/) ### 基于权益证明 {#proof-of-stake} @@ -52,41 +52,41 @@ lang: zh 验证者创建区块。 每个时隙中都会随机选择一个验证者成为区块提议者。 区块提议者的共识客户端请求配对执行客户端对交易打包,作为“执行负载”。 然后它们将“执行负载”包装成共识数据并形成一个区块,再把这个区块发送给以太坊网络上的其他节点。 这样的区块生产会得到以太币奖励。 在极少数情况下,一个时隙中产生了多个可能的区块,或节点在不同时间收到区块,分叉选择算法就会选择使形成的链具有最大认证权重的那个区块(认证权重是指为该区块提供认证的验证者数量,并根据验证者质押的以太币余额调整)。 -#### 安全性 {#pos-security} +#### 安全 {#pos-security} 权益证明体系保障加密经济的安全,因为攻击者若试图控制整条链,就必须销毁大量以太币。 奖励机制会奖励诚实的质押人,而惩罚机制则阻止质押人作出恶意行为。 -有关[权益证明](/developers/docs/consensus-mechanisms/pos/)的更多信息 +更多关于[权益证明](/developers/docs/consensus-mechanisms/pos/) -### 直观指南 {#types-of-consensus-video} +### 视频指南 {#types-of-consensus-video} 观看视频,详细了解以太坊采用的不同类型共识机制: -### Sybil 抗性和链选择 {#sybil-chain} +### 抗女巫攻击与链选择 {#sybil-chain} 仅仅工作量证明和权益证明还不能成为共识协议,然而为了简便起见,通常将它们称为共识协议。 它们实际上是女巫攻击防御机制和区块作者选择器;它们是决定最新区块的作者的一种方式。 另一个重要组成部分是链选择(又称分叉选择)算法,它让节点可以在同一位置有多个区块的情况下在链头部选择一个正确区块。 -**女巫攻击防御**衡量一种协议如何抗衡女巫攻击。 防御这种攻击对去中心化区块链至关重要,并使矿工和验证者能够在资源投入的基础上获得平等奖励。 通过让用户消耗大量能源或提供大量抵押品,工作量证明和权益证明可以防止这种情况。 这些保护措施通过经济手段对女巫攻击形成威慑。 +**抗女巫攻击能力**衡量协议抵御女巫攻击的能力。 防御这种攻击对去中心化区块链至关重要,并使矿工和验证者能够在资源投入的基础上获得平等奖励。 通过让用户消耗大量能源或提供大量抵押品,工作量证明和权益证明可以防止这种情况。 这些保护措施通过经济手段对女巫攻击形成威慑。 -**链选择规则**用于决定哪条链才是“正确”的。 比特币使用“最长链”规则。这意味着,任何最长的区块链,都会被其他节点作为有效链接受并与之协作。 对于工作量证明链,最长链由链上累积的工作量证明总难度决定。 以太坊曾经也使用过最长链规则;然而权益证明机制下运行的以太坊采用了经过更新的分叉选择算法,衡量链的“权重”。 权重是验证者投票的累积总数,并以验证者质押的以太币余额加权。 +**链选择规则**用于决定哪条链是“正确”的链。 比特币使用“最长链”规则。这意味着,任何最长的区块链,都会被其他节点作为有效链接受并与之协作。 对于工作量证明链,最长链由链上累积的工作量证明总难度决定。 以太坊曾经也使用过最长链规则,但现在运行在权益证明机制下的以太坊采用了一种最新的分叉选择算法,以此衡量链的“权重”。 权重是验证者投票的累积总数,并以验证者质押的以太币余额加权。 -以太坊使用被称为 [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) 的共识机制,该机制结合了 [Casper 友好的最终确定性工具权益证明](https://arxiv.org/abs/1710.09437)和 [GHOST 分叉选择规则](https://arxiv.org/abs/2003.03052)。 +以太坊使用一种称为 [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) 的共识机制,它将 [Casper FFG 权益证明](https://arxiv.org/abs/1710.09437)与 [GHOST 分叉选择规则](https://arxiv.org/abs/2003.03052)相结合。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [什么是区块链共识算法?](https://academy.binance.com/en/articles/what-is-a-blockchain-consensus-algorithm) -- [什么是 Nakamoto 共识? 完整的初学者指南](https://blockonomi.com/nakamoto-consensus/) -- [Casper 的工作原理](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d) +- [什么是中本聪共识? 完全初学者指南](https://blockonomi.com/nakamoto-consensus/) +- [Casper 如何工作?](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d) - [关于工作量证明区块链的安全性和性能](https://eprint.iacr.org/2016/555.pdf) -- [拜占庭问题](https://en.wikipedia.org/wiki/Byzantine_fault) +- [拜占庭故障](https://en.wikipedia.org/wiki/Byzantine_fault) -_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_ +_你还知道哪些对你有帮助的社区资源? 请编辑本页面并添加进来!_ -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} - [工作量证明](/developers/docs/consensus-mechanisms/pow/) -- [矿工](/developers/docs/consensus-mechanisms/pow/mining/) +- [挖矿](/developers/docs/consensus-mechanisms/pow/mining/) - [权益证明](/developers/docs/consensus-mechanisms/pos/) - [权威证明](/developers/docs/consensus-mechanisms/poa/) From 798084716d60a06d827c94a7b8d8d1a5b5e233a5 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:26 -0800 Subject: [PATCH 123/581] update(i18n): public/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md --- .../zh/developers/docs/standards/tokens/erc-777/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md b/public/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md index 43cbdd65ffb..1e47f338994 100644 --- a/public/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md +++ b/public/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md @@ -1,6 +1,6 @@ --- title: ERC-777 代币标准 -description: null +description: 了解 ERC-777,带有钩子的改进的同质化代币标准,不过仍然推荐使用 ERC-20 以确保安全。 lang: zh --- From 89d41d1cfbeeee960bdbb58e28ea832c680f7b7f Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:29 -0800 Subject: [PATCH 124/581] update(i18n): public/content/translations/zh/developers/docs/standards/tokens/erc-1363/index.md --- .../docs/standards/tokens/erc-1363/index.md | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 public/content/translations/zh/developers/docs/standards/tokens/erc-1363/index.md diff --git a/public/content/translations/zh/developers/docs/standards/tokens/erc-1363/index.md b/public/content/translations/zh/developers/docs/standards/tokens/erc-1363/index.md new file mode 100644 index 00000000000..a8be07d02e4 --- /dev/null +++ b/public/content/translations/zh/developers/docs/standards/tokens/erc-1363/index.md @@ -0,0 +1,204 @@ +--- +title: ERC-1363 可支付代币标准 +description: ERC-1363 是 ERC-20 代币的一种扩展接口,支持在转账后于接收方合约上执行自定义逻辑,或在批准后于支出方合约上执行自定义逻辑,所有操作都在单笔交易中完成。 +lang: zh +--- + +## 简介 {#introduction} + +### 什么是 ERC-1363? {#what-is-erc1363} + +ERC-1363 是 ERC-20 代币的一种扩展接口,支持在转账后于接收方合约上执行自定义逻辑,或在批准后于支出方合约上执行自定义逻辑,所有操作都在单笔交易中完成。 + +### 与 ERC-20 的区别 {#erc20-differences} + +标准的 ERC-20 操作(如 `transfer`、`transferFrom` 和 `approve`)不允许在没有单独交易的情况下,在接收方或支出方合约上执行代码。 +这给 UI 开发带来了复杂性,也给应用推广带来了阻力,因为用户必须等待第一笔交易执行完毕,然后才能提交第二笔交易。 +他们还必须支付两次燃料费用。 + +ERC-1363 使同质化代币能够更轻松地执行操作,并且无需使用任何链下侦听器即可工作。 +它允许在单笔交易中,于转账或批准后,对接收方或支出方合约进行回调。 + +## 前提条件 {#prerequisites} + +为更好地理解本页面,我们建议你先阅读以下内容: + +- [代币标准](/developers/docs/standards/tokens/) +- [ERC-20](/developers/docs/standards/tokens/erc-20/) + +## 正文 {#body} + +ERC-1363 为 ERC-20 代币引入了一个标准应用程序接口 (API),用于在 `transfer`、`transferFrom` 或 `approve` 之后与智能合约交互。 + +该标准提供了转移代币的基本功能,并允许代币被批准,以便链上第三方可以使用它们,然后在接收方或支出方合约上进行回调。 + +有很多关于可接受 ERC-20 回调的智能合约的提议用例。 + +例如: + +- **众筹**:发送代币会触发即时奖励分配。 +- **服务**:付款一步即可激活服务访问权限。 +- **发票**:代币自动结算发票。 +- **订阅**:批准年费率会在支付第一个月费用时激活订阅。 + +因此,它最初被命名为\*\*“可支付代币”\*\*。 + +回调行为进一步扩展了其效用,实现了无缝交互,例如: + +- **质押**:转移的代币会触发在质押合约中自动锁定。 +- **投票**:收到的代币在治理系统中登记为投票。 +- **交换**:代币批准一步即可激活交换逻辑。 + +在所有需要在收到转账或批准后执行回调的情况下,ERC-1363 代币都可用于特定效用。 +通过验证接收方处理代币的能力,ERC-1363 还有助于避免智能合约中的代币丢失或代币锁定。 + +与其他 ERC-20 扩展提案不同,ERC-1363 不会覆盖 ERC-20 的 `transfer` 和 `transferFrom` 方法,而是定义了要实现的接口 ID,从而保持与 ERC-20 的向后兼容性。 + +来自 [EIP-1363](https://eips.ethereum.org/EIPS/eip-1363): + +### 方法 {#methods} + +实现 ERC-1363 标准的智能合约**必须**实现 `ERC1363` 接口以及 `ERC20` 和 `ERC165` 接口中的所有函数。 + +```solidity +pragma solidity ^0.8.0; + +/** + * @title ERC1363 + * @dev ERC-20 代币的扩展接口,支持在单笔交易中,于 `transfer` 或 `transferFrom` 后在接收方合约上执行代码,或于 `approve` 后在支出方合约上执行代码。 + */ +interface ERC1363 is ERC20, ERC165 { + /* + * 注意:此接口的 ERC-165 标识符是 0xb0202a11。 + * 0xb0202a11 === + * bytes4(keccak256('transferAndCall(address,uint256)')) ^ + * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^ + * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^ + * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^ + * bytes4(keccak256('approveAndCall(address,uint256)')) ^ + * bytes4(keccak256('approveAndCall(address,uint256,bytes)')) + */ + + /** + * @dev 从调用者的帐户向 `to` 转移 `value` 数量的代币,然后在 `to` 上调用 `ERC1363Receiver::onTransferReceived`。 + * @param to 代币转入的地址。 + * @param value 要转移的代币数量。 + * @return 一个布尔值,表示操作成功,除非抛出错误。 + */ + function transferAndCall(address to, uint256 value) external returns (bool); + + /** + * @dev 从调用者的帐户向 `to` 转移 `value` 数量的代币,然后在 `to` 上调用 `ERC1363Receiver::onTransferReceived`。 + * @param to 代币转入的地址。 + * @param value 要转移的代币数量。 + * @param data 额外数据,无特定格式,在对 `to` 的调用中发送。 + * @return 一个布尔值,表示操作成功,除非抛出错误。 + */ + function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool); + + /** + * @dev 使用授权机制将 `value` 数量的代币从 `from` 转移到 `to`,然后在 `to` 上调用 `ERC1363Receiver::onTransferReceived`。 + * @param from 发送代币的地址。 + * @param to 代币转入的地址。 + * @param value 要转移的代币数量。 + * @return 一个布尔值,表示操作成功,除非抛出错误。 + */ + function transferFromAndCall(address from, address to, uint256 value) external returns (bool); + + /** + * @dev 使用授权机制将 `value` 数量的代币从 `from` 转移到 `to`,然后在 `to` 上调用 `ERC1363Receiver::onTransferReceived`。 + * @param from 发送代币的地址。 + * @param to 代币转入的地址。 + * @param value 要转移的代币数量。 + * @param data 额外数据,无特定格式,在对 `to` 的调用中发送。 + * @return 一个布尔值,表示操作成功,除非抛出错误。 + */ + function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool); + + /** + * @dev 将调用者代币的 `value` 数量设置为 `spender` 的授权额度,然后在 `spender` 上调用 `ERC1363Spender::onApprovalReceived`。 + * @param spender 将使用资金的地址。 + * @param value 要使用的代币数量。 + * @return 一个布尔值,表示操作成功,除非抛出错误。 + */ + function approveAndCall(address spender, uint256 value) external returns (bool); + + /** + * @dev 将调用者代币的 `value` 数量设置为 `spender` 的授权额度,然后在 `spender` 上调用 `ERC1363Spender::onApprovalReceived`。 + * @param spender 将使用资金的地址。 + * @param value 要使用的代币数量。 + * @param data 额外数据,无特定格式,在对 `spender` 的调用中发送。 + * @return 一个布尔值,表示操作成功,除非抛出错误。 + */ + function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool); +} + +interface ERC20 { + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval(address indexed owner, address indexed spender, uint256 value); + function transfer(address to, uint256 value) external returns (bool); + function transferFrom(address from, address to, uint256 value) external returns (bool); + function approve(address spender, uint256 value) external returns (bool); + function totalSupply() external view returns (uint256); + function balanceOf(address account) external view returns (uint256); + function allowance(address owner, address spender) external view returns (uint256); +} + +interface ERC165 { + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} +``` + +想要通过 `transferAndCall` 或 `transferFromAndCall` 接受 ERC-1363 代币的智能合约**必须**实现 `ERC1363Receiver` 接口: + +```solidity +/** + * @title ERC1363Receiver + * @dev 任何想要支持 ERC-1363 代币合约的 `transferAndCall` 或 `transferFromAndCall` 的合约接口。 + */ +interface ERC1363Receiver { + /** + * @dev 每当 `operator` 从 `from` 通过 `ERC1363::transferAndCall` 或 `ERC1363::transferFromAndCall` 将 ERC-1363 代币转移到此合约时,都会调用此函数。 + * + * 注意:要接受转账,此函数必须返回 + * `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))` + * (即 0x88a7ca5c,或其自身的函数选择器)。 + * + * @param operator 调用 `transferAndCall` 或 `transferFromAndCall` 函数的地址。 + * @param from 代币转出的地址。 + * @param value 转移的代币数量。 + * @param data 额外数据,无特定格式。 + * @return 如果允许转账,则返回 `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))`,除非抛出错误。 + */ + function onTransferReceived(address operator, address from, uint256 value, bytes calldata data) external returns (bytes4); +} +``` + +想要通过 `approveAndCall` 接受 ERC-1363 代币的智能合约**必须**实现 `ERC1363Spender` 接口: + +```solidity +/** + * @title ERC1363Spender + * @dev 任何想要支持来自 ERC-1363 代币合约的 `approveAndCall` 的合约接口。 + */ +interface ERC1363Spender { + /** + * @dev 每当 ERC-1363 代币的 `owner` 通过 `ERC1363::approveAndCall` 批准此合约使用其代币时,都会调用此函数。 + * + * 注意:要接受批准,此函数必须返回 + * `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))` + * (即 0x7b04a2d0,或其自身的函数选择器)。 + * + * @param owner 调用 `approveAndCall` 函数且之前拥有代币的地址。 + * @param value 要使用的代币数量。 + * @param data 额外数据,无特定格式。 + * @return 如果允许批准,则返回 `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))`,除非抛出错误。 + */ + function onApprovalReceived(address owner, uint256 value, bytes calldata data) external returns (bytes4); +} +``` + +## 扩展阅读{#further-reading} + +- [ERC-1363:可支付代币标准](https://eips.ethereum.org/EIPS/eip-1363) +- [ERC-1363:GitHub 代码库](https://github.com/vittominacori/erc1363-payable-token) From 1cca57b998fbb2c4372b1babb5c21f0630716598 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:31 -0800 Subject: [PATCH 125/581] update(i18n): public/content/translations/zh/developers/docs/smart-contracts/verifying/index.md --- .../docs/smart-contracts/verifying/index.md | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/public/content/translations/zh/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/zh/developers/docs/smart-contracts/verifying/index.md index edf98cdd826..ec55019b78b 100644 --- a/public/content/translations/zh/developers/docs/smart-contracts/verifying/index.md +++ b/public/content/translations/zh/developers/docs/smart-contracts/verifying/index.md @@ -4,33 +4,33 @@ description: 以太坊智能合约源代码验证概述 lang: zh --- -[智能合约](/developers/docs/smart-contracts/)被设计成“去信任”,即用户去信任第三方(例如,开发者和团体)便可与智能合约交互。 去信任的一个必要条件就是用户和其他开发者必须能够验证智能合约的源代码。 而验证源代码能够向用户和开发者保证已发布的合约代码和以太坊区块链上运行的代码相同。 +[智能合约](/developers/docs/smart-contracts/)被设计为“去信任”的,这意味着用户在与合约交互之前,不必信任第三方(例如,开发者和公司)。 去信任的一个必要条件就是用户和其他开发者必须能够验证智能合约的源代码。 而验证源代码能够向用户和开发者保证已发布的合约代码和以太坊区块链上运行的代码相同。 区分“源代码验证”和“[形式化验证](/developers/docs/smart-contracts/formal-verification/)”很重要。 源代码验证指的是验证用高级语言(例如 Solidity)编写的智能合约的给定源代码是否能编译成在合约地址执行的相同字节码,下文将会详细说明。 而形式化验证则是验证智能合约的正确性,即验证合约行为是否符合预期。 合约验证尽管要视上下文而定,但是通常是指源代码验证。 ## 什么是源代码验证? {#what-is-source-code-verification} -在将智能合约部署在[以太坊虚拟机 (EVM)](/developers/docs/evm/) 中前,开发者会将合约源代码(即[用 Solidity](/developers/docs/smart-contracts/languages/) 或其他高级编程语言编写的指令)[编译](/developers/docs/smart-contracts/compiling/)成字节码。 不过,由于以太坊虚拟机无法解释高级指令,为了在以太坊虚拟机中执行合约逻辑,必须将源代码编译成字节码(即低级机器指令)。 +在将智能合约部署在[以太坊虚拟机 (EVM)](/developers/docs/evm/) 中前,开发者会[编译](/developers/docs/smart-contracts/compiling/)合约源代码(即用 [Solidity](/developers/docs/smart-contracts/languages/) 或其他高级编程语言编写的指令)成字节码。 不过,由于以太坊虚拟机无法解释高级指令,为了在以太坊虚拟机中执行合约逻辑,必须将源代码编译成字节码(即低级机器指令)。 为检测差异,源代码验证会对智能合约的源代码与合约创建过程中使用的编译字节码进行比较处理。 由于广告合约代码与区块链上运行的代码可能不同,因此验证智能合约极为重要。 通过智能合约验证,用户无需阅读机器代码就能通过编写合约所使用的高级语言来研究合约的行为。 函数、值以及变量名和评论与编译和部署的原始源代码一般是相同的。 这就让代码阅读变得更加容易了。 源代码验证还对代码文档做出了规定,以便最终用户了解智能合约的用途。 -### 什么是完全验证? {#full-verification} +### 什么是完全验证? 完全验证 {#full-verification} 源代码的某些部分不会影响编译好的字节码,如评论和变量名。 也就是说两段变量名和评论都不同的源代码能验证同一份合约。 这样一来,恶意行为者便能在源代码中添加欺骗性评论或给出误导性变量名,也能用与原始源代码不同的源代码来验证合约。 -要想避免这种情况,可以在字节码中添加额外数据作为源代码准确性的_加密保障_和编译信息的_指纹_。 必要的信息可以在 [Solidity 合约元数据](https://docs.soliditylang.org/en/v0.8.15/metadata.html)中找到,并且此文件的哈希值附在了合约的字节码中。 你可以在[元数据训练场](https://playground.sourcify.dev)中检查运行情况。 +要想避免这种情况,可以在字节码中添加额外数据,作为源代码准确性的_加密保障_和编译信息的_指纹_。 必要的信息可以在 [Solidity 的合约元数据](https://docs.soliditylang.org/en/v0.8.15/metadata.html)中找到,并且此文件的哈希会附加到合约的字节码中。 你可以在[元数据演练场](https://playground.sourcify.dev)中查看它的实际运行情况。 元数据文件包含有关合约的编译信息,合约中包括源文件和源文件的哈希值。 也就是说,一旦有任何源文件中的编译设置甚至是某个字节有所更改,整个元数据文件也会发生变化。 因此,附在字节码上的元数据文件的哈希值也会变化。 也就意味着只要合约的字节码和所附元数据哈希值与给定的源代码和编译设置相匹配,我们就能确定这就是原始编译中所使用的源代码,丝毫不差。 -这种利用元数据哈希值的验证方法就叫做**“[完全验证](https://docs.sourcify.dev/docs/full-vs-partial-match/)”**(也叫“完美验证”)。 如果元数据哈希值不匹配或是未用于验证,那就叫做“部分验证”,也是目前更为常见的合约验证方法。 可能会[植入恶意代码](https://samczsun.com/hiding-in-plain-sight/),如果不进行完全验证这些恶意代码未必会显现在经过验证的源代码中。 由于大多数开发者不了解完全验证,也不会保留自己编译的元数据文件,因此部分验证实际上才是目前验证合约的常用方法。 +这种利用元数据哈希的验证类型被称为\*\*“[完全验证](https://docs.sourcify.dev/docs/full-vs-partial-match/)”\*\*(也称“完美验证”)。 如果元数据哈希值不匹配或是未用于验证,那就叫做“部分验证”,也是目前更为常见的合约验证方法。 如果不进行完全验证,就可能[插入恶意代码](https://samczsun.com/hiding-in-plain-sight/),而这些代码不会在已验证的源代码中反映出来。 由于大多数开发者不了解完全验证,也不会保留自己编译的元数据文件,因此部分验证实际上才是目前验证合约的常用方法。 -## 为什么源代码验证如此重要? {#importance-of-source-code-verification} +## 为什么源代码验证如此重要? 源代码验证的重要性 {#importance-of-source-code-verification} ### 去信任 {#trustlessness} -去信任可以说是智能合约和[去中心化应用程序 (dapp)](/developers/docs/dapps/) 的最重要的先决条件。 智能合约是“不可变”的,无法更改;合约只会执行部署时代码中定义的业务逻辑。 这意味着开发者和企业在以太坊上部署合约后无法篡改合约代码。 +去信任可以说是智能合约和[去中心化应用程序 (dapps)](/developers/docs/dapps/) 最重要的前提。 智能合约是“不可变”的,无法更改;合约只会执行部署时代码中定义的业务逻辑。 这意味着开发者和企业在以太坊上部署合约后无法篡改合约代码。 为了让智能合约去信任,合约代码应可供独立验证。 虽然每份智能合约的编译字节码都可以在区块链上公开获取,但低级语言对于开发者和用户来说都难以理解。 @@ -40,13 +40,13 @@ lang: zh ### 用户安全 {#user-safety} -智能合约通常涉及大量质押资金。 这就需要更高的安全保证,并在使用智能合约前对其逻辑进行验证。 问题在于,不法开发者可以通过在智能合约中插入恶意代码来欺骗用户。 如果不进行验证,恶意智能合约就可能存在[后门](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts)、矛盾的访问控制机制、可被利用的漏洞以及其他危害用户安全的问题,而这些问题甚至难以察觉。 +智能合约通常涉及大量质押资金。 这就需要更高的安全保证,并在使用智能合约前对其逻辑进行验证。 问题在于,不法开发者可以通过在智能合约中插入恶意代码来欺骗用户。 若不经验证,恶意智能合约可能包含[后门](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts)、有争议的访问控制机制、可利用的漏洞,以及其他危及用户安全却未被发现的问题。 公布智能合约的源代码文件可以让审查人员等相关人员更容易评估合约,预防潜在攻击向量。 通过多方独立验证智能合约,用户可以获得更加强有力的安全性保障。 ## 如何验证以太坊智能合约的源代码 {#source-code-verification-for-ethereum-smart-contracts} -[在以太坊上部署智能合约](/developers/docs/smart-contracts/deploying/)需要向一个特殊地址发送包含数据有效载荷(编译字节码)的交易。 数据有效载荷通过编译源代码以及附加到交易中的数据有效载荷的合约实例的[构造函数参数](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor)来生成。 编译是确定性的,这意味着如果使用相同的源文件和编译设置(如编译器版本、优化器),它总是产生相同的输出(即合约字节码)。 +[在以太坊上部署智能合约](/developers/docs/smart-contracts/deploying/)需要向一个特殊地址发送一笔包含数据负载(已编译的字节码)的交易。 数据负载由编译源代码生成,合约实例的[构造函数参数](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor)会附加到交易数据负载的末尾。 编译是确定性的,这意味着如果使用相同的源文件和编译设置(例如,编译器版本、优化器),它总是产生相同的输出(即合约字节码)。 ![智能合约源代码验证示意图](./source-code-verification.png) @@ -62,7 +62,7 @@ lang: zh 5. 此外,如果字节码末尾的元数据哈希值匹配,则将是完全匹配。 -请注意,这只是对智能合约验证过于简单的描述,还有像具有[不可变变量](https://docs.sourcify.dev/docs/immutables/)等许多例外情况不适用。 +请注意,这只是对验证的简单描述,有很多例外情况(例如存在[不可变变量](https://docs.sourcify.dev/docs/immutables/))不适用于此方法。 ## 源代码验证工具 {#source-code-verification-tools} @@ -70,38 +70,44 @@ lang: zh ### Etherscan {#etherscan} -尽管 Etherscan 通常作为[以太坊区块链浏览器](/developers/docs/data-and-analytics/block-explorers/)被大众所知晓,但它也能为智能合约开发者和用户提供[源代码验证服务](https://etherscan.io/verifyContract)。 +虽然 Etherscan 主要作为[以太坊区块链浏览器](/developers/docs/data-and-analytics/block-explorers/)而闻名,但它也为智能合约开发者和用户提供[源代码验证服务](https://etherscan.io/verifyContract)。 -Etherscan 允许你根据原始数据有效载荷(源代码、库地址、编译器设置、合约地址等)重新编译合约字节码。 如果重新编译的字节码与链上合约的字节码(和构造函数参数)相关联,那么[合约就通过了验证](https://info.etherscan.com/types-of-contract-verification/)。 +Etherscan 允许你根据原始数据有效载荷(源代码、库地址、编译器设置、合约地址等)重新编译合约字节码。 如果重新编译的字节码与链上合约的字节码(和构造函数参数)匹配,则[该合约通过验证](https://info.etherscan.com/types-of-contract-verification/)。 -一旦通过验证,你的合约源代码将获得“已验证”标签,并发布在 Etherscan 上供他人审查。 它还会被添加到[已验证合约](https://etherscan.io/contractsVerified/)部分 — 这是包含源代码已验证的智能合约的存储库。 +一旦通过验证,你的合约源代码将获得“已验证”标签,并发布在 Etherscan 上供他人审查。 它还会被添加到[已验证合约](https://etherscan.io/contractsVerified/)部分——一个存储已验证源代码的智能合约的存储库。 -Etherscan 是最常用的合约验证工具。 但是,Etherscan 的合约验证有一个缺点:它无法比较链上字节码和重新编译字节码的**元数据哈希值**。 因此,Etherscan 中的匹配结果是部分匹配。 +Etherscan 是最常用的合约验证工具。 然而,Etherscan 的合约验证有一个缺点:它无法比较链上字节码和重新编译字节码的**元数据哈希**。 因此,Etherscan 中的匹配结果是部分匹配。 [更多关于在 Etherscan 上验证合约的信息](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327)。 +### Blockscout {#blockscout} + +[Blockscout](https://blockscout.com/) 是一个开源区块链浏览器,也为智能合约开发者和用户提供[合约验证服务](https://eth.blockscout.com/contract-verification)。 作为一个开源替代方案,Blockscout 提供了验证过程的透明性,并支持社区通过贡献来改进验证过程。 + +与其他验证服务类似,Blockscout 允许你通过重新编译字节码并将其与已部署的合约比较来验证合约的源代码。 一旦验证通过,你的合约将收到验证状态,并且源代码将被公开以便审计和交互。 已验证的合约也会在 Blockscout 的[已验证合约存储库](https://eth.blockscout.com/verified-contracts)中列出,以便轻松浏览和发现。 + ### Sourcify {#sourcify} -[Sourcify](https://sourcify.dev/#/verifier) 是另一种用于验证开源和去中心化合约的工具。 它不是区块浏览器,只能在[不同的基于以太坊虚拟机的网络](https://docs.sourcify.dev/docs/chains)上验证合约。 它充当公共基础设施,作为其他工具的构建基础,旨在使用元数据文件中的[应用程序二进制接口](/developers/docs/smart-contracts/compiling/#web-applications)和 [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) 注释来实现更人性化的合约交互。 +[Sourcify](https://sourcify.dev/#/verifier)是另一个用于验证合约的工具,它是开源和去中心化的。 它不是区块浏览器,只在[不同的基于 EVM 的网络](https://docs.sourcify.dev/docs/chains)上验证合约。 它可作为其他工具在其上构建的公共基础设施,旨在使用元数据文件中的[ABI](/developers/docs/smart-contracts/compiling/#web-applications) 和 [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) 注释,实现更方便用户的合约交互。 -与 Etherscan 不同,Sourcify 支持与元数据哈希值完全匹配。 经过验证的合约在超文本传输协议和 [星际文件系统](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs) 上的[公共存储库](https://docs.sourcify.dev/docs/repository/)中访问,这是一种去中心化的[内容寻址](https://web3.storage/docs/concepts/content-addressing/)存储。 由于附加的元数据哈希值是 IPFS 哈希值,因此可以通过 IPFS 获取合约的元数据文件。 +与 Etherscan 不同,Sourcify 支持与元数据哈希值完全匹配。 已验证的合约通过 HTTP 和 [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs) 在其[公共存储库](https://docs.sourcify.dev/docs/repository/)中提供,IPFS 是一种去中心化的[内容寻址](https://docs.storacha.network/concepts/content-addressing/)存储。 由于附加的元数据哈希值是 IPFS 哈希值,因此可以通过 IPFS 获取合约的元数据文件。 -此外,人们还可以通过星际文件系统检索源代码文件,因为这些文件的星际文件系统哈希值也可以在元数据中找到。 可以通过应用程序接口或[用户界面](https://sourcify.dev/#/verifier)或使用插件提供元数据文件和源文件来验证合约。 Sourcify 监控工具还会监查新区块上的合约创建情况,并尝试验证合约是否在 IPFS 上公布了元数据和源文件。 +此外,人们还可以通过星际文件系统检索源代码文件,因为这些文件的星际文件系统哈希值也可以在元数据中找到。 可以通过其 API 或[用户界面](https://sourcify.dev/#/verifier)提供元数据文件和源文件,或使用插件来验证合约。 Sourcify 监控工具还会监查新区块上的合约创建情况,并尝试验证合约是否在 IPFS 上公布了元数据和源文件。 -[有关在 Sourcify 上验证合约的更多信息](https://blog.soliditylang.org/2020/06/25/sourcify-faq/)。 +[更多关于在 Sourcify 上验证合约的信息](https://soliditylang.org/blog/2020/06/25/sourcify-faq/)。 ### Tenderly {#tenderly} -[Tenderly 平台](https://tenderly.co/)使 Web3 开发者能够构建、测试、监控和操作智能合约。 Tenderly 将调试工具、可观测性和构建区块的基础设施相结合,帮助开发者加快智能合约的开发。 要完全启用 Tenderly 功能,开发者需要使用多种方法[执行源代码验证](https://docs.tenderly.co/monitoring/contract-verification)。 +[Tenderly 平台](https://tenderly.co/)使 Web3 开发者能够构建、测试、监控和操作智能合约。 Tenderly 将调试工具、可观测性和构建区块的基础设施相结合,帮助开发者加快智能合约的开发。 要完全启用 Tenderly 的功能,开发者需要使用多种方法来[执行源代码验证](https://docs.tenderly.co/monitoring/contract-verification)。 可以私下或公开验证合约。 如果是私下验证,智能合约只有你(和项目中的其他成员)可见。 而公开验证合约可让使用 Tenderly 平台的每个人都能看到。 -你可以使用[仪表板](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-a-smart-contract)、[Tenderly Hardhat 插件](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-the-tenderly-hardhat-plugin)或 [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli) 来验证你的合约。 +你可以使用[仪表板](https://docs.tenderly.co/contract-verification)、[Tenderly Hardhat 插件](https://docs.tenderly.co/contract-verification/hardhat)或 [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli) 来验证你的合约。 通过仪表板验证合约时,需要导入源文件或 Solidity 编译器生成的元数据文件、地址/网络和编译器设置。 使用 Tenderly Hardhat 插件可以更轻松地控制验证过程,让你可以在自动(无代码)和手动(基于代码)验证之间做出选择。 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [验证合约源代码](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/) From e1234886a7a217d6457aab89c556718d618bd0d4 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:33 -0800 Subject: [PATCH 126/581] update(i18n): public/content/translations/zh/developers/docs/smart-contracts/languages/index.md --- .../docs/smart-contracts/languages/index.md | 173 +++++++++--------- 1 file changed, 88 insertions(+), 85 deletions(-) diff --git a/public/content/translations/zh/developers/docs/smart-contracts/languages/index.md b/public/content/translations/zh/developers/docs/smart-contracts/languages/index.md index 98d353b80bb..b54fa9ead21 100644 --- a/public/content/translations/zh/developers/docs/smart-contracts/languages/index.md +++ b/public/content/translations/zh/developers/docs/smart-contracts/languages/index.md @@ -4,16 +4,16 @@ description: 两种主要的智能合约语言(Solidity 和 Vyper)的概述 lang: zh --- -关于以太坊的一个重要方面是,智能合约可以使用相对友好的开发者语言编程。 如果你熟悉 Python 或任何[大括号语言](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages),可以找到一种语法熟悉的语言。 +关于以太坊的一个重要方面是,智能合约可以使用相对友好的开发者语言编程。 如果你有 Python 或任何[花括号语言](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages)的经验,你可以找到一种语法熟悉的语言。 最受欢迎和维护得最好的两种语言是: - Solidity - Vyper -Remix 集成开发环境提供了一个全面的开发环境,用于创建和测试用 Solidity 和 Vyper 语言编写的智能合约。 [尝试使用浏览器版本的 Remix 集成开发环境](https://remix.ethereum.org)开始编写代码。 +Remix 集成开发环境提供了一个全面的开发环境,用于创建和测试用 Solidity 和 Vyper 语言编写的智能合约。 [试用浏览器内置的 Remix IDE](https://remix.ethereum.org) 开始编码。 -更有经验的开发者也可能想要使用 Yul:一种用于[以太坊虚拟机](/developers/docs/evm/)的中间语言,或者是 Yul+ 语言,这是一种 Yul 扩展。 +经验更丰富的开发者可能还想使用 Yul(一种用于[以太坊虚拟机](/developers/docs/evm/)的中间语言)或 Yul+(Yul 的扩展)。 如果你很好奇,喜欢帮助测试仍在大力发展的新语言,则可以尝试使用 Fe,这是一种新兴的智能合约语言,目前仍处于起步阶段。 @@ -33,49 +33,49 @@ Remix 集成开发环境提供了一个全面的开发环境,用于创建和 ### 重要链接 {#important-links} -- [相关文档](https://docs.soliditylang.org/en/latest/) -- [Solidity 语言网站](https://soliditylang.org/) +- [文档](https://docs.soliditylang.org/en/latest/) +- [Solidity 语言门户](https://soliditylang.org/) - [Solidity 示例](https://docs.soliditylang.org/en/latest/solidity-by-example.html) - [GitHub](https://github.com/ethereum/solidity/) -- 桥接到 [Solidity Matrix 聊天室](https://matrix.to/#/#ethereum_solidity:gitter.im)的 [Solidity Gitter 聊天室](https://gitter.im/ethereum/solidity) -- [备忘单](https://reference.auditless.com/cheatsheet) +- [Solidity Gitter 聊天室](https://gitter.im/ethereum/solidity)桥接至 [Solidity Matrix 聊天室](https://matrix.to/#/#ethereum_solidity:gitter.im) +- [速查表](https://reference.auditless.com/cheatsheet) - [Solidity 博客](https://blog.soliditylang.org/) - [Solidity Twitter](https://twitter.com/solidity_lang) -### 合约示例 {#example-contract} +### 示例合约 {#example-contract} ```solidity -/ SPDX-License-Identifier: GPL-3.0 +// SPDX-License-Identifier: GPL-3.0 pragma solidity >= 0.7.0; contract Coin { - // The keyword "public" makes variables - // accessible from other contracts + // 关键字“public”使变量 + // 可从其他合约访问 address public minter; mapping (address => uint) public balances; - // Events allow clients to react to specific - // contract changes you declare + // 事件允许客户端对你声明的特定 + // 合约更改做出反应 event Sent(address from, address to, uint amount); - // Constructor code is only run when the contract - // is created + // 构造函数代码仅在创建 + // 合约时运行 constructor() { minter = msg.sender; } - // Sends an amount of newly created coins to an address - // Can only be called by the contract creator + // 将一定数量的新创建的代币发送到一个地址 + // 只能由合约创建者调用 function mint(address receiver, uint amount) public { require(msg.sender == minter); require(amount < 1e60); balances[receiver] += amount; } - // Sends an amount of existing coins - // from any caller to an address + // 从任何调用者向一个地址 + // 发送一定数量的现有代币 function send(address receiver, uint amount) public { - require(amount <= balances[msg.sender], "Insufficient balance."); + require(amount <= balances[msg.sender], "余额不足。"); balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent(msg.sender, receiver, amount); @@ -83,7 +83,7 @@ contract Coin { } ``` -这个示例应该能让你感觉到 Solidity 合约语法是什么样子的。 有关函数和变量的详细说明,[请参阅文档](https://docs.soliditylang.org/en/latest/contracts.html)。 +这个示例应该能让你感觉到 Solidity 合约语法是什么样子的。 有关函数和变量的更详细说明,[请参阅文档](https://docs.soliditylang.org/en/latest/contracts.html)。 ## Vyper {#vyper} @@ -101,104 +101,107 @@ contract Coin { - 无限长度循环 - 二进制定长浮点 -更多信息,[请查阅 Vyper 原理](https://vyper.readthedocs.io/en/latest/index.html)。 +更多信息,请[阅读 Vyper 的设计原理](https://vyper.readthedocs.io/en/latest/index.html)。 -### 重要的链接 {#important-links-1} +### 重要链接 {#important-links-1} -- [相关文档](https://vyper.readthedocs.io) +- [文档](https://vyper.readthedocs.io) - [Vyper 示例](https://vyper.readthedocs.io/en/latest/vyper-by-example.html) - [更多 Vyper 示例](https://vyper-by-example.org/) - [GitHub](https://github.com/vyperlang/vyper) - [Vyper 社区 Discord 聊天](https://discord.gg/SdvKC79cJk) -- [备忘单](https://reference.auditless.com/cheatsheet) -- [Vyper 的智能合约开发框架和工具](/developers/docs/programming-languages/python/) -- [VyperPunk - 学习保护和破解 Vyper 智能合约](https://github.com/SupremacyTeam/VyperPunk) -- [Vyper 开发中心](https://github.com/zcor/vyper-dev) -- [Vyper 最热门的智能合约示例](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts) -- [出色的 Vyper 精选资源](https://github.com/spadebuilders/awesome-vyper) +- [速查表](https://reference.auditless.com/cheatsheet) +- [适用于 Vyper 的智能合约开发框架和工具](/developers/docs/programming-languages/python/) +- [VyperPunk - 学习如何保护和破解 Vyper 智能合约](https://github.com/SupremacyTeam/VyperPunk) +- [用于开发的 Vyper Hub](https://github.com/zcor/vyper-dev) +- [Vyper 智能合约最佳示例](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts) +- [Awesome Vyper 精选资源](https://github.com/spadebuilders/awesome-vyper) ### 示例 {#example} ```python -# Open Auction +# 公开拍卖 -# Auction params -# Beneficiary receives money from the highest bidder +# 拍卖参数 +# 受益人从最高出价者处收款 beneficiary: public(address) auctionStart: public(uint256) auctionEnd: public(uint256) -# Current state of auction +# 拍卖的当前状态 highestBidder: public(address) highestBid: public(uint256) -# Set to true at the end, disallows any change +# 结束时设置为 true,不允许任何更改 ended: public(bool) -# Keep track of refunded bids so we can follow the withdraw pattern +# 跟踪已退还的出价,以便遵循取款模式 pendingReturns: public(HashMap[address, uint256]) + +# 创建一个简单拍卖,代表受益人地址 `_beneficiary`, +# 拍卖时间为 `_bidding_time` 秒。 @external def __init__(_beneficiary: address, _bidding_time: uint256): self.beneficiary = _beneficiary self.auctionStart = block.timestamp self.auctionEnd = self.auctionStart + _bidding_time -# Bid on the auction with the value sent -# together with this transaction. -# The value will only be refunded if the -# auction is not won. +# 使用与此交易一起发送的价值对拍卖进行出价。 +# 只有未赢得拍卖, +# 价值才会被退还。 @external @payable def bid(): - # Check if bidding period is over. + # 检查出价期是否结束。 assert block.timestamp < self.auctionEnd - # Check if bid is high enough + # 检查出价是否足够高 assert msg.value > self.highestBid - # Track the refund for the previous high bidder + # 跟踪先前最高出价者的退款 self.pendingReturns[self.highestBidder] += self.highestBid - # Track new high bid + # 跟踪新的最高出价 self.highestBidder = msg.sender - self.highestBid = msg.value The withdraw pattern is -# used here to avoid a security issue. If refunds were directly -# sent as part of bid(), a malicious bidding contract could block -# those refunds and thus block new higher bids from coming in. + self.highestBid = msg.value + +# 取回先前已退还的出价。此处使用取款模式 +# 以避免安全问题。如果退款直接 +# 作为 bid() 的一部分发送,恶意出价合约可能会阻止 +# 这些退款,从而阻止新的更高出价进入。 @external def withdraw(): pending_amount: uint256 = self.pendingReturns[msg.sender] self.pendingReturns[msg.sender] = 0 send(msg.sender, pending_amount) -# End the auction and send the highest bid -# to the beneficiary. +# 结束拍卖并将最高出价 +# 发送给受益人。 @external def endAuction(): - # It is a good guideline to structure functions that interact - # with other contracts (i.e., they call functions or send ether) - # into three phases: - # 1. checking conditions - # 2. performing actions (potentially changing conditions) - # 3. interacting with other contracts - # If these phases are mixed up, the other contract could call - # back into the current contract and modify the state or cause - # effects (ether payout) to be performed multiple times. - # If functions called internally include interaction with external - # contracts, they also have to be considered interaction with - # external contracts. - - # 1. Conditions - # Check if auction endtime has been reached + # 一个好的指导原则是将与其他合约交互的函数(即调用函数或发送以太币) + # 结构化为三个阶段: + # 1. 检查条件 + # 2. 执行操作(可能会改变条件) + # 3. 与其他合约交互 + # 如果这些阶段混合在一起,另一个合约可能会回调 + # 到当前合约并修改状态或导致 + # 效果(以太币支付)被多次执行。 + # 如果内部调用的函数包含与外部合约的交互, + # 它们也必须被视为与 + # 外部合约的交互。 + + # 1. 条件 + # 检查是否已达到拍卖结束时间 assert block.timestamp >= self.auctionEnd - # Check if this function has already been called + # 检查此函数是否已被调用 assert not self.ended - # 2. Effects + # 2. 效果 self.ended = True - # 3. Interaction + # 3. 交互 send(self.beneficiary, self.highestBid) ``` -这个例子应该让你了解 Vyper 合约语法是什么样的。 有关函数和变量的详细说明,[请参阅文档](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction)。 +这个例子应该让你了解 Vyper 合约语法是什么样的。 有关函数和变量的更详细说明,[请参阅文档](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction)。 ## Yul 和 Yul+ {#yul} @@ -207,24 +210,25 @@ def endAuction(): **Yul** - 以太坊的中继语言。 -- 支持 [EVM](/developers/docs/evm) 和 [Ewasm](https://github.com/ewasm),一种以太坊风格的 WebAssembly,以及旨在成为两个平台均可用的公分母。 -- 高级优化阶段的良好目标,既使 EVM 和 eWASM 平台均等受益。 +- 支持 [EVM](/developers/docs/evm) 和 [Ewasm](https://github.com/ewasm)(一种以太坊风格的 WebAssembly),旨在成为这两个平台的通用分母。 +- 是高级优化阶段的理想目标,可使 EVM 和 Ewasm 平台同等受益。 **Yul+** - Yul 的低级、高效扩展。 -- 最初设计用于[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)合约。 +- 最初为[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)合约而设计。 - Yul+ 可以被视为对 Yul 的实验性升级建议,为其添加新功能。 -### 重要的链接 {#important-links-2} +### 重要链接 {#important-links-2} -- [Yul 相关文档](https://docs.soliditylang.org/en/latest/yul.html) -- [Yul+ 相关文档](https://github.com/fuellabs/yulp) -- [Yul+ 介绍帖子](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f) +- [Yul 文档](https://docs.soliditylang.org/en/latest/yul.html) +- [Yul+ 文档](https://github.com/fuellabs/yulp) +- [Yul+ 介绍文章](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f) -### 合约示例 {#example-contract-2} +### 示例合约 {#example-contract-2} -以下简单示例实现了幂函数。 它可以使用 `solc --strict-assembly --bin input.yul` 编译。 这个例子应该 存储在 input.yul 文件中。 +以下简单示例实现了幂函数。 可以使用 `solc --strict-assembly --bin input.yul` 对其进行编译。 这个例子应该 +存储在 input.yul 文件中。 ``` { @@ -245,7 +249,7 @@ def endAuction(): } ``` -如果你已经熟悉智能合约,可以在 [此处找到 Yul 中的完整 ERC20 实例](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example)。 +如果你对智能合约已非常有经验,可以在[此处](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example)找到用 Yul 实现的完整 ERC20。 ## Fe {#fe} @@ -259,10 +263,10 @@ def endAuction(): - [GitHub](https://github.com/ethereum/fe) - [Fe 公告](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/) - [Fe 2021 路线图](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg) -- [Fe Discord 聊天室](https://discord.com/invite/ywpkAXFjZH) +- [Fe Discord 聊天](https://discord.com/invite/ywpkAXFjZH) - [Fe Twitter](https://twitter.com/official_fe) -### 合约示例 {#example-contract-3} +### 示例合约 {#example-contract-3} 以下是在 Fe 中执行的简单的智能合约。 @@ -282,7 +286,6 @@ contract GuestBook: pub def get_msg(addr: address) -> BookMsg: return self.guest_book[addr].to_mem() - ``` ## 如何选择 {#how-to-choose} @@ -293,7 +296,7 @@ contract GuestBook: ### Solidity 的优点是什么? {#solidity-advantages} -- 如果你是初学者,这里有很多教程和学习工具。 在[通过编码学习](/developers/learning-tools/)部分了解更多相关信息。 +- 如果你是初学者,这里有很多教程和学习工具。 在[“通过编码学习”](/developers/learning-tools/)部分查看更多相关信息。 - 提供出色的开发者工具。 - Solidity 拥有庞大的开发人员社区,这意味着你很可能会很快找到问题的答案。 @@ -310,9 +313,9 @@ contract GuestBook: ## 语言比较 {#language-comparisons} -关于基本语法的比较、合同生命周期、接口、操作员、数据结构、功能、控制流程以及更多,请查看[由 Auditless 编写的备忘清单](https://reference.auditless.com/cheatsheet/) +要比较基本语法、合约生命周期、接口、运算符、数据结构、函数、控制流等,请查看 [Auditless 制作的这份速查表](https://reference.auditless.com/cheatsheet/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [OpenZeppelin 的 Solidity 合约库](https://docs.openzeppelin.com/contracts/5.x/) - [Solidity 示例](https://solidity-by-example.org) From 76a5f4cea00f21c5d374b00af2075341e02fafb8 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:37 -0800 Subject: [PATCH 127/581] update(i18n): public/content/translations/zh/contributing/translation-program/resources/index.md --- .../translation-program/resources/index.md | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/public/content/translations/zh/contributing/translation-program/resources/index.md b/public/content/translations/zh/contributing/translation-program/resources/index.md index 275df67c777..3b58efcf196 100644 --- a/public/content/translations/zh/contributing/translation-program/resources/index.md +++ b/public/content/translations/zh/contributing/translation-program/resources/index.md @@ -4,31 +4,35 @@ lang: zh description: 对 ethereum.org 翻译人员有用的资源 --- -# 资源 {#resources} +# 资源{#resources} 你可以在下面找到一些对 ethereum.org 翻译人员有用的指南和工具,还可以找到翻译社区和最新进展。 ## 指南 {#guides} -- [翻译风格指南](/contributing/translation-program/translators-guide/) _– 面向 ethereum.org 翻译人员的说明和技巧_ -- [翻译常见问题](/contributing/translation-program/faq/) _– 有关 ethereum.org 翻译计划的一些常见问题与解答_ -- [Crowdin 在线编辑器指南](https://support.crowdin.com/online-editor/) _- 使用 Crowdin 在线编辑器和 Crowdin 一些高级功能的深度指南_ -- [内容存储桶](/contributing/translation-program/content-buckets/) _– ethereum.org 的每个内容存储桶中包含哪些页面_ +- [翻译风格指南](/contributing/translation-program/translators-guide/) _– ethereum.org 翻译人员指南和技巧_ +- [翻译常见问题解答](/contributing/translation-program/faq/) _– 关于 ethereum.org 翻译计划的常见问题与解答_ +- [Crowdin 在线编辑器指南](https://support.crowdin.com/online-editor/) _– 关于如何使用 Crowdin 在线编辑器和 Crowdin 部分高级功能的深度指南_ ## 工具 {#tools} -- [Linguee](https://www.linguee.com/) _– 翻译和字典搜索引擎,可按词或短语搜索_ -- [Proz 术语搜索](https://www.proz.com/search/) _– 专业术语的翻译字典和词汇表数据库_ -- [Eurotermbank](https://www.eurotermbank.com/) _ – 42 种语言的欧洲术语集_ +- [Linguee](https://www.linguee.com/) + _– 翻译和字典搜索引擎,可按词或短语搜索_ +- [Proz 术语搜索](https://www.proz.com/search/) + _– 专业术语的翻译字典和词汇表数据库_ +- [Eurotermbank](https://www.eurotermbank.com/) + _– 42 种语言的欧洲术语集_ ## 社区 {#communities} -- [特定语种的 Discord 翻译团体](https://discord.gg/ethereum-org) _ – 在 ethereum.org 翻译人员与翻译团体之间建立联系的倡议举措_ -- [中文翻译人员团体](https://www.notion.so/Ethereum-org-05375fe0a94c4214acaf90f42ba40171) _– 方便中文翻译人员之间协作的 Notion 页面_ +- [特定语种的 Discord 翻译团体](https://discord.gg/ethereum-org) + _– 在 ethereum.org 翻译人员与翻译团体之间建立联系的倡议举措_ +- [中文翻译小组](https://www.notion.so/Ethereum-org-05375fe0a94c4214acaf90f42ba40171) + _– 方便中文翻译人员协调工作的 Notion 页面_ -## 最近更新 {#latest-updates} +## 最新更新 {#latest-updates} -要及时了解翻译计划的最新进展,可以关注[以太坊基金会博客](https://blog.ethereum.org/): +要及时了解翻译计划的最新进展,可以关注 [以太坊基金会博客](https://blog.ethereum.org/): - [2021 年 10 月里程碑更新](https://blog.ethereum.org/2021/10/04/translation-program-update/) - [2020 年 12 月里程碑更新](https://blog.ethereum.org/2020/12/21/translation-program-milestones-updates-20/) @@ -37,8 +41,9 @@ description: 对 ethereum.org 翻译人员有用的资源 ## 翻译人员官方互动时间 {#office-hours} -每个月的第二个星期三是翻译人员的官方互动时间。 互动会在 [ethereum.org 的 Discord](https://discord.gg/ethereum-org) #官方互动时间频道举办,你也可以在那里查看确切的举行时间和其他详细信息。 +每个月的第二个星期三是翻译人员的官方互动时间。 官方互动时间将在 [ethereum.org Discord](https://discord.gg/ethereum-org) 的 #office-hours 语音频道进行,你也可以在那里找到确切的时间和其他详细信息。 -在官方互动时间,我们的翻译人员可以询问有关翻译流程的问题,提出有关翻译计划的反馈,分享交流他们的想法,或者单纯与 ethereum.org 的核心团队聊天。 最后,我们希望通过这些电话会议传达翻译计划取得的最新进展,并与我们的贡献者分享重要的技巧和说明。 +在官方互动时间,我们的翻译人员可以询问有关翻译流程的问题,提出有关翻译计划的反馈,分享交流他们的想法,或者单纯与 ethereum.org 的核心团队聊天。 +最后,我们希望通过这些电话会议传达翻译计划取得的最新进展,并与我们的贡献者分享重要的技巧和说明。 如果你是 ethereum.org 翻译人员或想要成为翻译人员,欢迎加入任何一场我们的官方互动时间。 From fd24e47d3d37097ff6145597099922de8f228b47 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:40 -0800 Subject: [PATCH 128/581] update(i18n): public/content/translations/zh/developers/docs/programming-languages/rust/index.md --- .../docs/programming-languages/rust/index.md | 62 ++++++++++--------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/public/content/translations/zh/developers/docs/programming-languages/rust/index.md b/public/content/translations/zh/developers/docs/programming-languages/rust/index.md index f00082189c4..c2a8afb6a17 100644 --- a/public/content/translations/zh/developers/docs/programming-languages/rust/index.md +++ b/public/content/translations/zh/developers/docs/programming-languages/rust/index.md @@ -5,59 +5,61 @@ lang: zh incomplete: true --- -学习如何通过基于 Rust 的项目和工具参与以太坊的开发 +了解如何使用基于 Rust 的项目和工具为以太坊进行开发 -使用以太坊来创建去中心化应用程序(或称“dapp”),发挥加密货币和区块链技术的优势。 这些 dapp 可以是值得信赖的,也即一旦被部署到以太坊上,它们将总是按程序运行。 这些应用程序可以控制数字资产,以便创造新的金融应用; 它们可以是去中心化的,也即没有任何单一实体或个人能够控制它们,而且它们几乎是不可能被审查的。 +使用以太坊来创建去中心化应用程序,发挥加密货币和区块链技术的优势。 这些去中心化应用程序可被信任,意味着一旦被部署到以太坊上,它们将总是按既定程序运行。 这些应用程序可以控制数字资产,以便创造新的金融应用; 它们可以是去中心化的,即没有任何单一实体或个人控制它们,而且它们几乎不可能被审查。 -## 智能合约和 Solidity 语言入门 {#getting-started-with-smart-contracts-and-solidity} +## 从学习智能合约和 Solidity 语言入手 {#getting-started-with-smart-contracts-and-solidity} **迈出第一步,将 Rust 与以太坊进行集成** -需要更基础的入门知识? 请查看 [ethereum.org/learn](/learn/) 或者 [ethereum.org/developers](/developers/)。 +想对以太坊有更加全面的认识? 查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 -- [区块链详解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [理解智能合约](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [区块链解析](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [了解智能合约](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) - [编写你的第一个智能合约](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [学习如何编写和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [学习如何编译和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) ## 初学者文章 {#beginner-articles} -- [Rust 以太坊客户端](https://openethereum.github.io/) \* **注意 OpenEthereum [已被废弃](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd)并已停止维护。** 请谨慎使用,最好切换至其他客户端实现。 +- [Rust 以太坊客户端](https://openethereum.github.io/) \* \*\*请注意,OpenEthereum [已被弃用](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd)且不再进行维护。\*\*请谨慎使用,最好切换到另一个客户端实现。 - [使用 Rust 向以太坊发送交易](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/) -- [如何用 Rust Wasm 为 Kovan 编写合约的分步教程](https://github.com/paritytech/pwasm-tutorial) +- [关于如何用 Rust Wasm 为 Kovan 编写合约的详细教程](https://github.com/paritytech/pwasm-tutorial) -## 面向中等程度用户的文章 {#intermediate-articles} +## 中级文章 {#intermediate-articles} -## 面向高等程度用户的使用模式 {#advanced-use-patterns} +## 高级使用模式 {#advanced-use-patterns} -- [pwasm_ethereum 外部库与类以太坊网络交互](https://github.com/openethereum/pwasm-ethereum) -- [使用 JavaScript 和 Rust 搭建去中心化聊天室](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) -- [使用 Vue.js 和 Rust 构建一个去中心化待办事项应用程序](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) +- [pwasm_ethereum 外部函数程序库,用于和类以太坊网络交互](https://github.com/openethereum/pwasm-ethereum) -- [使用 Rust 构建区块链](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) +- [使用 JavaScript 和 Rust 构建去中心化聊天应用](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) + +- [使用 Vue.js 和 Rust 构建去中心化待办事项应用程序](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) + +- [用 Rust 构建区块链](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) ## Rust 项目和工具 {#rust-projects-and-tools} -- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _与类似以太坊的网络交互的外部帐户集合_ -- [Lighthouse](https://github.com/sigp/lighthouse) - _以太坊快速共识层客户端_ -- [ Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _使用 WebAssembly 的确定性子集对以太坊智能合约执行层建议的重新设计_ -- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _OASIS 应用程序接口参考_ -- [Solaris](https://github.com/paritytech/sol-rs) - _使用本机 Parity 客户端以太坊虚拟机的 Solidity 智能合约单元测试工具。_ -- [SputnikVM](https://github.com/rust-blockchain/evm) - _以太坊虚拟机的 Rust 实现_ -- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Rust 语言的 Wavelet 智能合约_ -- [Foundry](https://github.com/foundry-rs/foundry) - _以太坊应用程序开发工具包_ -- [Alloy](https://alloy.rs) - _高性能、严格测试且文档完备的程序库,用于与以太坊和其他基于以太坊虚拟机的链交互。_ -- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _以太坊库和钱包的实现_ -- [SewUp](https://github.com/second-state/SewUp) - _一个帮助用户用 Rust 语言构建以太坊 Webassembly 合约的库,正如在公共后端中开发一样_ +- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _用于和类以太坊网络交互的外部函数集合_ +- [Lighthouse](https://github.com/sigp/lighthouse) - _快速的以太坊共识层客户端_ +- [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _使用 WebAssembly 的确定性子集对以太坊智能合约执行层进行的重新设计提案_ +- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _OASIS API 参考_ +- [Solaris](https://github.com/paritytech/sol-rs) - _使用原生 Parity 客户端 EVM 的 Solidity 智能合约单元测试工具。_ +- [SputnikVM](https://github.com/rust-blockchain/evm) - _Rust 实现的以太坊虚拟机_ +- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _用 Rust 编写的 Wavelet 智能合约_ +- [Foundry](https://github.com/foundry-rs/foundry) - _用于开发以太坊应用的工具包_ +- [Alloy](https://alloy.rs) - _用于与以太坊和其他基于 EVM 的链进行交互的高性能、经过良好测试且文档齐全的程序库。_ +- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _以太坊程序库和钱包实现_ +- [SewUp](https://github.com/second-state/SewUp) - _一个可帮助你使用 Rust 构建以太坊 WebAssembly 合约的库,就像在通用后端中开发一样_ - [Substreams](https://github.com/streamingfast/substreams) - _并行化区块链数据索引技术_ -- [Reth](https://github.com/paradigmxyz/reth) - Reth 即 Rust 以太坊的简称,是新的以太坊全节点实现 -- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _ 以太坊生态系统中用 Rust 编写的项目精选集合_ +- [Reth](https://github.com/paradigmxyz/reth) Reth (Rust Ethereum 的简称) 是一个新的以太坊全节点实现 +- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _以太坊生态系统中用 Rust 编写的项目精选集合_ -想要获取更多的资源? 请查看 [ethereum.org/developers](/developers/)。 +正在寻找更多资源? 请查看 [ethereum.org/developers.](/developers/) ## Rust 社区贡献者 {#rust-community-contributors} -- [Ethereum WebAssembly](https://gitter.im/ewasm/Lobby) +- [以太坊 WebAssembly](https://gitter.im/ewasm/Lobby) - [Oasis Gitter](https://gitter.im/Oasis-official/Lobby) - [Parity Gitter](https://gitter.im/paritytech/parity) - [Enigma](https://discord.gg/SJK32GY) From 8d2fd3bd376cfcfd05db2267dd8d9a3bbd366f96 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:43 -0800 Subject: [PATCH 129/581] update(i18n): public/content/translations/zh/developers/docs/nodes-and-clients/bootnodes/index.md --- .../zh/developers/docs/nodes-and-clients/bootnodes/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/content/translations/zh/developers/docs/nodes-and-clients/bootnodes/index.md b/public/content/translations/zh/developers/docs/nodes-and-clients/bootnodes/index.md index 36d2bb54231..3c4d95d0bca 100644 --- a/public/content/translations/zh/developers/docs/nodes-and-clients/bootnodes/index.md +++ b/public/content/translations/zh/developers/docs/nodes-and-clients/bootnodes/index.md @@ -6,7 +6,7 @@ lang: zh 当新节点加入以太坊网络时,它需要连接到已经在网络上的节点,以便在后期发现新的对等节点。 这些进入以太坊网络的节点被称作引导节点。 客户端通常有一个硬编码的引导节点列表。 这些引导节点通常由以太坊基金会的开发团队或客户团队自己运行。 请注意,引导节点与静态节点不同。 静态节点会被重复调用,而引导节点仅在没有足够的对等节点可以连接时被调用,并且需要有一个节点来引导一些新的连接。 -## 连接到引导节点 {#connect-to-a-bootnode} +## 连接至引导节点 {#connect-to-a-bootnode} 大多数客户端都有内置的引导节点列表,但你可能也想运行自己的引导节点,或使用不在客户端硬编码列表中的引导节点。 在这种情况下,你可以在启动客户端时指定这些节点,如下所示(示例为 Geth,请查看你的客户端文档): @@ -16,7 +16,7 @@ geth --bootnodes "enode://@:" ## 运行引导节点 {#run-a-bootnode} -引导节点是不在 NAT([网络地址转换](https://www.geeksforgeeks.org/network-address-translation-nat/))后面的全节点。 只要全节点可以公开访问,它就可以充当引导节点。 +引导节点是不位于 NAT([网络地址转换](https://www.geeksforgeeks.org/network-address-translation-nat/))之后的全节点。 只要全节点可以公开访问,它就可以充当引导节点。 在启动节点时,它应该记录你的 [enode](/developers/docs/networking-layer/network-addresses/#enode),也就是其他人用来连接该节点的公开标识符。 @@ -26,6 +26,6 @@ geth --bootnodes "enode://@:" ## 可用的引导节点 {#available-bootnodes} -请在[此处](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23)查看 go-ethereum 中内建的引导节点列表。 这些引导节点由以太坊基金会和 go-ethereum 团队负责维护。 +go-ethereum 的内置引导节点列表可[在此处](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23)找到。 这些引导节点由以太坊基金会和 go-ethereum 团队负责维护。 你还可以找到一些由志愿者维护的其他引导节点列表。 请务必始终包含至少一个官方引导节点,否则你可能会受到日蚀攻击。 From 061dfbf54dadead88a293107ac29fff174be832e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:46 -0800 Subject: [PATCH 130/581] update(i18n): public/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md --- .../index.md | 50 ++++++------------- 1 file changed, 15 insertions(+), 35 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md index 1e2498d5bfe..1033295786f 100644 --- a/public/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md +++ b/public/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md @@ -1,12 +1,8 @@ --- -title: 如何实现ERC-721市场 +title: "如何实现ERC-721市场 " description: 如何在一个去中心化的分类信息板上销售代币化的物品。 -author: "Alberto Cuesta Cañada" -tags: - - "智能合约" - - "erc-721" - - "solidity" - - "代币" +author: "Alberto Cuesta Cañada " +tags: [ "智能合同", "erc-721", "Solidity", "通证" ] skill: intermediate lang: zh published: 2020-03-19 @@ -26,13 +22,13 @@ sourceUrl: https://hackernoon.com/how-to-implement-an-erc721-market-1e1a32j9 基于公共区块链技术的分类信息板的商业模式和Ebay及普通的公司有显著的不同。 -首先,这种商业模式有[一个去中心化的视角](/developers/docs/web2-vs-web3/)。 目前现存的平台都需要维护自己的服务器。 去中心化的平台是由其用户来维护的,因此其核心平台的成本从平台所有者的角度来讲会降至零。 +首先,要考虑[去中心化角度](/developers/docs/web2-vs-web3/)。 目前现存的平台都需要维护自己的服务器。 去中心化的平台是由其用户来维护的,因此其核心平台的成本从平台所有者的角度来讲会降至零。 -中心化平台有前端界面,后台网站或者可以访问该去中心化平台的接口。 它同时也会有许多其他选择。 平台所有者可以限制客户的访问并强制每个人使用他们的接口,并收取费用。 平台所有者还可以决定是否开放访问权限(这是对普通用户的一种强权!),并让任何人构建与平台的接口。 或者平台所有者可以在这些极端情况中决定任何方法。 +中心化平台有前端界面,后台网站或者可以访问该去中心化平台的接口。 它同时也会有许多其他选择。 平台所有者可以限制客户的访问并强制每个人使用他们的接口,并收取费用。 平台所有者也可以决定开放访问权限(权力归于人民!) 并允许任何人构建该平台的界面。 或者平台所有者可以在这些极端情况中决定任何方法。 _比我更有远见的商业领袖知道如何将其货币化。 我所看到的是,这与现状不同,并且可能是有利可图的。_ -此外,还可以从自动化和支付的角度来看问题。 在分类信息板中,有些东西可以[非常有效地代币化](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com) ,并产生交易。 代币化的资产很容易在区块链中转移。 高度复杂的支付方式可以在区块链中被轻松实现。 +此外,还可以从自动化和支付的角度来看问题。 有些东西可以非常[有效地代币化](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com)并在分类广告板中交易。 代币化的资产很容易在区块链中转移。 高度复杂的支付方式可以在区块链中被轻松实现。 我在这里嗅到了一个商机。 通过区块链技术,可以轻松实现一个无需运行成本的分类信息板。复杂的支付路径被包含到了每笔交易里。 我相信有人会想出一个关于如何使用它的创意。 @@ -40,9 +36,9 @@ _比我更有远见的商业领袖知道如何将其货币化。 我所看到的 ## 实现 {#implementation} -前段时间我们启动了一个[开源项目](https://github.com/HQ20/contracts?ref=hackernoon.com),其中包含了一些商业案例的示例实现和其他相关的资源,推荐你看一看。 +不久前,我们启动了一个[开源代码库](https://github.com/HQ20/contracts?ref=hackernoon.com),其中包含业务案例示例实现和其他好东西,请看一看。 -这个[以太坊分类信息板](https://github.com/HQ20/contracts/tree/master/contracts/classifieds?ref=hackernoon.com)的代码在那里,请使用并研究它。 请注意,这个项目的代码尚未经过审核,你在把资金投入这个项目之前需要进行代码的尽职审查。 +这个[以太坊分类广告板](https://github.com/HQ20/contracts/tree/master/contracts/classifieds?ref=hackernoon.com)的代码就在那里,请随意使用。 请注意,这个项目的代码尚未经过审核,你在把资金投入这个项目之前需要进行代码的尽职审查。 这个项目的基础并不复杂。 分类信息板中的所有广告是一个包含几个字段的结构体: @@ -67,13 +63,9 @@ mapping(uint256 => Trade) public trades; 接下来的问题是我们需要处理哪些物品,以及用于支付交易的货币是什么。 -对于物品,我们只是要求它们实现[ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com)的接口。这实际上只是一种在区块链中表示现实世界物品的方式, - -尽管它最适合数字资产。 我们将在构造函数中定制化我们自己的ERC721合约,这意味着我们分类信息板中的任何资产都需要事先被代币化 - -对于付款,我们将做类似的事情。 大多数区块链项目定义了自己的[ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com)加密货币。 其他一些人更喜欢使用像DAI这样的主流技术。 在这个分类信息板的应用中,你只需要在构造函数里决定你构建的货币是什么。 很容易。 - +对于这些物品,我们只要求它们实现 [ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com) 接口,这实际上只是在区块链中表示现实世界物品的一种方式,尽管它[最适用于数字资产](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com)。 我们将在构造函数中定制化我们自己的ERC721合约,这意味着我们分类信息板中的任何资产都需要事先被代币化。 +对于付款,我们将做类似的事情。 大多数区块链项目都定义了自己的 [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com) 加密货币。 其他一些人更喜欢使用像DAI这样的主流技术。 在这个分类信息板的应用中,你只需要在构造函数里决定你构建的货币是什么。 很容易。 ```solidity constructor ( @@ -85,13 +77,10 @@ tradeCounter = 0; } ``` - 目前我们到达这里了。 我们有广告、用于交易的商品和用来付款的货币。 制作一个广告意味着将同一个物品放在托管中,以表明你拥有它并且你没有发布它两次,可能是在不同的分类信息板上。 下面的代码正是这样做的。 将物品放在托管中,制作广告,做一些记账操作。 - - ```solidity function openTrade(uint256 _item, uint256 _price) public @@ -108,11 +97,8 @@ function openTrade(uint256 _item, uint256 _price) } ``` - 接受交易意味着选择某个广告(交易)、支付价格、接收物品。 以下的代码用来获取交易。 检查它是否可用。 支付该物品的费用。 获取物品。 更新广告信息。 - - ```solidity function executeTrade(uint256 _trade) public @@ -126,13 +112,10 @@ function executeTrade(uint256 _trade) } ``` - 最后,我们可以选择让卖家在买家接受之前退出交易。 在某些模型中,广告会在过期前保留一段时间。 你的选择,具体取决于你的市场设计。 该代码与用于执行交易的代码非常相似,只是没有货币交换。同时该物品返回到广告的发行方。 - - ```solidity function cancelTrade(uint256 _trade) public @@ -140,21 +123,18 @@ function cancelTrade(uint256 _trade) Trade memory trade = trades[_trade]; require( msg.sender == trade.poster, - "Trade can be cancelled only by poster." + "交易只能由发布者取消。" ); - require(trade.status == "Open", "Trade is not Open."); + require(trade.status == "Open", "交易未开放。"); itemToken.transferFrom(address(this), trade.poster, trade.item); trades[_trade].status = "Cancelled"; emit TradeStatusChange(_trade, "Cancelled"); } ``` +就是这样。 你已经浏览到了该代码实现的末尾。 令人惊讶的是,一些业务概念在用代码表达时是多么紧凑,这就是其中一个例子。 在我们的[代码库](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol)中查看完整的合约。 -就是这样。 你已经浏览到了该代码实现的末尾。 令人惊讶的是,一些业务概念在用代码表达时是多么紧凑,这就是其中一个例子。 请在[我们的代码库中](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol)查看完整的合约代码。 - - - -## 总结 {#conclusion} +## 结论 {#conclusion} 分类信息板是一种易于在互联网技术的帮助下大规模扩张的常见市场结构,也是一种容易形成少数垄断赢家的非常流行的商业模式。 @@ -162,4 +142,4 @@ function cancelTrade(uint256 _trade) 在本文中,我尝试将分类信息板的商业业务与技术实现结合起来进行讲解。 如果你拥有合适的技能,这些知识应该可以帮助你创建愿景和实施路线图。 -与往常一样,如果你想构建任何有趣的东西并希望得到一些建议,[请给我留言!](https://albertocuesta.es/) 我总是很乐意为你提供帮助。 +与往常一样,如果你想构建任何有趣的东西并希望得到一些建议,请[给我留言](https://albertocuesta.es/)! 我总是很乐意为你提供帮助。 From 650fb1140d39513d4b017c49c733ab2c959322a3 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:49 -0800 Subject: [PATCH 131/581] update(i18n): public/content/translations/zh/developers/docs/programming-languages/elixir/index.md --- .../developers/docs/programming-languages/elixir/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/content/translations/zh/developers/docs/programming-languages/elixir/index.md b/public/content/translations/zh/developers/docs/programming-languages/elixir/index.md index 3300b4a247b..4f68b51d335 100644 --- a/public/content/translations/zh/developers/docs/programming-languages/elixir/index.md +++ b/public/content/translations/zh/developers/docs/programming-languages/elixir/index.md @@ -7,13 +7,13 @@ incomplete: false 了解如何使用基于 Elixir 的项目和工具为以太坊开发。 -使用以太坊来创建去中心化应用程序(或称“dapp”),发挥加密货币和区块链技术的优势。 这些去中心化应用程序可以去信任,这意味着在部署到以太坊后,它们将始终按程序设定运行。 去中心化应用程序可以控制数字资产,从而创建新类型的金融应用程序。 它们可以是去中心化的,也即没有任何单一实体或个人能够控制它们,而且它们几乎是不可能被审查的。 +使用以太坊来创建去中心化应用程序,发挥加密货币和区块链技术的优势。 这些去中心化应用程序可以去信任,这意味着在部署到以太坊后,它们将始终按程序设定运行。 去中心化应用程序可以控制数字资产,从而创建新类型的金融应用程序。 它们可以是去中心化的,即没有任何单一实体或个人控制它们,而且它们几乎不可能被审查。 ## 从学习智能合约和 Solidity 语言入手 {#getting-started-with-smart-contracts-and-solidity} **迈出将 Elixir 与以太坊集成的第一步** -需要更基础的入门知识? 查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 +想对以太坊有更加全面的认识? 查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 - [区块链解析](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [了解智能合约](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) @@ -49,7 +49,7 @@ incomplete: false - [exw3](https://github.com/hswick/exw3) - _用于 Elixir 的高级以太坊远程过程调用 (RPC) 客户端_ - [mana](https://github.com/mana-ethereum/mana) - _一个用 Elixir 编写的以太坊全节点实现_ -想要获取更多的资源? 访问[我们的开发者首页](/developers/)。 +正在寻找更多资源? 访问[我们的开发者首页](/developers/)。 ## Elixir 社区贡献者 {#elixir-community-contributors} From 7965a7efaa4f315c13b8684b89dea633f3c3dc2f Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:52 -0800 Subject: [PATCH 132/581] update(i18n): public/content/translations/zh/developers/docs/programming-languages/python/index.md --- .../programming-languages/python/index.md | 99 ++++++++++--------- 1 file changed, 54 insertions(+), 45 deletions(-) diff --git a/public/content/translations/zh/developers/docs/programming-languages/python/index.md b/public/content/translations/zh/developers/docs/programming-languages/python/index.md index f82619eca24..a86452658ac 100644 --- a/public/content/translations/zh/developers/docs/programming-languages/python/index.md +++ b/public/content/translations/zh/developers/docs/programming-languages/python/index.md @@ -5,86 +5,95 @@ lang: zh incomplete: true --- -学习如何通过基于 Python 的项目和工具参与以太坊的开发 +了解如何使用基于 Python 的项目和工具为以太坊进行开发 -使用以太坊来创建去中心化应用程序 (或称“dapp”),发挥加密货币和区块链技术的优势。 这些 dapp 可以是值得信赖的,也即一旦被部署到以太坊上,它们将总是按程序运行。 这些应用程序可以控制数字资产,以便创造新的金融应用; 它们可以是去中心化的,也即没有任何单一实体或个人能够控制它们,而且它们几乎是不可能被审查的。 +使用以太坊来创建去中心化应用程序,发挥加密货币和区块链技术的优势。 这些去中心化应用程序可被信任,意味着一旦被部署到以太坊上,它们将总是按既定程序运行。 这些应用程序可以控制数字资产并构建新的金融应用。 它们可以是去中心化的,即没有任何单一实体或个人控制它们,而且它们几乎不可能被审查。 -## 智能合约和 Solidity 语言入门 {#getting-started-with-smart-contracts-and-solidity} +## 从学习智能合约和 Solidity 语言入手 {#getting-started-with-smart-contracts-and-solidity} **迈出第一步,将 Python 与以太坊集成** -需要更基础的入门知识? 请查看 [ethereum.org/learn](/learn/) 或者 [ethereum.org/developers](/developers/)。 +想对以太坊有更加全面的认识? 查看 [ethereum.org/learn](/learn/) 或 [ethereum.org/developers](/developers/)。 -- [区块链详解](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [理解智能合约](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [区块链解析](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [了解智能合约](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) - [编写你的第一个智能合约](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) -- [学习如何编写和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [学习如何编译和部署 Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [2023 年 Python 在区块链领域的现状报告](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) ## 初学者文章 {#beginner-articles} -- [以太坊开发者指南 (Python)](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) -- [2023 区块链报告中的 Python 状态](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) -- [基于 Vyper 的智能合约简介](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/) -- [使用 Python 和 Brownie 部署你自己的 ERC20 代币](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) -- [如何使用 Python Flask 开发 Ethereum 合约?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) -- [Web3.py 简介 · 面向 Python 开发者的以太坊资源](https://www.dappuniversity.com/articles/web3-py-intro) -- [如何通过 Python 和 web3.py 调用智能合约函数?](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) +- [web3.py 概述](https://web3py.readthedocs.io/en/latest/overview.html) +- [以太坊 Python 生态系统概览](https://snakecharmers.ethereum.org/python-ecosystem/) +- [以太坊 (Python) 开发者指南](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) +- [值得获奖:以太坊 Python 黑客松指南](https://snakecharmers.ethereum.org/prize-worthy/) +- [Vyper 智能合约简介](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/) +- [如何使用 Python Flask 开发以太坊合约?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) +- [Web3.py 简介 · 面向 Python 开发者的以太坊教程](https://www.dappuniversity.com/articles/web3-py-intro) +- [如何使用 Python 和 web3.py 调用智能合约函数](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) -## 面向中等程度用户的文章 {#intermediate-articles} +## 中级文章 {#intermediate-articles} +- [web3.py 之友:Ape 简介](https://snakecharmers.ethereum.org/intro-to-ape/) - [面向 Python 程序员的去中心化应用程序开发](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28) - [创建 Python 以太坊接口:第 1 部分](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d) -- [基于 Python 的以太坊智能合约开发:完整(入门)教程](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988) -- [使用 Brownie 和 Python 部署智能合约](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp) -- [使用 Brownie 在 OpenSea 上创建非同质化代币](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/) +- [Python 中的以太坊智能合约:一份(较)全面的指南](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988) -## 面向高等程度用户的使用模式 {#advanced-use-patterns} +## 高级使用模式 {#advanced-use-patterns} +- [web3.py 模式:实时事件订阅](https://snakecharmers.ethereum.org/subscriptions/) +- [web3.py 模式:WebSocketProvider](https://snakecharmers.ethereum.org/websocketprovider/) - [使用 Python 编译、部署和调用以太坊智能合约](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/) - [使用 Slither 分析 Solidity 智能合约](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither) -- [Blockchain Fintech 教程:使用 Python 借贷和借贷](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/) +- [区块链金融科技教程:使用 Python 实现借贷](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/) + +## 已存档的文章 + +- [使用 Python 和 Brownie 部署你自己的 ERC20 代币](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) +- [使用 Brownie 和 Python 部署智能合约](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp) +- [使用 Brownie 在 OpenSea 上创建 NFT](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/) ## Python 项目和工具 {#python-projects-and-tools} ### 活跃: {#active} -- [Web3.py](https://github.com/ethereum/web3.py) - _用于与以太坊交互的 Python 库_ -- [Vyper](https://github.com/ethereum/vyper/) - _一种适用于以太坊虚拟机的 Python 智能合约语言_ -- [Ape](https://github.com/ApeWorX/ape) - _面向 Pythonista、数据科学家和安全专业人员的智能合约开发工具_ +- [Web3.py](https://github.com/ethereum/web3.py) - _用于与以太坊交互的 Python 程序库_ +- [Vyper](https://github.com/ethereum/vyper/) - _适用于 EVM 的 Python 风格智能合约语言_ +- [Ape](https://github.com/ApeWorX/ape) - _面向 Python 爱好者、数据科学家和安全专业人士的智能合约开发工具_ - [py-evm](https://github.com/ethereum/py-evm) - _以太坊虚拟机的实现_ -- [eth-tester](https://github.com/ethereum/eth-tester) - _用于测试以太坊应用程序的工具_ -- [eth-utils](https://github.com/ethereum/eth-utils/) - _使用以太坊相关代码库的实用程序函数_ -- [py-solc-x](https://pypi.org/project/py-solc-x/) - _适用于 solc Solidity 编译器(支持 0.5.x)的 Python 装饰器_ -- [pymaker](https://github.com/makerdao/pymaker) - _面向 Maker 合约的 Python 应用程序接口_ -- [siwe](https://github.com/signinwithethereum/siwe-py) - _面向 Python 的以太坊登录服务 (siwe)_ -- [用于以太坊集成的 Web3 去中心化金融](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _一个 Python 包,具有适用于 ERC-20、Uniswap 和其他流行项目的现成集成_ -- [Wake](https://getwake.io) - _用于合约测试、模糊测试、部署、漏洞扫描和代码导航的一体化 Python 框架(语言服务器 - [Solidity 工具](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_ +- [eth-tester](https://github.com/ethereum/eth-tester) - _用于测试基于以太坊的应用程序的工具_ +- [eth-utils](https://github.com/ethereum/eth-utils/) - _用于处理以太坊相关代码库的实用函数_ +- [py-solc-x](https://pypi.org/project/py-solc-x/) - _solc solidity 编译器的 Python 包装器,支持 0.5.x 版本_ +- [pymaker](https://github.com/makerdao/pymaker) - _用于 Maker 合约的 Python API_ +- [siwe](https://github.com/signinwithethereum/siwe-py) - _Python 版通过以太坊登录 (siwe)_ +- [用于以太坊集成的 Web3 DeFi](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _一个 Python 包,为 ERC-20、Uniswap 和其他热门项目提供了现成的集成_ +- [Wake](https://getwake.io) - _用于合约测试、模糊测试、部署、漏洞扫描和代码导航的一体化 Python 框架(语言服务器 - [Solidity 工具](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_ -### 已归档/不再维护: {#archived--no-longer-maintained} +### 已存档/不再维护: {#archived--no-longer-maintained} -- [Trinity](https://github.com/ethereum/trinity) - _以太坊的 Python 客户端_ -- [Mamba](https://github.com/arjunaskykok/mamba) - _一个用 Vyper 语言编写、编译和部署智能合约的框架_ -- [Brownie](https://github.com/eth-brownie/brownie) - _一个用于部署、测试以太坊智能合约并与之交互的 Python 框架_ -- [pydevp2p](https://github.com/ethereum/pydevp2p) - _使用 Python 实现 P2P 协议栈_ -- [py-wasm](https://github.com/ethereum/py-wasm) - _使用 Python 实现的 Web 汇编解释器_ +- [Trinity](https://github.com/ethereum/trinity) - _以太坊 Python 客户端_ +- [Mamba](https://github.com/arjunaskykok/mamba) - _用于编写、编译和部署以 Vyper 语言编写的智能合约的框架_ +- [Brownie](https://github.com/eth-brownie/brownie) - _用于部署、测试以太坊智能合约并与之交互的 Python 框架_ +- [pydevp2p](https://github.com/ethereum/pydevp2p) - _以太坊 P2P 堆栈的实现_ +- [py-wasm](https://github.com/ethereum/py-wasm) - _web assembly 解释器的 Python 实现_ -想要获取更多的资源? 请查看 [ethereum.org/developers](/developers/)。 +正在寻找更多资源? 请访问 [ethereum.org/developers](/developers/)。 ## 使用 Python 工具的项目 {#projects-using-python-tooling} 以下基于以太坊的项目使用本页提到的工具。 相关的开源代码库可作为一个很好的参考,例如代码和最佳做法。 -- [Yearn Finance](https://yearn.finance/) 和 [Yearn Vault Contracts 库](https://github.com/yearn/yearn-vaults) -- [Curve](https://curve.fi/) 和 [Curve 智能合约库](https://github.com/curvefi/curve-contract) -- [BadgerDAO](https://badger.com/) 和 [使用 Brownie 工具链的智能合约](https://github.com/Badger-Finance/badger-system) -- [Sushiswap](https://sushi.com/) 使用 [Python 来管理和部署他们的归属合约](https://github.com/sushiswap/sushi-vesting-protocols) -- 因 Alpha Homora 而知名的 [Alpha Finance](https://alphafinance.io/) 使用 [Brownie 来测试和部署他们的智能合约](https://github.com/AlphaFinanceLab/alpha-staking-contract) +- [Yearn Finance](https://yearn.finance/) 和 [Yearn Vault 合约代码库](https://github.com/yearn/yearn-vaults) +- [Curve](https://www.curve.finance/) 和 [Curve 智能合约代码库](https://github.com/curvefi/curve-contract) +- [BadgerDAO](https://badger.com/) 和[使用 Brownie 工具链的智能合约](https://github.com/Badger-Finance/badger-system) +- [Sushi](https://sushi.com/) 使用 [Python 管理和部署其归属合约](https://github.com/sushiswap/sushi-vesting-protocols) +- [Alpha Finance](https://alphafinance.io/)(因 Alpha Homora 而闻名)使用 [Brownie 来测试和部署智能合约](https://github.com/AlphaFinanceLab/alpha-staking-contract) ## Python 社区讨论 {#python-community-contributors} -- [以太坊 Python 社区 Discord](https://discord.gg/9zk7snTfWe),适合讨论 Web3.py 和其他 Python 框架 -- [Vyper Discord](https://discord.gg/SdvKC79cJk),适合讨论 Vyper 智能合约编程 +- [以太坊 Python 社区 Discord](https://discord.gg/9zk7snTfWe),用于讨论 Web3.py 和其他 Python 框架 +- [Vyper Discord](https://discord.gg/SdvKC79cJk),用于讨论 Vyper 智能合约编程 ## 其他汇总列表 {#other-aggregated-lists} -Vyper 维基百科包含[丰富的 Vyper 资源列表](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) \ No newline at end of file +Vyper Wiki 有一个[非常棒的 Vyper 资源列表](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) \ No newline at end of file From b6d32f9d111a158ddeb4dcd71451b6668b4e6a94 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:55 -0800 Subject: [PATCH 133/581] update(i18n): public/content/translations/zh/developers/docs/consensus-mechanisms/pos/keys/index.md --- .../consensus-mechanisms/pos/keys/index.md | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/keys/index.md b/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/keys/index.md index 9e3f3d50076..a3c1cbcaa2a 100644 --- a/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/keys/index.md +++ b/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/keys/index.md @@ -6,15 +6,15 @@ lang: zh 以太坊使用公钥-私钥加密法来保护用户资产的安全。 公钥被用作以太坊地址的基础 — 即,它对公众是可见的,并被用来当作唯一标识符。 私钥(或密钥)只能被帐户拥有者获取。 私钥用于‘签名’交易和数据,以便密码学能证明拥有者批准一个特定私钥的某些行为。 -以太坊的密钥使用 [椭圆曲线加密法](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography) 生成。 +以太坊的密钥是使用[椭圆曲线加密](https://en.wikipedia.org/wiki/Elliptic-curve_cryptography)生成的。 -然而,在以太坊从[工作量证明](/developers/docs/consensus-mechanisms/pow)转换到[权益证明](/developers/docs/consensus-mechanisms/pos)的时候,一种新类型的密钥被加入到以太坊。 原来的密钥仍然像之前那样工作—基于椭圆曲线的密钥确保帐户安全没有变化。 然而,通过质押以太币和运行验证者来参与权益证明时,用户需要一种新类型的密钥。 这一需求是由于扩容挑战带来的,信息需要在大量验证者之间传递,这些信息需要一种密码学方法来方便汇总,以减少网络达成共识所需的沟通数量。 +然而,当以太坊从[工作量证明](/developers/docs/consensus-mechanisms/pow)切换到[权益证明](/developers/docs/consensus-mechanisms/pos)时,以太坊中增加了一种新型密钥。 原来的密钥仍然像之前那样工作—基于椭圆曲线的密钥确保帐户安全没有变化。 然而,通过质押以太币和运行验证者来参与权益证明时,用户需要一种新类型的密钥。 这一需求是由于扩容挑战带来的,信息需要在大量验证者之间传递,这些信息需要一种密码学方法来方便汇总,以减少网络达成共识所需的沟通数量。 -这种新型密钥采用[** Boneh-Lynn-Shacham (BLS) **签名方案](https://wikipedia.org/wiki/BLS_digital_signature)。 BLS 能够对签名进行高效聚合,同时允许对聚合的单个验证者密钥进行逆向工程,它对于管理验证者之间的行动非常理想。 +这种新型密钥使用 [**Boneh-Lynn-Shacham (BLS)** 签名方案](https://wikipedia.org/wiki/BLS_digital_signature)。 BLS 能够对签名进行高效聚合,同时允许对聚合的单个验证者密钥进行逆向工程,它对于管理验证者之间的行动非常理想。 ## 两种类型的验证者密钥 {#two-types-of-keys} -在转换到权益证明之前,以太坊用户只有一个基于椭圆曲线的私钥来访问他们的资金。 随着权益证明的引入,那些希望成为单独质押人的用户也需要一个**验证者密钥**和一个**提款密钥**。 +在转换到权益证明之前,以太坊用户只有一个基于椭圆曲线的私钥来访问他们的资金。 随着权益证明的引入,希望成为独立质押者的用户也需要一个**验证者密钥**和一个**提款密钥**。 ### 验证者密钥 {#validator-key} @@ -25,7 +25,7 @@ lang: zh 验证者私钥的目的是签名链上操作,如区块提议和认证。 因此,这些密钥必须存放在热钱包中。 -这种灵活性的优势是可以快速地把验证者的签名密钥从一台设备转移到另一台,然而,如果密钥丢失或者被盗,盗窃者可以通过这些方式**恶意地行动**: +这种灵活性便于将验证者签名密钥从一台设备快速转移到另一台设备,但如果密钥丢失或被盗,盗窃者就可以通过以下几种方式**恶意行事**: - 通过以下方式罚没验证者: - 作为一个提议者,在同一时隙签名两个不同的信标区块 @@ -33,13 +33,13 @@ lang: zh - 作为一个证明人,签名两个具有相同目标的不同证明 - 促使自愿退出,从而停止验证者质押,并授权提款密钥拥有者获取以太币余额。 -当用户把以太币存入到质押存款合约时,**验证者公钥**会被包含在交易数据中。 这被称为_存款数据_,它让以太坊可以识别验证者。 +当用户将 ETH 存入质押存款合约时,**验证者公钥**会包含在交易数据中。 这被称为_存款数据_,它让以太坊可以识别验证者。 ### 提款凭证 {#withdrawal-credentials} -每个验证者都有一个被称为_提款凭证_的属性。 此 32 字节字段的开头要么是 `0x00`,表示 BLS 提款凭证,要么是 `0x01`,表示指向执行地址的凭证。 +每个验证者都有一个称为_提款凭证_的属性。 此 32 字节字段以 `0x00`(代表 BLS 提款凭证)或 `0x01`(代表指向某个执行地址的凭证)开头。 -具有 `0x00` BLS 密钥的验证者必须更新这些凭证,使其指向执行地址,以便激活从质押进行超额余额支付或全额提款。 这可以通过在初始密钥生成期间在存款数据中提供执行地址,_或者_通过稍后使用提款密钥签署并广播 `BLSToExecutionChange` 信息来实现。 +持有 `0x00` BLS 密钥的验证者必须更新这些凭证,使其指向一个执行地址,才能激活超额余额支付或从质押中全额提款。 这可以通过在初始密钥生成期间在存款数据中提供一个执行地址来实现,_或者_也可以在之后使用提款密钥来签署并广播一条 `BLSToExecutionChange` 消息。 ### 提款密钥 {#withdrawal-key} @@ -50,17 +50,19 @@ lang: zh - 提款**私**钥 - 提款**公**钥 -在将提款凭证更新为 `0x01` 类型之前丢失此密钥,意味着失去对验证者余额的访问权限。 验证者仍然可以对认证和区块进行签名,因为这些操作只需要验证者的私钥,但如果提款密钥丢失,那就几乎没有任何奖励。 +在将提款凭证更新为 `0x01` 类型之前丢失此密钥,意味着将失去对验证者余额的访问权限。 验证者仍然可以对认证和区块进行签名,因为这些操作只需要验证者的私钥,但如果提款密钥丢失,那就几乎没有任何奖励。 把验证者密钥和以太坊帐户密钥分开,可以让一个用户运行多个验证者。 ![验证者密钥示意图](validator-key-schematic.png) +**注意**:目前,要退出质押职责并提取验证者余额,需要使用验证者密钥签署一条[自愿退出消息 (VEM)](https://mirror.xyz/ladislaus.eth/wmoBbUBes2Wp1_6DvP6slPabkyujSU7MZOFOC3QpErs&1)。 然而,[EIP-7002](https://eips.ethereum.org/EIPS/eip-7002) 是一项提案,未来将允许用户通过提款密钥签署退出消息,从而触发验证者退出并提取其余额。 这将减少信任假设,使那些将 ETH 委托给[质押即服务提供商](/staking/saas/#what-is-staking-as-a-service)的质押者能够继续控制自己的资金。 + ## 从助记词派生密钥 {#deriving-keys-from-seed} 如果每次质押 32 个以太币都需要一套新的 2 个完全独立的密钥,那么密钥管理将很快变得难以操作,特别是对于运行多个验证者的用户来说。 相反,多个验证者密钥可以从一个共同的密钥进行派生,并且存储这个密钥就能允许访问多个验证者密钥。 -当[用户访问](https://ethereum.stackexchange.com/questions/19055/what-is-the-difference-between-m-44-60-0-0-and-m-44-60-0)自己的钱包时,[助记符](https://en.bitcoinwiki.org/wiki/Mnemonic_phrase)和路径是用户经常遇到的突出特征。 助记符是一连串的词语,作为私钥的初始种子。 当与其他数据结合时,助记符生成一个被称为‘主密钥’的哈希。 这可以被视为一棵树的根部。 根部的分支可以使用层次路径来派生,从而子节点可以作为其父节点的哈希和它们在树中的索引的组合而存在。 阅读 [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) 和 [BIP-19](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) 基于助记词的密钥生成标准。 +[助记词](https://en.bitcoinwiki.org/wiki/Mnemonic_phrase)和路径是用户在[访问](https://ethereum.stackexchange.com/questions/19055/what-is-the-difference-between-m-44-60-0-0-and-m-44-60-0)自己的钱包时经常遇到的突出功能。 助记符是一连串的词语,作为私钥的初始种子。 当与其他数据结合时,助记符生成一个被称为‘主密钥’的哈希。 这可以被视为一棵树的根部。 根部的分支可以使用层次路径来派生,从而子节点可以作为其父节点的哈希和它们在树中的索引的组合而存在。 阅读关于基于助记词生成密钥的 [BIP-32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) 和 [BIP-19](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) 标准。 这些路径有以下结构,对于和硬件钱包打过交道的用户来说应该比较熟悉: @@ -74,7 +76,7 @@ m/44'/60'/0'/0` master_key / purpose / coin_type / account / change / address_index ``` -这个逻辑可以使用户把尽可能多的验证者绑定到一个**助记词**,因为虽然树的根部是共同的,但在分支上却可以产生差异化。 用户可以从助记词**派生任意数量的密钥**。 +这个逻辑可以使用户将尽可能多的验证者绑定到单个**助记词**,因为树根可以是共同的,而差异化可以发生在分支上。 用户可以从助记词**派生任意数量的密钥**。 ``` [m / 0] @@ -86,11 +88,13 @@ master_key / purpose / coin_type / account / change / address_index [m / 2] ``` -每个分支都用一个 `/` 来分割,因此 `m/2` 意味着由主密钥开始,接着是分支 2。 在下面的示意图中,一个助记词用来存储三个提款密钥,每个密钥都有两个相关的验证者。 +每个分支由 `/` 分隔,所以 `m/2` 意味着从主密钥开始,然后跟随分支 2。 在下面的示意图中,一个助记词用来存储三个提款密钥,每个密钥都有两个相关的验证者。 ![验证者密钥逻辑](multiple-keys.png) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [由 Carl Beekhuizen 发表的以太坊基金会博客](https://blog.ethereum.org/2020/05/21/keys/) +- [Carl Beekhuizen 撰写的以太坊基金会博客文章](https://blog.ethereum.org/2020/05/21/keys/) - [EIP-2333 BLS12-381 密钥生成](https://eips.ethereum.org/EIPS/eip-2333) +- [EIP-7002:执行层触发的退出](https://web.archive.org/web/20250125035123/https://research.2077.xyz/eip-7002-unpacking-improvements-to-staking-ux-post-merge) +- [大规模密钥管理](https://docs.ethstaker.cc/ethstaker-knowledge-base/scaled-node-operators/key-management-at-scale) From 5cdb9d1404a974f32186a64188cded290c445b14 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:57 -0800 Subject: [PATCH 134/581] update(i18n): public/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md --- .../index.md | 77 +++++++++---------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md index 023490dde44..0ac9665c9e0 100644 --- a/public/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md +++ b/public/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md @@ -1,11 +1,8 @@ --- -title: 智能合约安全准则 +title: 智能合约安全性准则 description: 构建你的dapp时要考虑的安全准则清单 author: "Trailofbits" -tags: - - "solidity" - - "智能合约" - - "安全性" +tags: [ "Solidity", "智能合同", "安全性。" ] skill: intermediate lang: zh published: 2020-09-06 @@ -15,7 +12,7 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel 遵循这些高级建议,构建更安全的智能合约。 -## 设计准则 {#design-guidelines} +## 设计指南 {#design-guidelines} 编写代码之前,务必先讨论行智能合约的设计。 @@ -23,72 +20,72 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel 文档可以在不同级别编写,在执行合约时应进行更新: -- **系统的简要英文描述**,描述合约的行为和所使用的代码库 -- **数据模型和架构图**,包括合约的交互概述图和系统的状态转换图。 可以使用[Slither打印机](https://github.com/crytic/slither/wiki/Printer-documentation)生成相关图示。 -- **完整的代码文档**, 可以为Solidity使用[Natspec格式](https://solidity.readthedocs.io/en/develop/natspec-format.html)。 +- **对系统的简明英文描述**,说明合约的功能以及对代码库的任何假设。 +- **方案和架构图**,包括合约交互和系统的状态机。 [Slither printers](https://github.com/crytic/slither/wiki/Printer-documentation) 可以帮助生成这些方案。 +- **详尽的代码文档**,Solidity 可以使用 [Natspec 格式](https://docs.soliditylang.org/en/develop/natspec-format.html)。 -### 链上计算与链下计算 {#on-chain-vs-off-chain-computation} +### 链上计算与链下计算 {#onchain-vs-offchain-computation} -- **保持尽可能多的链下代码。** 保持链上代码层的最小化。 用链下代码的方式对数据进行预处理,使链上验证变得简单。 是否需要已排序列表? 在链下对列表进行排序,然后在链上只检查其顺序。 +- \*\*尽可能将代码放在链下。\*\*保持较小的链上层。 用链下代码预处理数据,从而简化链上验证。 是否需要已排序列表? 在链下对列表进行排序,然后在链上只检查其顺序。 -### 升级 {#upgradeability} +### 可升级性 {#upgradeability} -我们在[我们的博客文章](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/)中讨论了不同的升级解决方案。 在编写任何代码之前,请慎重选择是否支持可升级性。 该决定将影响你如何构建你的代码。 一般来说,我们建议: +我们在[我们的博文](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/)中讨论了不同的可升级性解决方案。 在编写任何代码之前,请慎重选择是否支持可升级性。 该决定将影响你如何构建你的代码。 一般来说,我们建议: -- **优先考虑[合约迁移](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/)而不是可升级性。**迁移系统具有许多与可升级系统相同的优点,但没有其缺点。 -- **使用数据分离模式而不是delegatecallproxy模式。**如果你的项目有明确的抽象分离,则使用数据分离的可升级性只需要进行一些调整。 delegatecallproxy需要EVM专业知识,并且非常容易出错。 -- **在部署前记录迁移/升级程序。**如果你不得不在没有任何指导的情况下在压力下做出反应,你就会犯错。 提前写好要遵循的程序。 其中应包括: +- \*\*优先选择[合约迁移](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/),而非可升级性。\*\*迁移系统与可升级系统相比,具有许多相同优点,但没有其缺点。 +- \*\*使用数据分离模式,而非 delegatecallproxy 模式。\*\*如果你的项目有明确的抽象分离,使用数据分离实现的可升级性将仅需少量调整。 delegatecallproxy需要EVM专业知识,并且非常容易出错。 +- \*\*在部署前记录迁移/升级程序。\*\*如果你在毫无指导的情况下,必须顶着压力做出反应,就可能会犯错。 提前写好要遵循的程序。 其中应包括: - 启动新的智能合约的调用 - 密钥存放在哪里以及如何获取它们 - 如何检查部署! 开发和测试部署后的脚本。 ## 实施指南 {#implementation-guidelines} -**力求简洁。** 尽可能使用最简单的解决方案来实现你的目的。 所有的团队成员都应当能够理解解决方案。 +\*\*力求简洁。\*\*始终使用最简单的解决方案来实现你的目的。 所有的团队成员都应当能够理解解决方案。 -### 功能组成 {#function-composition} +### 函数组合 {#function-composition} 使用便于检查的代码库架构, 避免选择不利于正确性验证的架构。 -- 通过多个合约或将相似的功能分到一组(例如,身份验证、算术等)来**拆分你的系统逻辑**。 -- **编写小的函数,并且目的明确。**这将便于审查并允许对单个组件进行测试。 +- **拆分系统逻辑**,既可以通过多个合约,也可以将相似的函数分组(例如,身份验证、算术运算……)。 +- \*\*编写目的明确的小函数。\*\*这样便于审查,也可以对单个组件进行测试。 ### 继承 {#inheritance} -- **使继承易于管理。**继承应用于划分逻辑,但是,你的项目应以最小化继承树的深度和宽度为目标。 -- **使用Slother的[inheritance printer](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph)检查合约层级结构。**inheritance printer可帮助你审查层级结构的大小。 +- \*\*保持继承的可管理性。\*\*继承可用于划分逻辑,但是,你的项目应旨在尽量减小继承树的深度和宽度。 +- \*\*使用 Slither 的 [inheritance printer](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph) 检查合约的层级结构。\*\*inheritance printer 将帮助你审查层级结构的大小。 ### 事件 {#events} -- **记录所有关键操作。**事件有助于在开发过程中调试合约,并在部署后对其进行监控。 +- \*\*记录所有关键操作。\*\*事件将有助于在开发期间调试合约,并在部署后监控合约。 -### 规避已知漏洞 {#avoid-known-pitfalls} +### 避免已知陷阱 {#avoid-known-pitfalls} -- **了解最常见的安全问题。**有大量的用于常见问题的网络资源,例如[Ethernaut CTF](https://ethernaut.openzeppelin.com/)、[Capture the Ether](https://capturetheether.com/)或[Not so smart contracts](https://github.com/crytic/not-so-smart-contracts/)。 -- **了解[Solidity文档](https://solidity.readthedocs.io/en/latest/)中的警告部分,** 警告部分将通知你该语言的非明显行为。 +- \*\*了解最常见的安全问题。\*\*有很多在线资源可供学习常见问题,例如 [Ethernaut CTF](https://ethernaut.openzeppelin.com/)、[Capture the Ether](https://capturetheether.com/) 或 [Not so smart contracts](https://github.com/crytic/not-so-smart-contracts/)。 +- \*\*留意 [Solidity 文档](https://docs.soliditylang.org/en/latest/)中的警告部分。\*\*警告部分会告知你该语言中一些不明显的行为。 -### 依赖关系 {#dependencies} +### 依赖项 {#dependencies} -- **使用经过充分测试的库。**从经过充分测试的库中导入代码将降低编写错误代码的可能性。 如果你打算编写一个ERC20合约,请使用[OpenZepelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20)。 -- **使用依赖关系管理器,不要直接复制粘贴代码。** 如果依赖于外部来源,请保持与原始来源的的同步。 +- \*\*使用经过充分测试的库。\*\*从经过充分测试的库导入代码会降低你编写错误代码的可能性。 如果你想编写 ERC20 合约,请使用 [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20)。 +- \*\*使用依赖项管理器;避免复制粘贴代码。\*\*如果你依赖外部源,则必须使其与原始源保持同步。 ### 测试和验证 {#testing-and-verification} -- **编写详尽的单元测试。**全面的测试套件对于构建高质量的软件至关重要。 -- **编写[Slither](https://github.com/crytic/slither)、[Echidna](https://github.com/crytic/echidna)和[Manticore](https://github.com/trailofbits/manticore)自定义检查和属性。**自动化工具将帮助确保你的合约安全。 查看本指南的其余部分,了解如何编写高效的检查和属性。 -- **使用[crytic.io](https://crytic.io/)。**Crytic与Github集成,提供对私有Slither探测器的访问,并从Echidna运行自定义属性检查。 +- \*\*编写详尽的单元测试。\*\*一个全面的测试套件对于构建高质量软件至关重要。 +- \*\*编写 [Slither](https://github.com/crytic/slither)、[Echidna](https://github.com/crytic/echidna) 和 [Manticore](https://github.com/trailofbits/manticore) 自定义检查和属性。\*\*自动化工具有助于确保你的合约安全。 查看本指南的其余部分,了解如何编写高效的检查和属性。 +- **使用 [crytic.io](https://crytic.io/)**。Crytic 与 GitHub 集成,可访问私有 Slither 检测器,并运行来自 Echidna 的自定义属性检查。 ### Solidity {#solidity} -- **使用Solidity 0.5,而不是0.4和0.6。**在我们看来,相较于0.4,Solidity 0.5更加安全,具有更好的内部实践。 Solidity 0.6对于发布级产品而言过于不稳定,还需要时间才能趋于成熟。 -- **使用稳定版本进行编译;使用最新版本进行警告检查。** 保证代码中不存在最新版本编译器报告的问题。 然而,Solidity的发布周期很快,编译器中存在错误,所以我们不推荐最新版本进行部署(请参阅Slither的[solc版本建议](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33))。 -- **不要使用内联汇编。**使用汇编需要EVM专业知识。 如果对黄皮书没有很好的_理解_,请不要写EVM代码。 +- \*\*优先使用 Solidity 0.5,而非 0.4 和 0.6。\*\*我们认为,与 0.4 版本相比,Solidity 0.5 更安全,并且内置了更好的实践。 Solidity 0.6对于发布级产品而言过于不稳定,还需要时间才能趋于成熟。 +- \*\*使用稳定版本进行编译;使用最新版本检查警告。\*\*确保你的代码在最新编译器版本下没有报告任何问题。 然而,Solidity 的发布周期很快,且有过编译器漏洞的历史,因此我们不建议使用最新版本进行部署(请参阅 Slither 的 [solc 版本建议](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33))。 +- \*\*不要使用内联汇编。\*\*汇编需要 EVM 专业知识。 如果你没有_精通_黄皮书,请不要编写 EVM 代码。 -## 部署准则 {#deployment-guidelines} +## 部署指南 {#deployment-guidelines} 合约开发和部署完成后: -- **监测合约。**关注日志,在合约或钱包发生异常时随时做出反应。 -- **将联系信息添加到[blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts)。**如果发现安全缺陷,此列表可以帮助第三方与你联系。 -- **保护特权用户的钱包。** 如果使用硬件钱包存储密钥,请按照[最佳实践](https://blog.trailofbits.com/2018/11/27/10-rules-for-the-secure-use-of-cryptocurrency-hardware-wallets/)进行操作。 -- **制定事故响应计划。** 以合约可能发生错误为前提进行考量。 即使合约本身没有错误,攻击者也可能有机会控制合约拥有者的密钥。 +- \*\*监控你的合约。\*\*关注日志,并准备好在合约或钱包受损时做出反应。 +- \*\*将你的联系信息添加到 [blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts)。\*\*如果发现安全漏洞,此列表可帮助第三方联系你。 +- \*\*保护特权用户的钱包安全。\*\*如果你将密钥存储在硬件钱包中,请遵循我们的[最佳实践](https://blog.trailofbits.com/2018/11/27/10-rules-for-the-secure-use-of-cryptocurrency-hardware-wallets/)。 +- \*\*制定事件响应计划。\*\*要考虑到你的智能合约可能被攻击。 即使合约本身没有错误,攻击者也可能有机会控制合约拥有者的密钥。 From 2124d2ee7a882a7f4d41810549e5aa2feb6fb583 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:13:59 -0800 Subject: [PATCH 135/581] update(i18n): public/content/translations/zh/developers/docs/consensus-mechanisms/pos/faqs/index.md --- .../consensus-mechanisms/pos/faqs/index.md | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/faqs/index.md b/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/faqs/index.md index 86050a1e3c6..dbcb6a27c48 100644 --- a/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/faqs/index.md +++ b/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/faqs/index.md @@ -4,11 +4,11 @@ description: 常见问题:权益证明以太坊 lang: zh --- -## 权益证明是什么? {#what-is-proof-of-stake} +## 什么是权益证明 {#what-is-proof-of-stake} 权益证明是一种算法类别,通过确保攻击者因欺诈行为而损失有价值的资产,可以为区块链提供安全性。 权益证明系统需要一组验证者提供一些资产,如果验证者从事某些被证明为欺诈的行为,则可以销毁这些资产。 以太坊使用权益证明机制来保护区块链的安全性。 -## 权益证明与工作量证明相比有何不同? {#comparison-to-proof-of-work} +## 权益证明与工作量证明相比有何不同? 与工作量证明的比较 {#comparison-to-proof-of-work} 权益证明和工作量证明都是从经济上抑制恶意行为者的机制,以防止其向网络发送垃圾或进行欺诈行为。 在两种情况下,积极参与共识的节点都会“向网络中”投入某些资产,如果他们行为不当,便会失去这些资产。 @@ -18,7 +18,7 @@ lang: zh 工作量证明需要在挖矿过程中消耗大量的电力,因此能耗要高得多。 而权益证明只需要非常少量的能量 - 以太坊验证者甚至可以在树莓派等低功耗设备上运行。 以太坊的权益证明机制被认为比工作量证明机制更安全,因为攻击的代价更高,并且给攻击者造成的后果更严重。 -工作量证明与权益证明是一个有争议的话题。 [Vitalik Buterin 的博客](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-are-the-benefits-of-proof-of-stake-as-opposed-to-proof-of-work)以及 Justin Drake 和 Lyn Alden 间的辩论很好地总结了各方论点。 +工作量证明与权益证明是一个有争议的话题。 [Vitalik Buterin 的博客](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-are-the-benefits-of-proof-of-stake-as-opposed-to-proof-of-work)以及 Justin Drake 和 Lyn Alden 之间的辩论很好地总结了这些论点。 @@ -26,31 +26,31 @@ lang: zh 由此可见, 权益证明网络上的节点能耗很低。 一项第三方研究得出的结论是,整个基于权益证明的以太坊网络每年消耗约 0.0026 亿千瓦时的电量,仅相当于美国博彩行业电力消耗量的 1/13000 左右。 -[关于以太坊能源消耗的更多信息](/energy-consumption/)。 +[更多关于以太坊能源消耗的信息](/energy-consumption/) ## 权益证明安全吗? {#is-pos-secure} 以太坊的权益证明是非常安全的。 这种机制经过了八年的研究、开发和严格测试,才得以投入使用。 安全保证有别于使用工作量证明的区块链。 在权益证明机制中,可以主动惩罚(“罚没”)恶意验证者并将其从验证者组中驱逐出去,这将导致其损失大量的以太币。 而在工作量证明中,攻击者在拥有足够哈希能力的情况下可以不断重复攻击。 与工作量证明以太坊相比,对权益证明以太坊发起同等攻击的成本也更高。 要影响链的活性,至少需要网络上已质押以太币总数的 33%(除非进行极为复杂、成功概率极低的攻击)。 要控制未来区块的内容,至少需要已质押以太币总量的 51%,而要重写历史记录,则需要超过质押总量的 66%。 以太坊协议将在 33% 或 51% 攻击场景中销毁这些资产,并通过社会共识来应对 66% 攻击场景。 -- [关于保护以太坊权益证明机制免受攻击的更多信息](/developers/docs/consensus-mechanisms/pos/attack-and-defense) -- [关于权益证明设计的更多信息](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) +- [更多关于保护以太坊权益证明免受攻击者攻击的信息](/developers/docs/consensus-mechanisms/pos/attack-and-defense) +- [更多关于权益证明设计的信息](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) ## 权益证明机制降低了以太坊的费用吗? {#does-pos-make-ethereum-cheaper} 否。 发送交易的成本(燃料费)由动态费用市场决定,随着网络需求的增加而增加。 共识机制对此没有直接影响。 -[关于燃料的更多信息](/developers/docs/gas)。 +[更多关于燃料的信息](/developers/docs/gas)。 ## 什么是节点、客户端和验证者? {#what-are-nodes-clients-and-validators} 节点是连接到以太坊网络的计算机。 客户端是在计算机上运行,将其转化为节点的软件。 有两种类型的客户端:执行客户端和共识客户端。 两种客户端都是创建节点所需的。 验证者是共识客户端一个可选的附加功能,使节点能够参与权益证明共识。 这意味着当被选中时创建和提议区块,以及认证其在网络上监听到的区块。 要运行验证者,节点运营商必须在存款合约中存入 32 个以太币。 -- [关于节点和客户端的更多信息](/developers/docs/nodes-and-clients) -- [关于质押的更多信息](/staking) +- [更多关于节点和客户端的信息](/developers/docs/nodes-and-clients) +- [更多关于质押的信息](/staking) ## “权益证明”是一个新的概念吗? {#is-pos-new} -否。 早在 2011 年,BitcoinTalkk 论坛上有一位用户就[提出了将权益证明作为比特币的升级形态的想法](https://bitcointalk.org/index.php?topic=27787.0)。 11 年后,才准备好在以太坊主网上实施。 一些其他的区块链比以太坊更早实施了权益证明,但不是以太坊的特定机制(称为 Gasper)。 +否。 2011 年,BitcoinTalk 上的一位用户[提出了权益证明的基本思想](https://bitcointalk.org/index.php?topic=27787.0),作为比特币的一项升级。 11 年后,才准备好在以太坊主网上实施。 一些其他的区块链比以太坊更早实施了权益证明,但不是以太坊的特定机制(称为 Gasper)。 ## 以太坊的权益证明有什么特别之处? {#why-is-ethereum-pos-special} @@ -60,13 +60,13 @@ lang: zh Casper 和 LMD_GHOST 的组合被称为 Gasper。 -[关于 Gasper 的更多信息](/developers/docs/consensus-mechanisms/pos/gasper/) +[更多关于 Gasper 的信息](/developers/docs/consensus-mechanisms/pos/gasper/) ## 什么是罚没? {#what-is-slashing} 罚没是指销毁验证者的部分质押额并将验证者从网络中逐出的行为。 罚没中损失的以太币数量随着被罚没的验证者数量而变化 - 这意味着串通的验证者会受到比个人更严厉的惩罚。 -[关于罚没的更多信息](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties#slashing) +[更多关于惩罚的信息](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties#slashing) ## 为什么成为验证者需要质押 32 个以太币? {#why-32-eth} @@ -76,32 +76,32 @@ Casper 和 LMD_GHOST 的组合被称为 Gasper。 每个时隙都会以伪随机的方式选择一个验证者来提议区块,使用的算法被称为 RANDAO,它将区块提议者的哈希与一个随每个区块更新的种子混合在一起。 这个值用于在所有验证者中选择一个特定的验证者。 验证者的选择会提前两个时段固定。 -[关于如何选择验证者的更多信息](/developers/docs/consensus-mechanisms/pos/block-proposal) +[更多关于验证者选择的信息](/developers/docs/consensus-mechanisms/pos/block-proposal) -## 什么是权益粉碎攻击? {#what-is-stake-grinding} +## 什么是权益粉碎攻击? 什么是权益粉碎攻击?{#what-is-stake-grinding} 权益粉碎攻击是针对权益证明网络的攻击类别,这种情况下,攻击者试图将验证者选择算法偏向于选择他们自己的验证者。 对 RANDAO 发起权益粉碎攻击需要已质押的以太币总数的约一半。 -[关于权益粉碎攻击的更多信息](https://eth2book.info/altair/part2/building_blocks/randomness/#randao-biasability) +[更多关于权益粉碎攻击的信息](https://eth2book.info/altair/part2/building_blocks/randomness/#randao-biasability) ## 什么是社交罚没? {#what-is-social-slashing} 社交罚没是指社区协调区块链的分叉以应对攻击的能力。 它使社区能够从攻击者最终化不诚实的链中恢复过来。 它也可以用于对抗审查攻击。 -- [关于社交罚没的更多信息](https://ercwl.medium.com/the-case-for-social-slashing-59277ff4d9c7) -- [Vitalik Buterin 关于社交罚没的观点](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake) +- [更多关于社会性惩罚的信息](https://ercwl.medium.com/the-case-for-social-slashing-59277ff4d9c7) +- [Vitalik Buterin 谈社会性惩罚](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-proof-of-stake) ## 我会受到罚没吗? {#will-i-get-slashed} 作为验证者,除非你故意从事恶意行为,否则不会受到罚没。 罚没机制只会在极其特定的情况下实施,比如验证者在同一时隙提议多个区块或者在其认证中出现自相矛盾等行为,这类情况很少会在正常操作中意外发生。 -[关于罚没条件的更多信息](https://eth2book.info/altair/part2/incentives/slashing) +[更多关于惩罚条件的信息](https://eth2book.info/altair/part2/incentives/slashing) -## 什么是无利害关系问题? {#what-is-nothing-at-stake-problem} +## 什么是无利害关系问题? 什么是“无利害关系”问题?{#what-is-nothing-at-stake-problem} 无利害关系问题是一些权益证明机制中的一个概念性问题,其中只有奖励而没有惩罚。 如果没有任何利害关系,那么一个务实的验证者同样愿意验证任何甚至多个区块链分叉,因为这将增加他们的奖励。 以太坊通过使用最终确定性条件和罚没机制来确保只有一个规范链,以解决此问题。 -[关于无利害关系问题的更多信息](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed) +[更多关于“无利害关系”问题的信息](https://vitalik.eth.limo/general/2017/12/31/pos_faq.html#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed) ## 什么是分叉选择算法? {#what-is-a-fork-choice-algorithm} @@ -109,37 +109,37 @@ Casper 和 LMD_GHOST 的组合被称为 Gasper。 以太坊的分叉选择算法被称为 LMD-GHOST。 它会选择具有最大认证权重的分叉,也就是得到了最多质押以太币投票的分叉。 -[关于 LMD-GHOST 的更多信息](/developers/docs/consensus-mechanisms/pos/gasper/#fork-choice) +[更多关于 LMD-GHOST 的信息](/developers/docs/consensus-mechanisms/pos/gasper/#fork-choice) ## 什么是权益证明中的最终确定性? {#what-is-finality} 权益证明中的最终确定性是指保证给定的区块是规范链的永久部分,并且只有在出现共识失败的情况下才会被回滚,这时攻击者将会销毁已质押以太币总数的 33%。 这是“加密经济”的最终确定性,而不是与工作量证明区块链相关的“概率最终确定性”。 在概率最终确定性中,区块没有明确的确定/非确定状态——只不过随着时间的推移,区块从链上被删除的可能性越来越小,用户将自行决定他们什么时候有足够的信心认为区块是“安全的”。 而在加密经济的最终确定性下,成对的检查点区块必须获得已质押以太币 66% 以上的选票。 如果满足这个条件,这两个检查点之间的区块将被明确“最终确定”。 -[关于最终确定性的更多信息](/developers/docs/consensus-mechanisms/pos/#finality) +[更多关于确定性的信息](/developers/docs/consensus-mechanisms/pos/#finality) ## 什么是“弱主观性”? {#what-is-weak-subjectivity} 弱主观性是权益证明网络的一个特点,其中社交信息用于确认区块链的当前状态。 新节点或长时间离线后重新加入网络的节点可以获得最新的状态,以便节点能够立即查看它们是否位于正确的链上。 这些状态被称为“弱主观性检查点”,它们可以从其他带外节点运营者处获取,也可以从区块链浏览器或多个公共端点获取。 -[关于弱主观性的更多信息](/developers/docs/consensus-mechanisms/pos/weak-subjectivity) +[更多关于弱主观性的信息](/developers/docs/consensus-mechanisms/pos/weak-subjectivity) ## 权益证明能抗审查吗? {#is-pos-censorship-resistant} 抗审查性当前很难证明。 然而,与工作量证明不同,权益证明提供了协调罚没以处罚审查验证者的选择。 该协议即将修改为将区块构建者与区块提议者分开,并实施构建者必须在每个区块中包括的交易列表。 此提案被称为“提议者-构建者分离”,有助于防止验证者审查交易。 -[关于“提议者-构建者分离”的更多信息](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Original-basic-scheme) +[更多关于提议者-构建者分离的信息](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Original-basic-scheme) ## 以太坊的权益证明系统会受到 51% 攻击吗? {#pos-51-attack} 由此可见, 权益证明和工作量证明一样,容易受到 51% 攻击。 攻击者不需要掌控 51% 的网络算力,而是需要掌控已质押以太币总数的 51%。 如果攻击者累积了总质押量的 51%,则能够控制分叉选择算法。 这使得攻击者能够审查某些交易,进行短程重组,以及通过以有利于他们的方式重新排序区块来提取矿工可提取价值。 -[关于权益证明攻击的更多信息](/developers/docs/consensus-mechanisms/pos/attack-and-defense) +[更多关于权益证明攻击的信息](/developers/docs/consensus-mechanisms/pos/attack-and-defense) ## 什么是社交协调,为什么需要它? {#what-is-social-coordination} 社交协调是以太坊的最后一道防线,它可以使一个由于遭到攻击而最终化了不诚实区块的区块链恢复到诚实状态。 在这种情况下,以太坊社区将不得不进行“带外”社交协调并同意使用诚实的少数分支,同时罚没攻击者的验证者。 这需要应用程序和交易所也认可诚实的分叉。 -[了解关于社交协调的更多信息](/developers/docs/consensus-mechanisms/pos/attack-and-defense#people-the-last-line-of-defense) +[阅读更多关于社会协调的信息](/developers/docs/consensus-mechanisms/pos/attack-and-defense#people-the-last-line-of-defense) ## 在权益证明中,富人会变得更富有吗? {#do-rich-get-richer} @@ -147,15 +147,15 @@ Casper 和 LMD_GHOST 的组合被称为 Gasper。 ## 权益证明是否比工作量证明更中心化? {#is-pos-decentralized} -不,由于采矿成本增加、价格高昂迫使个人和小公司退出等原因,工作量证明更倾向于集中化。 目前权益证明存在的问题是流动性质押衍生品的影响。 这些是代表某些提供者所质押的以太币的代币,任何人都可以在二级市场上交换,而无需实际解除以太币的质押。 流动性质押衍生品允许用户质押的以太币数量少于 32 个,但也会产生中心化风险,即少数几个大型组织最终可能控制大部分的质押份额。 这就是为什么[单独质押](/staking/solo)成为以太坊的最佳选择。 +不,由于采矿成本增加、价格高昂迫使个人和小公司退出等原因,工作量证明更倾向于集中化。 目前权益证明存在的问题是流动性质押衍生品的影响。 这些是代表某些提供者所质押的以太币的代币,任何人都可以在二级市场上交换,而无需实际解除以太币的质押。 流动性质押衍生品允许用户质押的以太币数量少于 32 个,但也会产生中心化风险,即少数几个大型组织最终可能控制大部分的质押份额。 这就是为什么[单独质押](/staking/solo)是以太坊的最佳选择。 -[关于流动性质押衍生品中的权益中心化的更多信息](https://notes.ethereum.org/@djrtwo/risks-of-lsd) +[更多关于流动性质押衍生品 (LSD) 中质押中心化的信息](https://notes.ethereum.org/@djrtwo/risks-of-lsd) ## 为什么我只能质押以太币? {#why-can-i-only-stake-eth} ETH 是以太坊的原生货币。 为计算有效余额以用于加权投票和确保安全性,必须有一种单一的货币来计量所有权益。 以太币本身是以太坊的一个基本组成部分,而不是一个智能合约。 如果加入其他货币,将会显著增加质押的复杂性并降低其安全性。 -## 以太坊是唯一使用权益证明的区块链吗? {#is-ethereum-the-only-pos-blockchain} +## 以太坊是唯一使用权益证明的区块链吗? 以太坊是唯一的权益证明区块链吗?{#is-ethereum-the-only-pos-blockchain} 不,现在有多种使用权益证明的区块链。 但是没有一个和以太坊完全相同;以太坊的权益证明机制是独一无二的。 @@ -163,10 +163,10 @@ ETH 是以太坊的原生货币。 为计算有效余额以用于加权投票和 合并是指以太坊关闭其基于工作量证明的共识机制并开启其基于权益证明的共识机制的时刻。 合并发生在 2022 年 9 月 15 日。 -[关于合并的更多信息](/roadmap/merge) +[更多关于合并的信息](/roadmap/merge) ## 什么是活性和安全性? {#what-are-liveness-and-safety} -活性和安全性是区块链的两个基本安全问题。 活性是指最终链的可用性。 如果链停止最终化或用户无法轻松访问它,这些都是活性失败。 极高的访问成本也可能被认为是一种活性失败。 安全性是指攻击链,即最终化彼此冲突的检查点的难度有多大。 +活性和安全性是区块链的两个基本安全问题。 活性是指最终链的可用性。 如果链停止最终化或用户无法轻松访问它,这些都是活性失败。 极高的访问成本也可能被认为是一种活性失败。 安全性是指攻击区块链的难度,即最终确定相互冲突的检查点。 -[阅读关于 Casper 论文的更多信息](https://arxiv.org/pdf/1710.09437.pdf) +[在 Casper 论文中阅读更多信息](https://arxiv.org/pdf/1710.09437.pdf) From 0c5149dc2bb188a6cf01f74d02856cdbf51b2784 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:02 -0800 Subject: [PATCH 136/581] update(i18n): public/content/translations/zh/developers/tutorials/eip-1271-smart-contract-signatures/index.md --- .../index.md | 50 +++++++++---------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/zh/developers/tutorials/eip-1271-smart-contract-signatures/index.md index 8a1eda2b413..ca1397bd8a8 100644 --- a/public/content/translations/zh/developers/tutorials/eip-1271-smart-contract-signatures/index.md +++ b/public/content/translations/zh/developers/tutorials/eip-1271-smart-contract-signatures/index.md @@ -3,11 +3,7 @@ title: "EIP-1271:签署和验证智能合约签名" description: 基于 EIP-1271 的智能合约签名生成与验证概述。 我们还介绍了 Safe(原 Gnosis Safe)中使用的 EIP-1271 实现,以此为智能合约开发者提供一个可参考的具体例子。 author: Nathan H. Leung lang: zh -tags: - - "eip-1271" - - "智能合约" - - "验证" - - "签名" +tags: [ "eip-1271", "智能合同", "验证", "签署" ] skill: intermediate published: 2023-01-12 --- @@ -24,7 +20,7 @@ published: 2023-01-12 1. 信息:“我想用我的以太坊钱包登录这个网站” 2. 签名者:我的地址是 `0x000…` -3. 证明:这里有一些证明,证明我,`0x000…`,确实创建了这整条信息(通常会加密)。 +3. 证明:这里有一些证据,证明我 `0x000…` 确实创建了这整条信息(这通常是加密的)。 值得注意的是,数字签名包括“信息”和“签名”两部分。 @@ -36,11 +32,11 @@ published: 2023-01-12 要在基于以太坊的区块链上创建数字签名,通常需要一个别人不知道的秘密私钥。 这样,你的签名才是你的(如果其他人不知道密钥,则无法创建相同的签名)。 -你的以太坊帐户(即你的外部帐户/EOA)有一个与之关联的私钥,这是通常在网站或去中心化应用程序要求你签名时使用的私钥(例如“使用以太坊登录”)。 +你的以太坊帐户(即你的外部持有帐户/EOA)有一个与之关联的私钥,当网站或去中心化应用程序要求你签名时(例如,用于“通过以太坊登录”),通常会使用此私钥。 -应用程序可以在[不知道你的私钥](https://en.wikipedia.org/wiki/Public-key_cryptography)的情况下[验证你使用 ethers.js 等第三方库创建的签名](https://docs.alchemy.com/docs/how-to-verify-a-message-signature-on-ethereum),并且确认_你_是那个创建签名的人。 +应用程序可以使用 ethers.js 等第三方库来[验证你创建的签名](https://www.alchemy.com/docs/how-to-verify-a-message-signature-on-ethereum),同时[无需知道你的私钥](https://en.wikipedia.org/wiki/Public-key_cryptography),并确信签名是由_你_创建的。 -> 事实上,由于外部帐户数字签名使用公钥加密,可以在**链下**生成和验证! 这就是无燃料去中心化自治组织投票的工作原理—并非在链上提交投票,而是使用加密库在链下创建和验证数字签名。 +> 事实上,由于 EOA 数字签名使用公钥密码学,它们可以在**链下**生成和验证! 这就是免 Gas 的 DAO 投票的运作方式 — 无需在链上提交投票,而是使用加密库在链下创建和验证数字签名。 虽然外部帐户帐户有私钥,但智能合约帐户没有任何类型的私钥或密钥(因此“使用以太坊登录”等自然不适用于智能合约帐户)。 @@ -50,13 +46,13 @@ EIP-1271 旨在解决:如果智能合约没有可以合并到签名中的密 智能合约没有可用于签署信息的私钥。 那么,我们如何辨别签名的真伪呢? -有一种想法是,我们可以直接_询问_智能合约签名是否真实! +嗯,有一个想法是,我们可以直接_询问_智能合约签名是否真实! EIP-1271 所做的就是将“询问”智能合约给定签名是否有效这一想法标准化。 实现 EIP-1271 的合约必须有一个名为 `isValidSignature` 的函数,该函数接收信息和签名。 然后,合约可以运行一些验证逻辑(规范并没有在此强制执行任何特定内容),然后返回一个表示签名是否有效的值。 -如果 `isValidSignature` 返回表示签名有效的结果,这就相当于合约在说“是的,我承认这个签名和信息!” +如果 `isValidSignature` 返回有效的结果,那基本上就是合约在说“是的,我批准这个签名 + 信息!” ### 接口 @@ -71,13 +67,13 @@ contract ERC1271 { bytes4 constant internal MAGICVALUE = 0x1626ba7e; /** - * @dev Should return whether the signature provided is valid for the provided hash - * @param _hash Hash of the data to be signed - * @param _signature Signature byte array associated with _hash + * @dev 应返回所提供的签名对于所提供的哈希是否有效 + * @param _hash 待签名数据的哈希值 + * @param _signature 与 _hash 关联的签名字节数组 * - * MUST return the bytes4 magic value 0x1626ba7e when function passes. - * MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5) - * MUST allow external calls + * 函数通过时必须返回 bytes4 魔术值 0x1626ba7e。 + * 不得修改状态(solc < 0.5 使用 STATICCALL,solc > 0.5 使用 view 修饰符) + * 必须允许外部调用 */ function isValidSignature( bytes32 _hash, @@ -90,28 +86,28 @@ contract ERC1271 { ## EIP-1271 实现示例:安全 -合约可通过多种方式实现 `isValidSignature`—规范本身对具体实现没有做出太多要求。 +合约可通过多种方式实现 `isValidSignature` — 规范本身对具体实现没有做出太多要求。 实现 EIP-1271 的一个代表性合约是 Safe(原 Gnosis Safe)。 -在 Safe 的代码中,[实现了 ](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol) `isValidSignature`,从而使签名可通过以下[两种方式](https://ethereum.stackexchange.com/questions/122635/signing-messages-as-a-gnosis-safe-eip1271-support)创建和验证: +在 Safe 的代码中,`isValidSignature` 的[实现方式](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol)使得签名可以通过[两种方式](https://ethereum.stackexchange.com/questions/122635/signing-messages-as-a-gnosis-safe-eip1271-support)创建和验证: -1. 链上消息 +1. 链上信息 1. 创建:一个安全的所有者创建一个新的安全交易来“签名”一则消息,并将消息作为数据传入交易中。 一旦足够的所有者对交易进行签名,使签名数量达到多签名阈值后,交易就会被广播并运行。 在交易中,会调用一个安全函数,将消息添加到“已批准”消息列表中。 - 2. 验证:调用 Safe 合约的 `isValidSignature` 函数,并传入待验证的消息作为消息参数,传入[一个空值作为签名参数](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol#L32)(即 `0x`)。 Safe 合约会看到签名参数为空,将不会对签名进行密码验证,而是直接检查消息是否在“已批准”消息列表中。 + 2. 验证:在 Safe 合约上调用 `isValidSignature`,将被验证的信息作为信息参数传入,并为[签名参数传入一个空值](https://github.com/safe-global/safe-contracts/blob/main/contracts/handler/CompatibilityFallbackHandler.sol#L32)(即 `0x`)。 Safe 合约会看到签名参数为空,将不会对签名进行密码验证,而是直接检查消息是否在“已批准”消息列表中。 2. 链下信息: - 1. 创建:安全的所有者在链下创建一条消息,然后让其他安全的所有者分别对消息进行签名,直到有足够的签名来达到多签名批准阈值。 - 2. 验证:调用 `isValidSignature`。 在消息参数中,传入要验证的消息。 在签名参数中,传入每个安全所有者的签名,所有签名都是背靠背连接在一起的。 Safe 合约会检查是否有足够签名以达到阈值,**并**检查每个签名的有效性。 如果是,它将返回一个表示签名验证成功的值。 + 1. 创建:Safe 所有者在链下创建一条信息,然后让其他 Safe 所有者分别对该信息进行签名,直到有足够的签名来满足多重签名批准阈值。 + 2. 验证:调用 `isValidSignature`。 在消息参数中,传入要验证的消息。 在签名参数中,传入每个安全所有者的签名,所有签名都是背靠背连接在一起的。 Safe 将检查签名数量是否足以达到阈值,**并且**每个签名都有效。 如果是,它将返回一个表示签名验证成功的值。 ## `_hash` 参数到底是什么? 为什么不传递整条消息? -你可能已经发现,[EIP-1271 接口](https://eips.ethereum.org/EIPS/eip-1271)中的 `isValidSignature` 函数并不接收消息本身,而是使用 `_hash` 参数。 这意味着我们只需将消息的 32 个字节长的哈希值(一般通过 keccak256)传入 `isValidSignature`,而不是传入任意长度的完整消息。 +你可能已经注意到,[EIP-1271 接口](https://eips.ethereum.org/EIPS/eip-1271)中的 `isValidSignature` 函数并不接收信息本身,而是接收一个 `_hash` 参数。 这意味着我们不是将完整的任意长度信息传递给 `isValidSignature`,而是传递该信息的 32 字节哈希值(通常是 keccak256)。 -calldata 的每一个字节(即传入智能合约函数的函数参数数据)都会[花费 16 个单位燃料(若为空字节,则会花费 4 上单位燃料)](https://eips.ethereum.org/EIPS/eip-2028),因此在消息较长时,这可以节省很多的燃料费。 +calldata 的每个字节——即传递给智能合约函数的函数参数数据——[会花费 16 Gas(如果为零字节,则花费 4 Gas)](https://eips.ethereum.org/EIPS/eip-2028),因此如果信息很长,可以节省大量 Gas。 ### 先前的 EIP-1271 规范 -现有 EIP-1271 规范中的 `isValidSignature` 函数,其第一个参数为 `bytes` 类型(任意长度,而不是固定长度的 `bytes32`),并且参数名为 `message`。 这是 EIP-1271 标准的一个[旧版本](https://github.com/safe-global/safe-contracts/issues/391#issuecomment-1075427206)。 +在实际中存在一些 EIP-1271 规范,它们的 `isValidSignature` 函数第一个参数的类型为 `bytes`(任意长度,而不是固定长度的 `bytes32`),参数名为 `message`。 这是 EIP-1271 标准的[一个旧版本](https://github.com/safe-global/safe-contracts/issues/391#issuecomment-1075427206)。 ## 如何在我的合约中实现 EIP-1271? @@ -122,6 +118,6 @@ calldata 的每一个字节(即传入智能合约函数的函数参数数据 最终,都将由作为合约开发者的你来决定! -## 结论 +## 总结 [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271) 是一个允许智能合约验证签名的通用标准。 它为智能合约打开了一扇门,使其行为更像外部帐户(例如,为“使用以太坊登录”提供一种与智能合约协同工作的方式),而且它可通过多种方式实现(例如 Safe 有一个有用且有趣的实现方式值得考虑)。 From ecf8739617c2456b8eccba44c54c8d895e0803c3 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:04 -0800 Subject: [PATCH 137/581] update(i18n): public/content/translations/zh/developers/docs/consensus-mechanisms/pos/gasper/index.md --- .../consensus-mechanisms/pos/gasper/index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/gasper/index.md b/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/gasper/index.md index e4fcd08375a..164b8d990d0 100644 --- a/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/gasper/index.md +++ b/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/gasper/index.md @@ -8,9 +8,9 @@ Gasper 是友好的最终确定性工具 Gasper (Casper-FFG) 和 LMD-GHOST 分 **请注意**,Casper-FFG 的初始定义已稍作更新,以纳入 Gasper。 撰写此页面时,我们考量的是更新后的版本。 -## 前提条件 +## 前言 -为理解此材料,需要阅读[权益证明](/developers/docs/consensus-mechanisms/pos/)的介绍页面。 +要理解此材料,必须阅读关于[权益证明](/developers/docs/consensus-mechanisms/pos/)的介绍页面。 ## Gasper 的作用 {#role-of-gasper} @@ -23,20 +23,20 @@ Gasper 在权益证明区块链中具有最重要的地位——节点提供以 1. 区块必须获得总质押以太币 2/3 的投票,才能纳入规范链。 此条件可将区块升级至“合理”状态。 合理的区块不大可能回滚,但满足某些条件时也可以回滚。 2. 当一个合理区块上有另一个区块被合理化,那前者就被升级为“最终确定”状态。 确定一个区块就是承诺将该区块纳入规范链。 除非攻击者销毁数百万以太币(几十亿美元),否则该区块不会回滚。 -并非每个时隙都会发生这种区块升级。 相反,只有时段边界的区块才能是“合理”和“最终确定”状态。 这些区块一般被称为“检查点”。 升级涉及成对的检查点。 两个连续的检查点之间必须存在"绝对多数链接🔗"(即:总质押以太币中有 2/3 投票认为检查点 B 是检查点 A 的正确衍生物),才能将存在时间更长的检查点升级为“最终确定”,而较新的区块则升级为“合理”。 +并非每个时隙都会发生这种区块升级。 相反,只有时段边界的区块才能是“合理”和“最终确定”状态。 这些区块一般被称为“检查点”。 升级涉及成对的检查点。 两个连续的检查点之间必须存在“绝对多数链接”(即,三分之二的总质押以太币投票认为检查点 B 是检查点 A 的正确后代),才能将较旧的检查点升级为“已最终确定”,并将较新的区块升级为“已合理化”。 由于最终确定需要三分之二同意某个区块是规范的,因此除非能满足以下条件,否则攻击者不可能另外创建一条最终确定链: 1. 拥有或控制总质押以太币的 2/3。 2. 至少销毁总质押以太币的 1/3。 -之所以要满足第一个条件,是因为要最终确定一条链,需要质押以太币 2/3 的投票。 而第二个条件是因为,如果总质押的 2/3 对两个分叉表示支持,那么必然有 1/3 对两个分叉均进行了投票。 双重投票是会触发最大惩罚的罚没条件,总质押的 1/3 会被销毁。 截至 2022 年 5 月,此条件需要攻击者销毁价值约 100 亿美元的以太币。 Gasper 中用来合理化和最终确定区块的算法是[友好的最终确定性工具 Casper (Casper-FFG)](https://arxiv.org/pdf/1710.09437.pdf) 的微调版。 +之所以要满足第一个条件,是因为要最终确定一条链,需要质押以太币 2/3 的投票。 而第二个条件是因为,如果总质押的 2/3 对两个分叉表示支持,那么必然有 1/3 对两个分叉均进行了投票。 双重投票是会触发最大惩罚的罚没条件,总质押的 1/3 会被销毁。 截至 2022 年 5 月,此条件需要攻击者销毁价值约 100 亿美元的以太币。 Gasper 中用于合理化和最终确定区块的算法是[友好的最终确定性工具 Casper (Casper-FFG)](https://arxiv.org/pdf/1710.09437.pdf) 的微调版。 -### 激励和罚没 {#incentives-and-slashing} +### 激励和惩罚 {#incentives-and-slashing} 验证者将因诚实地提议和验证区块而获得奖励。 奖励将以发放以太币的形式提供,这些以太币将加入他们的质押额。 另一方面,缺席和调用时未能响应的验证者将会错过这些奖励,有时还会损失一小部分现有质押额。 然而,离线的处罚较小,在大多数情况下,仅仅是错失奖励的机会成本。 但是,有些验证者的操作很难无意为之,并且常为恶意行为,例如,为同一时隙提议多个区块、为同一时隙验证多个区块或者与以前的检查点投票背道而驰。 这些都是要接受更严厉惩罚的“可罚没”行为,罚没结果是验证者的部分质押额遭到销毁,以及验证者被移出验证者网络。 整个过程需要 36 天。 第一天,进行最高 1 个以太币的初次惩罚。 随后,被罚没验证者的以太币将在退出期一点点耗尽,但到第 18 天,他们会收到一个“相关性惩罚”,即当更多的验证者都在大致相同的时间受罚时,惩罚将更重。 最大的惩罚是全部质押。 这些奖励和惩罚为激励诚实的验证者和挫伤网络攻击而立。 -### 怠惰惩罚 {#inactivity-leak} +### 非活跃泄漏 {#inactivity-leak} 除了安全性,Gasper 还提供“合理的活性”。 条件是只要有三分之二的质押以太币遵守协议地诚实投票,不论是否发生其他任何活动(比如攻击、延迟问题或罚没),区块链都将被最终确定。 换言之,要阻止区块链被最终确定,必须以某种方式破坏总质押以太币的 1/3。 在 Gasper 中,有另一条防线防止活性失败,即“怠惰惩罚”。 如果链未能在四个时段内最终确定,便会激活此机制。 对于未能积极证明主链的验证者,其质押货币将逐渐耗尽,直到主链重新获得总质押 2/3 的投票,以确保活性失败只是暂时的。 @@ -46,7 +46,7 @@ Casper-FFG 的原始定义包含一个分叉选择算法,该算法规定:`fo LMD-GHOST 代表“最新消息驱动的最贪婪、最重的观测子树(Latest Message-Driven Greedy Heaviest Observed Sub-Tree)”。 该术语充满行话,用来定义一种算法:选择具有最大证明累积权重的分叉作为规范分叉(最贪婪、最重的子树);如果从验证者那里收到多条消息,则只考虑最新的那个(最新消息驱动)。 在将最重的区块添加到规范链之前,每位验证者都会使用这个规则来评估每个区块。 -## 延伸阅读 {#further-reading} +## 扩展阅读 {#further-reading} -- [Gasper:GHOST 和 Casper 的结合](https://arxiv.org/pdf/2003.03052.pdf) -- [友好的最终确定性小工具 Capser](https://arxiv.org/pdf/1710.09437.pdf) +- [Gasper:GHOST 与 Casper 的结合](https://arxiv.org/pdf/2003.03052.pdf) +- [友好的最终确定性工具 Casper](https://arxiv.org/pdf/1710.09437.pdf) From ee71ab4c32295b5de9efa49e2308d47aa8fd6a7c Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:07 -0800 Subject: [PATCH 138/581] update(i18n): public/content/translations/zh/developers/tutorials/nft-minter/index.md --- .../developers/tutorials/nft-minter/index.md | 387 +++++++++--------- 1 file changed, 192 insertions(+), 195 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/nft-minter/index.md b/public/content/translations/zh/developers/tutorials/nft-minter/index.md index 19b68ed3c1b..0d41b80277c 100644 --- a/public/content/translations/zh/developers/tutorials/nft-minter/index.md +++ b/public/content/translations/zh/developers/tutorials/nft-minter/index.md @@ -3,15 +3,14 @@ title: 非同质化代币铸币机教程 description: 在本教程中,你将构建一个非同质化代币铸币机,并学习如何通过使用 MetaMask 和 Web3 工具将智能合约连接到 React 前端来创建全栈去中心化应用程序。 author: "smudgil" tags: - - "solidity" - - "非同质化代币" - - "铸币机" - - "Alchemy" - - "智能合约" - - "前端" - - "用户界面" - - "钱包" - - "Pinata" + [ + "Solidity", + "非同质化代币", + "Alchemy", + "智能合同", + "前端", + "Pinata" + ] skill: intermediate lang: zh published: 2021-10-06 @@ -19,88 +18,88 @@ published: 2021-10-06 对于具有 Web2 背景的开发者来说,最大的挑战之一是弄清楚如何将智能合约连接到前端项目并与之交互。 -通过构建非同质化代币铸币机 — 一个可以用来输入数字资产链接、名称与描述的简单用户界面 — 您将学会如何: +通过构建非同质化代币铸币机 — 一个可以用来输入数字资产链接、名称与描述的简单用户界面 — 你将学会如何: -- 通过您的前端项目连接到 MetaMask +- 通过你的前端项目连接到 MetaMask - 在前端调用智能合约的方法 - 使用 MetaMask 签署交易 -在本教程中,我们将使用 [React](https://reactjs.org/) 作为前端框架。 由于本教程主要侧重于 Web3 开发,我们不会花太多时间来细讲 React 基础知识。 相反,我们将专注于为项目添加功能。 +在本教程中,我们将使用 [React](https://react.dev/) 作为我们的前端框架。 由于本教程主要侧重于 Web3 开发,我们不会花太多时间来细讲 React 基础知识。 相反,我们将专注于为项目添加功能。 -作为先决条件,您应该对 React 有入门水平的认识 — 了解组件、属性、useState/useEffect 和基本函数调用是如何工作的。 如果您以前从未听过这些术语,您可能想参阅这个 [React 入门教程](https://reactjs.org/tutorial/tutorial.html)。 对于视觉型学习者,我们强烈推荐 Net Ninja 推出的[现代 React 开发完整教程](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d)精彩视频系列。 +作为先决条件,你应该对 React 有入门水平的认识 — 了解组件、属性、useState/useEffect 和基本函数调用是如何工作的。 如果你以前从未听说过这些术语,不妨看看这篇 [React 入门教程](https://react.dev/learn/tutorial-tic-tac-toe)。 对于视觉型学习者,我们强烈推荐 Net Ninja 推出的这个优秀的[现代 React 完整教程](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d)视频系列。 -如果您还没有 Alchemy 帐户,您肯定需要一个来完成本教程以及在区块链上完成任何构建。 点击[此处](https://alchemy.com/)注册一个免费帐户。 +如果你还没有 Alchemy 帐户,你肯定需要一个来完成本教程以及在区块链上完成任何构建。 请[在此](https://alchemy.com/)注册一个免费帐户。 事不宜迟,让我们开始吧! -## 制作非同质化代币 101 {#making-nfts-101} +## NFT 制作入门 {#making-nfts-101} 在我们开始考虑任何代码之前,了解非同质化代币的工作原理非常重要。 它包括两个步骤: -### 在以太坊区块链上发布非同质化代币智能合约 {#publish-nft} +### 在以太坊区块链上发布 NFT 智能合约 {#publish-nft} 两种非同质化代币智能合约标准的最大区别在于,ERC-1155 是多代币标准且包含批量功能,而 ERC-721 是单代币标准,因此仅支持一次转账一个代币。 ### 调用铸币函数 {#minting-function} -通常,此铸币函数需要您传入两个变量作为参数,第一个是 `recipient`,它指定将要接收您的新铸造非同质化代币的地址,第二个是非同质化代币的 `tokenURI`,它是一个字符串,解析为描述非同质化代币元数据的 JSON 文档。 +通常,这个铸币函数需要你传入两个变量作为参数:第一个是 `recipient`,它指定将接收你新铸造的 NFT 的地址;第二个是 NFT 的 `tokenURI`,它是一个字符串,可解析为描述此 NFT 元数据的 JSON 文档。 -非同质化代币的元数据是其核心所在,使它拥有多种属性,例如名称、描述、图像(或不同的数字资产)及其他特性。 这是 [tokenURI 示例](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2),其中包含非同质化代币的元数据。 +非同质化代币的元数据是其核心所在,使它拥有多种属性,例如名称、描述、图像(或不同的数字资产)及其他特性。 这是一个 `tokenURI` 的[示例](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2),其中包含某个 NFT 的元数据。 在本教程中,我们将重点关注第 2 部分,使用我们的 React UI 调用现有的非同质化代币智能合约铸币函数。 -在本教程中,我们将要调用的 ERC-721 非同质化代币智能合约的[链接在此处](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE)。 如果您想了解我们如何创建该合约,强烈建议您参阅我们另一个教程[“如何创建非同质化代币”](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft)。 +本教程中我们将调用的 ERC-721 NFT 智能合约的[链接在此](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE)。 如果你想了解我们是如何制作它的,我们强烈建议你查看我们的另一篇教程:[“如何创建 NFT”](https://www.alchemy.com/docs/how-to-create-an-nft)。 太好了,现在我们已经了解了非同质化代币的工作原理,我们来克隆我们的启动文件! ## 克隆启动文件 {#clone-the-starter-files} -首先,浏览到 [nft-minter-tutorial GitHub 资源库](https://github.com/alchemyplatform/nft-minter-tutorial),获取此项目的启动文件。 将此资源库克隆到您的本地环境中。 +首先,访问 [nft-minter-tutorial GitHub 仓库](https://github.com/alchemyplatform/nft-minter-tutorial)以获取本项目的启动文件。 将此仓库克隆到你的本地环境中。 -打开这个克隆的 `nft-minter-tutorial` 资源库后,您会注意到它包含两个文件夹:`minter-starter-files` 和 `nft-minter`。 +打开这个克隆的 `nft-minter-tutorial` 仓库后,你会发现它包含两个文件夹:`minter-starter-files` 和 `nft-minter`。 -- `minter-starter-files` 包含此项目的启动文件(基本上是 React UI)。 在本教程中,**我们将在此目录中操作**,您将学习如何通过将其连接到您的以太坊钱包和非同质化代币智能合约来实现此用户界面。 -- `nft-minter` 包含已完成的完整教程,**如果您遇到困难**,可以作为**参考**。 +- `minter-starter-files` 包含此项目的启动文件(主要是 React UI)。 在本教程中,**我们将在该目录中工作**,你将学习如何通过将其连接到你的以太坊钱包和 NFT 智能合约来激活此 UI。 +- `nft-minter` 包含完整的教程,**如果你遇到困难**,可以作为**参考**。 -接下来,在代码编辑器中打开 `minter-starter-files` 副本,然后浏览到 `src` 文件夹。 +接下来,在你的代码编辑器中打开 `minter-starter-files` 的副本,然后导航到 `src` 文件夹。 -我们编写的所有代码都将保存在 `src` 文件夹下。 我们将编辑 `Minter.js` 组件并编写额外的 javascript 文件来为我们的项目提供 Web3 功能。 +我们将编写的所有代码都将存放在 `src` 文件夹下。 我们将编辑 `Minter.js` 组件并编写额外的 javascript 文件,为我们的项目提供 Web3 功能。 ## 第 2 步:查看我们的启动文件 {#step-2-check-out-our-starter-files} 在我们开始编码之前,必须检查起始文件中已经为我们提供了什么。 -### 让您的 react 项目运行起来 {#get-your-react-project-running} +### 运行你的 React 项目 {#get-your-react-project-running} 首先在浏览器中运行 React 项目。 React 的美妙之处在于,一旦我们的项目在浏览器中运行,保存的任何更改都会在浏览器中实时更新。 -要让项目运行,浏览到 `minter-starter-files` 文件夹的根目录,然后在终端运行 `npm install` 以安装项目的依赖项: +要运行项目,请导航到 `minter-starter-files` 文件夹的根目录,然后在终端中运行 `npm install` 来安装项目的依赖项: ```bash cd minter-starter-files npm install ``` -依赖项安装完成后,在终端运行 `npm start`: +安装完成后,在终端中运行 `npm start`: ```bash npm start ``` -运行后,http://localhost:3000/ 应该在浏览器中打开,您可以在其中看到项目前端。 其中应该包括 3 个字段:一个用于输入非同质化代币资产的链接、一个用于输入非同质化代币的名称,一个提供描述。 +运行后,http://localhost:3000/ 应该在浏览器中打开,你可以在其中看到项目前端。 其中应该包括 3 个字段:一个用于输入非同质化代币资产的链接、一个用于输入非同质化代币的名称,一个提供描述。 -如果您尝试点击“Connect Wallet”或“Mint NFT”按钮,您会发现它们不起作用 — 那是因为我们仍然需要对它们的功能进行编程! :\) +如果你尝试点击“Connect Wallet”或“Mint NFT”按钮,你会发现它们不起作用 — 那是因为我们仍然需要对它们的功能进行编程! :\) -### Minter.js 组件 {#minter-js} +### `Minter.js` 组件 {#minter-js} -**注:**确保您位于 `minter-starter-files` 文件夹而不是 `nft-minter` 文件夹! +\*\*注意:\*\*请确保你位于 `minter-starter-files` 文件夹,而不是 `nft-minter` 文件夹! -我们在编辑器中返回 `src` 文件夹并打开 `Minter.js` 文件。 理解该文件中的所有内容非常重要,因为它是我们将要处理的主要 React 组件。 +让我们在编辑器中返回 `src` 文件夹,并打开 `Minter.js` 文件。 理解该文件中的所有内容非常重要,因为它是我们将要处理的主要 React 组件。 在该文件的顶部,有我们将在特定事件后更新的状态变量。 ```javascript -//State variables +//状态变量 const [walletAddress, setWallet] = useState("") const [status, setStatus] = useState("") const [name, setName] = useState("") @@ -108,82 +107,82 @@ const [description, setDescription] = useState("") const [url, setURL] = useState("") ``` -从未听过 React 状态变量或状态挂钩? 参阅[这些](https://reactjs.org/docs/hooks-state.html)文档。 +从未听过 React 状态变量或状态挂钩? 查看[这些](https://legacy.reactjs.org/docs/hooks-state.html)文档。 以下是每个变量的含义: -- `walletAddress` — 存储用户钱包地址的字符串 -- `status` — 包含要在用户界面底部显示的消息的字符串 -- `name` — 存储非同质化代币名称的字符串 -- `description` — 存储非同质化代币描述的字符串 -- `url` — 字符串,表示指向非同质化代币数字资产的链接 +- `walletAddress` - 存储用户钱包地址的字符串 +- `status` - 包含要显示在 UI 底部的消息的字符串 +- `name` - 存储 NFT 名称的字符串 +- `description` - 存储 NFT 描述的字符串 +- `url` - 指向 NFT 数字资产链接的字符串 -在状态变量之后,您会看到三个未实现的函数:`useEffect`、`connectWalletPressed` 和 `onMintPressed`。 您会注意到所有这些函数都是 `async` 函数,这是因为我们将在其中进行异步 API 调用! 它们的名称与功能同名: +在状态变量之后,你会看到三个未实现的函数:`useEffect`、`connectWalletPressed` 和 `onMintPressed`。 你会注意到所有这些函数都是 `async` 的,这是因为我们将在其中进行异步 API 调用! 它们的名称与功能同名: ```javascript useEffect(async () => { - //TODO: implement + //待办:实现 }, []) const connectWalletPressed = async () => { - //TODO: implement + //待办:实现 } const onMintPressed = async () => { - //TODO: implement + //待办:实现 } ``` -- [`useEffect`](https://reactjs.org/docs/hooks-effect.html) — 这是一个 React 挂钩,在渲染组件后调用。 因为向它传入了一个空的数组 `[]` 属性(见第 3 行),只会在组件的*第一次*渲染时调用它。 在这里,我们将调用钱包监听器和另一个钱包函数,来更新我们的用户界面以指示钱包是否已经连接。 -- `connectWalletPressed` - 将调用此函数,将用户的 MetaMask 钱包连接到我们的去中心化应用程序。 -- `onMintPressed` — 将调用此函数来铸造用户的非同质化代币。 +- [`useEffect`](https://legacy.reactjs.org/docs/hooks-effect.html) - 这是一个 React 钩子,在组件渲染后调用。 因为它传入了一个空数组 `[]` 属性(见第 3 行),所以它只会在组件_首次_渲染时被调用。 在这里,我们将调用钱包监听器和另一个钱包函数,来更新我们的用户界面以指示钱包是否已经连接。 +- `connectWalletPressed` - 此函数将被调用,以将用户的 MetaMask 钱包连接到我们的去中心化应用程序。 +- `onMintPressed` - 此函数将被调用,以铸币用户的 NFT。 -在接近该文件末尾处,我们获得我们组件的用户界面。 如果您仔细查看此代码,您会注意到,当相应文本字段的输入发生变化时,我们更新了 `url`、`name` 和 `description` 状态变量。 +在接近该文件末尾处,我们获得我们组件的用户界面。 如果你仔细查看此代码,你会注意到当相应文本字段中的输入发生变化时,我们会更新 `url`、`name` 和 `description` 状态变量。 -您还将看到,在分别单击 ID 为 `mintButton` 和 `walletButton` 的按钮时,会调用 `connectWalletPressed` 和 `onMintPressed`。 +你还会看到,当分别点击 ID 为 `mintButton` 和 `walletButton` 的按钮时,会调用 `connectWalletPressed` 和 `onMintPressed`。 ```javascript -//the UI of our component +//我们组件的 UI return (


                                -

                                🧙‍♂️ Alchemy NFT Minter

                                +

                                🧙‍♂️ Alchemy NFT 铸币器

                                - Simply add your asset's link, name, and description, then press "Mint." + 只需添加你的资产链接、名称和描述,然后按“铸币”。

                                -

                                🖼 Link to asset:

                                +

                                🖼 资产链接:

                                setURL(event.target.value)} /> -

                                🤔 Name:

                                +

                                🤔 名称:

                                setName(event.target.value)} /> -

                                ✍️ Description:

                                +

                                ✍️ 描述:

                                setDescription(event.target.value)} />

                                {status}

                                @@ -192,51 +191,51 @@ return ( 最后,我们来看看这个铸币机组件是在哪里添加的。 -如果您打开 `App.js` 文件,将会看到我们的铸币机组件是在第 7 行添加的。此文件是 React 中的主要组件,作为所有其他组件的容器。 +如果你转到 `App.js` 文件(它是 React 中的主组件,充当所有其他组件的容器),你会看到我们的 Minter 组件在第 7 行被注入。 -**在本教程中,我们将只编辑 `Minter.js file` 并在我们的 `src` 文件夹中添加文件。** +**在本教程中,我们将只编辑 `Minter.js file` 文件,并在我们的 `src` 文件夹中添加文件。** 我们已经了解了我们正在进行的操作,现在我们来设置我们的以太坊钱包! -## 设置您的以太坊钱包 {#set-up-your-ethereum-wallet} +## 设置你的以太坊钱包 {#set-up-your-ethereum-wallet} 为了让用户能够与你的智能合约交互,他们需要将其以太坊钱包连接到你的去中心化应用程序。 ### 下载 MetaMask {#download-metamask} -在本教程中,我们将使用 MetaMask,它是浏览器中的虚拟钱包,用来管理您的以太坊账户地址。 如果您想了解更多关于以太坊交易如何运作的信息,请参阅[此页面](/developers/docs/transactions/)。 +在本教程中,我们将使用 MetaMask,它是浏览器中的虚拟钱包,用来管理你的以太坊帐户地址。 如果你想进一步了解以太坊上的交易如何运作,请查看[此页面](/developers/docs/transactions/)。 -您可以点击[此处](https://metamask.io/download)免费下载并创建一个 MetaMask 账户。 在创建账户时,或者如果您已经有一个账户,确保切换到右上角的“Ropsten 测试网络”\(这样我们就不会交易真正的钱币\)。 +你可以[在此处](https://metamask.io/download)免费下载和创建 MetaMask 帐户。 在创建帐户时,或者如果你已经有一个帐户,确保切换到右上角的“Ropsten 测试网络”\(这样我们就不会交易真正的钱币\)。 -### 通过水龙头中添加以太币 {#add-ether-from-faucet} +### 从水龙头获取以太币 {#add-ether-from-faucet} -为了铸造我们的非同质化代币(或在以太坊区块链上签署任何交易),我们需要一些虚拟以太币。 要获取以太币,您可以转到 [Ropsten 水龙头](https://faucet.ropsten.be/)并输入您的 Ropsten 帐户地址,然后点击“Send Ropsten Eth”。 您应该会很快在您的 MetaMask 帐户中看到以太币! +为了铸造我们的非同质化代币(或在以太坊区块链上签署任何交易),我们需要一些虚拟以太币。 要获取 Eth,你可以前往 [Ropsten 水龙头](https://faucet.ropsten.be/) 并输入你的 Ropsten 帐户地址,然后点击“Send Ropsten Eth”。 你应该会很快在你的 MetaMask 帐户中看到以太币! -### 检查您的余额 {#check-your-balance} +### 检查你的余额 {#check-your-balance} -为了核查我们账户中有余额,我们使用 [Alchemy composer 工具](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D)发出 [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) 请求。 这将返回我们钱包中的以太币数量。 输入您的 MetaMask 帐户地址并点击“Send Request”后,您应该会看到这样的响应: +为了仔细检查我们的余额,让我们使用 [Alchemy 的 composer 工具](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D) 发出一个 [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) 请求。 这将返回我们钱包中的以太币数量。 输入你的 MetaMask 帐户地址并点击“Send Request”后,你应该会看到这样的响应: ```text {"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"} ``` -**注意:**结果以 wei 为单位,而非 ETH。 Wei 是以太币的最小计量单位。 从 wei 到 eth 的转换是:1 eth = 10¹⁸ wei。 因此,如果我们将 0xde0b6b3a7640000 转换为十进制,我们会得到 1\*10¹⁸,它等于 1 eth。 +\*\*注意:\*\*此结果以 wei 为单位,而不是 eth。 Wei 是以太币的最小计量单位。 从 wei 到 eth 的转换是:1 eth = 10¹⁸ wei。 因此,如果我们将 0xde0b6b3a7640000 转换为十进制,我们会得到 1\*10¹⁸,它等于 1 eth。 哦! 我们的虚拟以太币都在那里了! -## 将 MetaMask 连接到您的用户界面 {#connect-metamask-to-your-UI} +## 将 MetaMask 连接到你的 UI {#connect-metamask-to-your-UI} 既然我们的 MetaMask 钱包已经设置好了,我们将我们的去中心化应用程序与之连接! -因为我们建议采用 [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) 规范,所以我们要创建一个单独的文件,其中包含用来管理我们的去中心化应用程序的逻辑、数据和规则的函数,然后将这些函数传递给我们的前端(Minter.js 组件)。 +因为我们想要遵循 [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) 范式,所以我们将创建一个单独的文件,其中包含用于管理我们去中心化应用程序的逻辑、数据和规则的函数,然后将这些函数传递到我们的前端(我们的 Minter.js 组件)。 ### `connectWallet` 函数 {#connect-wallet-function} -为此,我们在 `src` 目录中创建一个名为 `utils` 的新文件夹,并在其中添加一个名为 `interact.js` 的文件,其中将包含我们所有的钱包和智能合约交互函数。 +为此,让我们在 `src` 目录中创建一个名为 `utils` 的新文件夹,并在其中添加一个名为 `interact.js` 的文件,该文件将包含我们所有的钱包和智能合约交互函数。 -在我们的 `interact.js` 文件中,我们将编写一个 `connectWallet` 函数,然后我们将在 `Minter.js` 组件中导入并调用该函数。 +在我们的 `interact.js` 文件中,我们将编写一个 `connectWallet` 函数,然后我们将在 `Minter.js` 组件中导入并调用它。 -在您的 `interact.js` 文件中,添加以下内容 +在你的 `interact.js` 文件中,添加以下内容 ```javascript export const connectWallet = async () => { @@ -246,7 +245,7 @@ export const connectWallet = async () => { method: "eth_requestAccounts", }) const obj = { - status: "👆🏽 Write a message in the text-field above.", + status: "👆🏽 请在上面的文本字段中写入一条消息。", address: addressArray[0], } return obj @@ -264,8 +263,7 @@ export const connectWallet = async () => {

                                {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your - browser. + 你必须在浏览器中安装 MetaMask(一个虚拟的以太坊钱包)。

                                @@ -277,26 +275,26 @@ export const connectWallet = async () => { 我们详细讲解一下这段代码的作用: -首先,我们的函数会检查您的浏览器是否启用了 `window.ethereum`。 +首先,我们的函数会检查 `window.ethereum` 是否在你的浏览器中启用。 -`window.ethereum` 是一个由 MetaMask 和其他钱包提供商注入的全局应用程序接口,它允许网站请求用户的以太坊账户。 如果获得批准,它可以从用户连接的区块链中读取数据,并建议用户签署消息和交易。 参阅 [MetaMask 文档](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents)了解更多信息! +`window.ethereum` 是由 MetaMask 和其他钱包提供商注入的全局 API,允许网站请求用户的以太坊帐户。 如果获得批准,它可以从用户连接的区块链中读取数据,并建议用户签署消息和交易。 有关详细信息,请查看 [MetaMask 文档](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents)! -如果 `window.ethereum` _ 不存在_,则表示未安装 MetaMask。 这会导致返回一个 JSON 对象,其中返回的 `address` 是一个空字符串,而 `status` JSX 对象指示用户必须安装 MetaMask。 +如果 `window.ethereum` _不_存在,则意味着 MetaMask 未安装。 这将导致返回一个 JSON 对象,其中返回的 `address` 是一个空字符串,而 `status` JSX 对象则会提示用户必须安装 MetaMask。 -**我们编写的大多数函数都将返回 JSON 对象,我们可以使用这些对象更新我们的状态变量和用户界面。** +**我们编写的大多数函数都将返回 JSON 对象,我们可以用它们来更新我们的状态变量和 UI。** -现在如果 `window.ethereum` _存在_,那么事情就会变得有趣。 +现在,如果 `window.ethereum` _是_存在的,事情就变得有趣了。 -使用 try/catch 循环,我们将尝试通过调用 `[window.ethereum.request({ method: "eth_requestAccounts" });](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts)` 连接到 MetaMask。 调用此函数将在浏览器中打开 MetaMask,提示用户将他们的钱包连接到你的去中心化应用程序。 +使用 try/catch 循环,我们将通过调用 [`window.ethereum.request({ method: \"eth_requestAccounts\" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts) 来尝试连接到 MetaMask。 调用此函数将在浏览器中打开 MetaMask,提示用户将他们的钱包连接到你的去中心化应用程序。 -- 如果用户选择连接,`method: "eth_requestAccounts"` 将返回一个数组,其中包含连接到去中心化应用程序的用户的所有帐户地址。 总之,我们的 `connectWallet` 函数将返回一个 JSON 对象,其中包含此数组中的*第一个 * `address` \(见第 9 行\),并返回一条 `status` 信息,提示用户向智能合约写入信息。 -- 如果用户拒绝连接,则 JSON 对象将包含返回的 `address` 的空字符串和反映用户拒绝连接的 `status` 信息。 +- 如果用户选择连接,`method: \"eth_requestAccounts\"` 将返回一个数组,其中包含连接到该去中心化应用程序的所有用户帐户地址。 总而言之,我们的 `connectWallet` 函数将返回一个 JSON 对象,其中包含此数组中的_第一个_ `address`(见第 9 行)和一条提示用户向智能合约写入消息的 `status` 消息。 +- 如果用户拒绝连接,则 JSON 对象将包含一个空字符串作为返回的 `address`,以及一条反映用户拒绝连接的 `status` 消息。 -### 将 connectWallet 函数添加到您的 Minter.js 用户界面组件 {#add-connect-wallet} +### 将 `connectWallet` 函数添加到你的 Minter.js UI 组件 {#add-connect-wallet} -我们已经编写了 `connectWallet` 函数,现在我们将它连接到我们的 `Minter.js.` 组件。 +既然我们已经编写了 `connectWallet` 函数,现在就把它连接到我们的 `Minter.js` 组件。 -首先,我们必须通过将 `import { connectWallet } from "./utils/interact.js";` 添加到 `Minter.js` 文件顶部,将我们的函数导入 `Minter.js` 文件。 `Minter.js` 的前 11 行现在应该如下所示: +首先,我们必须通过在 `Minter.js` 文件顶部添加 `import { connectWallet } from \"./utils/interact.js\";`,将我们的函数导入到 `Minter.js` 文件中。 现在,`Minter.js` 的前 11 行应该如下所示: ```javascript import { useEffect, useState } from "react"; @@ -304,7 +302,7 @@ import { connectWallet } from "./utils/interact.js"; const Minter = (props) => { - //State variables + //状态变量 const [walletAddress, setWallet] = useState(""); const [status, setStatus] = useState(""); const [name, setName] = useState(""); @@ -312,7 +310,7 @@ const Minter = (props) => { const [url, setURL] = useState(""); ``` -然后,在我们的 `connectWalletPressed` 函数中,我们将调用导入的 `connectWallet` 函数,如下所示: +然后,在 `connectWalletPressed` 函数中,我们将调用导入的 `connectWallet` 函数,如下所示: ```javascript const connectWalletPressed = async () => { @@ -322,25 +320,25 @@ const connectWalletPressed = async () => { } ``` -请注意我们的大部分功能是如何从 `interact.js` 文件中的 `Minter.js` 组件中抽取出来的? 这就是我们遵守 M-V-C 规范的原因! +请注意我们的大部分功能是如何从 `interact.js` 文件中抽象出来,并与 `Minter.js` 组件分离的? 这就是我们遵守 M-V-C 规范的原因! -在 `connectWalletPressed` 中,我们只需对导入的 `connectWallet` 函数进行 await 调用,并使用其响应,通过变量的状态挂钩更新我们的 `status` 和 `walletAddress ` 变量。 +在 `connectWalletPressed` 中,我们只需对导入的 `connectWallet` 函数进行 `await` 调用,并使用其响应通过它们的状态钩子来更新 `status` 和 `walletAddress` 变量。 -现在,我们保存 `Minter.js` 和 `interact.js` 这两个文件并测试我们目前为止获得的用户界面。 +现在,让我们保存 `Minter.js` 和 `interact.js` 这两个文件,并测试一下我们目前的 UI。 在 localhost:3000 地址打开浏览器,然后按页面右上角的“连接钱包”按钮。 如果你安装了 MetaMask,系统会提示你将钱包连接到去中心化应用程序。 接受邀请并连接。 -您应该会看到钱包按钮现在显示您的地址已连接。 +你应该会看到钱包按钮现在显示你的地址已连接。 -接下来,尝试刷新页面......有点儿奇怪。 我们的钱包按钮提示我们连接 MetaMask,尽管它已经连接...... +接下来,尝试刷新页面…… 这很奇怪。 我们的钱包按钮提示我们连接 MetaMask,尽管它已经连接...... -不过不用担心! 我们可以通过实现一个名为 `getCurrentWalletConnected` 的函数轻松解决这个问题,该函数将检查地址是否已连接到我们的去中心化应用程序并相应地更新我们的用户界面! +不过不用担心! 我们可以通过实现一个名为 `getCurrentWalletConnected` 的函数来轻松解决这个问题,该函数将检查一个地址是否已连接到我们的去中心化应用程序,并相应地更新我们的 UI! -### getCurrentWalletConnected 函数 {#get-current-wallet} +### `getCurrentWalletConnected` 函数 {#get-current-wallet} -在您的 `interact.js` 文件中,添加以下 `getCurrentWalletConnected` 函数: +在你的 `interact.js` 文件中,添加以下 `getCurrentWalletConnected` 函数: ```javascript export const getCurrentWalletConnected = async () => { @@ -352,12 +350,12 @@ export const getCurrentWalletConnected = async () => { if (addressArray.length > 0) { return { address: addressArray[0], - status: "👆🏽 Write a message in the text-field above.", + status: "👆🏽 请在上面的文本字段中写入一条消息。", } } else { return { address: "", - status: "🦊 Connect to MetaMask using the top right button.", + status: "🦊 使用右上角的按钮连接到 MetaMask。", } } } catch (err) { @@ -374,8 +372,7 @@ export const getCurrentWalletConnected = async () => {

                                {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your - browser. + 你必须在浏览器中安装 MetaMask(一个虚拟的以太坊钱包)。

                                @@ -385,9 +382,9 @@ export const getCurrentWalletConnected = async () => { } ``` -这段代码*非常*类似于我们之前写的 `connectWallet` 函数。 +此代码与我们刚才编写的 `connectWallet` 函数_非常_相似。 -主要区别在于,这里我们调用了 `eth_accounts` 方法,它只是返回一个数组,其中包含当前连接到我们的去中心化应用程序的 MetaMask 地址,而不是调用 `eth_requestAccounts` 方法来打开 MetaMask 以供用户连接他们的钱包。 +主要区别在于,我们这里调用的方法是 `eth_accounts`,它只是返回一个包含当前连接到我们去中心化应用程序的 MetaMask 地址的数组,而不是调用会打开 MetaMask 供用户连接钱包的 `eth_requestAccounts` 方法。 要查看这个函数的实际作用,我们在 `Minter.js` 组件的 `useEffect` 函数中调用它。 @@ -397,7 +394,7 @@ export const getCurrentWalletConnected = async () => { import { useEffect, useState } from "react" import { connectWallet, - getCurrentWalletConnected, //import here + getCurrentWalletConnected, //在此导入 } from "./utils/interact.js" ``` @@ -413,13 +410,13 @@ useEffect(async () => { 请注意,我们使用调用 `getCurrentWalletConnected` 的响应来更新我们的 `walletAddress` 和 `status` 状态变量。 -添加这段代码后,请尝试刷新我们的浏览器窗口。 按钮应显示您已连接,并显示已连接钱包地址的预览 — 即使在您刷新后也是如此! +添加这段代码后,请尝试刷新我们的浏览器窗口。 按钮应显示你已连接,并显示已连接钱包地址的预览 — 即使在你刷新后也是如此! ### 实现 addWalletListener {#implement-add-wallet-listener} 我们的去中心化应用程序钱包设置的最后一步是实现钱包监听器,以便我们的用户界面在钱包状态发生变化时更新,例如当用户断开或切换帐户时。 -在您的 `Minter.js` 文件中,添加如下所示的函数 `addWalletListener`: +在你的 `Minter.js` 文件中,添加如下所示的函数 `addWalletListener`: ```javascript function addWalletListener() { @@ -427,10 +424,10 @@ function addWalletListener() { window.ethereum.on("accountsChanged", (accounts) => { if (accounts.length > 0) { setWallet(accounts[0]) - setStatus("👆🏽 Write a message in the text-field above.") + setStatus("👆🏽 请在上面的文本字段中写入一条消息。") } else { setWallet("") - setStatus("🦊 Connect to MetaMask using the top right button.") + setStatus("🦊 使用右上角的按钮连接到 MetaMask。") } }) } else { @@ -438,7 +435,7 @@ function addWalletListener() {

                                {" "} 🦊 - You must install MetaMask, a virtual Ethereum wallet, in your browser. + 你必须在浏览器中安装 MetaMask(一个虚拟的以太坊钱包)。

                                ) @@ -448,9 +445,9 @@ function addWalletListener() { 我们快速分板一下这段代码的运行情况: -- 首先,我们的函数检查是否启用了 `window.ethereum` \(即 MetaMask 已安装\)。 +- 首先,我们的函数会检查 `window.ethereum` 是否已启用(即 MetaMask 是否已安装)。 - 如果未启用,我们只需将 `status` 状态变量设置为提示用户安装 MetaMask 的 JSX 字符串。 - - 如果启用,我们会在第 3 行设置监听器 `window.ethereum.on("accountsChanged")` 监听 MetaMask 钱包中的状态变化,变化包括用户将其他帐户连接到去中心化应用程序、切换帐户或断开帐户。 如果至少连接了一个账户,`walletAddress` 状态变量将更新为监听器返回的 `accounts` 数组中的第一个账户。 否则,`walletAddress` 设置为空字符串。 + - 如果启用,我们会在第 3 行设置监听器 `window.ethereum.on("accountsChanged")` 监听 MetaMask 钱包中的状态变化,变化包括用户将其他帐户连接到去中心化应用程序、切换帐户或断开帐户。 如果至少连接了一个帐户,`walletAddress` 状态变量将更新为监听器返回的 `accounts` 数组中的第一个帐户。 否则,`walletAddress` 将设置为空字符串。 最后,我们必须在 `useEffect` 函数中调用它: @@ -466,7 +463,7 @@ useEffect(async () => { 瞧! 我们已经完成了所有钱包功能的编程! 我们的钱包已经设置好了,现在让我们弄清楚如何铸造非同质化代币! -## 非同质化代币元数据 101 {#nft-metadata-101} +## NFT 元数据入门 {#nft-metadata-101} 所以,请记住我们刚刚在本教程的第 0 步讨论过的非同质化代币元数据,它是非同质化代币的核心,让非同质化代币具有属性,例如数字资产、名称、描述及其他特性。 @@ -478,25 +475,25 @@ useEffect(async () => { - 我们可以将其存储在中心化服务器上,例如 AWS 或 Firebase。 但这会违背我们的去中心化核心理念。 - 我们可以使用去中心化协议和对等网络星际文件系统,在分布式文件系统中存储和共享数据。 由于该协议是去中心化且免费的,因此它是我们的最佳选择! -要将我们的元数据存储在星际文件系统上,我们将使用 [Pinata](https://pinata.cloud/),这是一种方便的星际文件系统应用程序接口和工具包。 下一步,我们将准确解释如何操作! +要将我们的元数据存储在 IPFS 上,我们将使用 [Pinata](https://pinata.cloud/),这是一种方便的 IPFS API 和工具包。 下一步,我们将准确解释如何操作! -## 使用 Pintata 将元数据固定到星际文件系统 {#use-pinata-to-pin-your-metadata-to-IPFS} +## 使用 Pinata 将你的元数据固定到 IPFS {#use-pinata-to-pin-your-metadata-to-IPFS} -如果您没有 [Pinata](https://pinata.cloud/) 帐户,请点击[此处](https://app.pinata.cloud/auth/signup)注册一个免费帐户完成您的电子邮件和帐户验证步骤。 +如果你没有 [Pinata](https://pinata.cloud/) 帐户,请[在此处](https://app.pinata.cloud/auth/signup)注册一个免费帐户,并完成验证你的电子邮件和帐户的步骤。 -### 创建您的 Pinata 应用程序接口密钥 {#create-pinata-api-key} +### 创建你的 Pinata API 密钥 {#create-pinata-api-key} -导航到 [https://pinata.cloud/keys](https://pinata.cloud/keys) 页面,然后选择顶部的“新建密钥”按钮并将“管理”小组件设置为启用,然后给您的密钥命名。 +导航到 [https://pinata.cloud/keys](https://pinata.cloud/keys) 页面,然后选择顶部的“New Key”按钮并将“管理”小组件设置为启用,然后给你的密钥命名。 -然后,将显示一个包含您的应用程序接口信息的弹出窗口。 确保把它放在安全的地方。 +然后,将显示一个包含你的应用程序接口信息的弹出窗口。 确保把它放在安全的地方。 我们的密钥已经设置好了,我们现在将它添加到项目中以便可以使用它。 ### 创建 .env 文件 {#create-a-env} -我们可以将 Pinata 密钥和私钥安全地存储在环境文件中。 我们在您的项目目录中安装 [dotenv 软件包](https://www.npmjs.com/package/dotenv)。 +我们可以将 Pinata 密钥和私钥安全地存储在环境文件中。 让我们在你的项目目录中安装 [dotenv 包](https://www.npmjs.com/package/dotenv)。 -在您的终端\(与运行本地主机的终端分开\)中打开一个新选项卡,并确保您位于 `minter-starter-files` 文件夹中,然后在终端运行以下命令: +在你的终端中打开一个新标签页(与运行本地主机的标签页分开),并确保你位于 `minter-starter-files` 文件夹中,然后在终端运行以下命令: ```text npm install dotenv --save @@ -508,22 +505,22 @@ npm install dotenv --save vim.env ``` -这将在 vim \(一种文本编辑器)中弹出并打开您的 `.env` 文件。 要保存它,依次在键盘上按“esc” + “:” + “q”。 +这将在 vim(一种文本编辑器)中弹出并打开你的 `.env` 文件。 要保存它,依次在键盘上按“esc” + “:” + “q”。 -接下来,在 VSCode 中,导航到您的 `.env` 文件并向其中添加您的 Pinata 应用程序接口密钥和应用程序接口私钥,如下所示: +接下来,在 VSCode 中,导航到你的 `.env` 文件并向其中添加你的 Pinata API 密钥和 API 私钥,如下所示: ```text REACT_APP_PINATA_KEY = REACT_APP_PINATA_SECRET = ``` -保存该文件,然后您就可以开始编写函数将您的 JSON 元数据上传到星际文件系统! +保存该文件,然后你就可以开始编写函数将你的 JSON 元数据上传到星际文件系统! ### 实现 pinJSONToIPFS {#pin-json-to-ipfs} -对我们来说幸运的是,Pinata 提供了一个[专门用于将 JSON 数据上传到星际文件系统的应用程序接口](https://docs.pinata.cloud/api-reference/endpoint/ipfs/pin-json-to-ipfs#pin-json)和一个方便的使用 axios 示例的 JavaScript,我们做一些轻微修改后就可以使用它。 +幸运的是,Pinata 有一个[专门用于将 JSON 数据上传到 IPFS 的 API](https://docs.pinata.cloud/api-reference/endpoint/ipfs/pin-json-to-ipfs#pin-json),以及一个方便的、带有 axios 示例的 JavaScript,我们可以稍作修改后加以使用。 -在您的 `utils` 文件夹中,我们创建另一个名为 `pinata.js` 的文件,然后从 .env 文件中导入我们的 Pinata 私钥和密钥,如下所示: +在你的 `utils` 文件夹中,我们创建另一个名为 `pinata.js` 的文件,然后从 .env 文件中导入我们的 Pinata 私钥和密钥,如下所示: ```javascript require("dotenv").config() @@ -531,7 +528,7 @@ const key = process.env.REACT_APP_PINATA_KEY const secret = process.env.REACT_APP_PINATA_SECRET ``` -接下来,将下面的代码粘贴到您的 `pinata.js` 文件中。 别担心,我们将详细讲解每一行的含义! +接下来,将下面的代码粘贴到你的 `pinata.js` 文件中。 别担心,我们将详细讲解每一行的含义! ```javascript require("dotenv").config() @@ -542,7 +539,7 @@ const axios = require("axios") export const pinJSONToIPFS = async (JSONBody) => { const url = `https://api.pinata.cloud/pinning/pinJSONToIPFS` - //making axios POST request to Pinata ⬇️ + //向 Pinata 发出 axios POST 请求 ⬇️ return axios .post(url, JSONBody, { headers: { @@ -571,40 +568,40 @@ export const pinJSONToIPFS = async (JSONBody) => { 首先,它导入 [axios](https://www.npmjs.com/package/axios),axios 是一个基于 Promise 的超文本传输协议客户端,可用于浏览器和 node.js,我们将使用它创建一个发送到 Pinata 的请求。 -然后,我们使用异步函数 `pinJSONToIPFS`,它以 `JSONBody` 作为输入参数,并在其报头中使用 Pinata 应用程序接口密钥和私钥,这些都是为了向其 `pinJSONToIPFS` 应用程序接口发出 POST 请求。 +然后,我们使用异步函数 `pinJSONToIPFS`,它以 `JSONBody` 作为输入参数,并在其报头中使用 Pinata api 密钥和私钥,这些都是为了向其 `pinJSONToIPFS` API 发出 POST 请求。 - 如果此 POST 请求成功,我们的函数返回一个 `success` 布尔值为 true 的 JSON 对象以及固定我们元数据的 `pinataUrl`。 我们将使用返回的 `pinataUrl` 作为我们智能合约的 mint 函数的 `tokenURI` 输入。 - 如果此 post 请求失败,我们的函数返回一个 `success` 布尔值为 false 的 JSON 对象和一个指示我们错误的 `message` 字符串。 -与 `connectWallet` 函数返回类型一样,会返回 JSON 对象,因此我们可以使用它们的参数更新状态变量和用户界面。 +与 `connectWallet` 函数返回类型一样,会返回 JSON 对象,因此我们可以使用它们的参数更新状态变量和 UI。 -## 加载您的智能合约 {#load-your-smart-contract} +## 加载你的智能合约 {#load-your-smart-contract} -我们有办法通过 `pinJSONToIPFS` 函数将非同质化代币元数据上传到星际文件系统,现在我们需要一种办法来加载我们智能合约的实例,以便我们可以调用其 `mintNFT ` 函数。 +我们有办法通过 `pinJSONToIPFS` 函数将 NFT 元数据上传到 IPFS,现在我们需要一种办法来加载我们智能合约的实例,以便我们可以调用其 `mintNFT` 函数。 -正如我们之前提到的,在本教程中,我们将使用[这个现有的非同质化代币智能合约](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE);但是,如果您想了解我们如何创建或者想自己创建一个,我们强烈建议您参阅我们的另一个教程[“如何创建非同质化代币。”](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft)。 +正如我们之前提到的,在本教程中,我们将使用[这个现有的 NFT 智能合约](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE);但是,如果你想了解我们如何创建或者想自己创建一个,我们强烈建议你参阅我们的另一个教程[“如何创建 NFT”](https://www.alchemy.com/docs/how-to-create-an-nft)。 -### 智能合约应用程序二进制接口 {#contract-abi} +### 合约 ABI {#contract-abi} -如果您仔细研究我们的文件,您会注意到我们的 `src` 目录中有一个 `contract-abi.json` 文件。 在指定合约将要调用的函数以及确保函数以您期望的格式返回数据时,应用程序二进制接口必不可少。 +如果你仔细研究我们的文件,你会注意到我们的 `src` 目录中有一个 `contract-abi.json` 文件。 在指定合约将要调用的函数以及确保函数以你期望的格式返回数据时,应用程序二进制接口必不可少。 我们还需要一个 Alchemy 应用程序接口密钥和 Alchemy Web3 应用程序接口,用来连接到以太坊区块链并加载我们的智能合约。 -### 创建您的 Alchemy API 密钥 {#create-alchemy-api} +### 创建你的 Alchemy API 密钥 {#create-alchemy-api} -如果您还没有 Alchemy 帐户,请[在此处免费注册。](https://alchemy.com/?a=eth-org-nft-minter) +如果你还没有 Alchemy 帐户,[请在此处免费注册。](https://alchemy.com/?a=eth-org-nft-minter) -创建 Alchemy 帐户后,您可以通过创建应用程序来生成应用程序接口密钥。 我们可以用它向 Ropsten 测试网发出请求。 +创建 Alchemy 帐户后,你可以通过创建应用程序来生成应用程序接口密钥。 我们可以用它向 Ropsten 测试网发出请求。 -通过将鼠标悬停在导航栏中的“Apps”上方并点击“Create App”,导航到您的 Alchemy 仪表板中的“Create App”页面。 +通过将鼠标悬停在导航栏中的“Apps”上方并点击“Create App”,导航到你的 Alchemy 仪表板中的“Create App”页面。 -给您的应用程序命名,我们选择“My First NFT!”(我的第一个非同质化代币!),提供简短描述,对于您的应用程序簿记环境选择“Staging”,对于网络选择“Ropsten”。 +给你的应用程序命名,我们选择“My First NFT!”(我的第一个非同质化代币!),提供简短描述,对于你的应用程序簿记环境选择“Staging”,对于网络选择“Ropsten”。 -点击“Create app”,完成! 您的应用程序应该就会出现在下面的表格中。 +点击“Create app”,完成! 你的应用程序应该就会出现在下面的表格中。 太棒了,我们已经创建了我们的 HTTP Alchemy 应用程序接口网址,现在请将其复制到剪贴板...... -…...然后让我们将它添加到我们的 `.env` 文件中。 总之,您的 .env 文件应如下所示: +…然后让我们将它添加到我们的 `.env` 文件中。 总之,你的 .env 文件应如下所示: ```text REACT_APP_PINATA_KEY = @@ -612,18 +609,18 @@ REACT_APP_PINATA_SECRET = REACT_APP_ALCHEMY_KEY = https://eth-ropsten.alchemyapi.io/v2/ ``` -既然我们已经有合约应用程序二进制接口和 Alchemy 应用程序接口密钥了,现在我们可以使用 [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) 加载我们的智能合约。 +既然我们已经有合约 ABI 和 Alchemy API 密钥了,现在我们可以使用 [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) 加载我们的智能合约。 -### 设置您的 Alchemy Web3 端点和合约 {#setup-alchemy-endpoint} +### 设置你的 Alchemy Web3 端点和合约 {#setup-alchemy-endpoint} -首先,如果您还没有 [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3),您需要通过在终端导航到主目录 `nft-minter-tutorial` 来安装它: +首先,如果你还没有 [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3),你需要通过在终端导航到主目录 `nft-minter-tutorial` 来安装它: ```text cd .. npm install @alch/alchemy-web3 ``` -接下来,我们返回 `interact.js` 文件。 在该文件顶部添加以下代码,以便从您的 .env 文件中导入 Alchemy 密钥并设置您的 Alchemy Web3 端点: +接下来,我们返回 `interact.js` 文件。 在该文件顶部添加以下代码,以便从你的 .env 文件中导入 Alchemy 密钥并设置你的 Alchemy Web3 端点: ```javascript require("dotenv").config() @@ -632,7 +629,7 @@ const { createAlchemyWeb3 } = require("@alch/alchemy-web3") const web3 = createAlchemyWeb3(alchemyKey) ``` -[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) 是 [Web3.js](https://docs.web3js.org/) 的包装类,提供增强的应用程序接口方法和其他重要优势,让 Web3 开发者的工作更轻松。 它设计成只需经过最少的配置即可使用,因此您可以直接在您的应用程序中开始使用它! +[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) 是 [Web3.js](https://docs.web3js.org/) 的包装器,提供增强的 API 方法和其他重要优势,让 Web3 开发者的工作更轻松。 它设计成只需经过最少的配置即可使用,因此你可以直接在你的应用程序中开始使用它! 接下来,我们将合约应用程序二进制接口和合约地址添加到我们的文件中。 @@ -650,7 +647,7 @@ const contractAddress = "0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE" ## 实现 mintNFT 函数 {#implement-the-mintnft-function} -在 `interact.js` 文件中,我们定义的函数 `mintNFT`,它将用相同的名称铸造非同质化代币。 +在 `interact.js` 文件中,我们定义的函数 `mintNFT`,它将用相同的名称铸造 NFT。 因为我们将进行大量异步调用\(调用 Pinata 将我们的元数据固定到星际文件系统,调用 Alchemy Web3 加载我们的智能合约,并且调用 MetaMask 签署我们的交易\),我们的函数也将是异步的。 @@ -666,21 +663,21 @@ export const mintNFT = async (url, name, description) => {} ```javascript export const mintNFT = async (url, name, description) => { - //error handling + //错误处理 if (url.trim() == "" || name.trim() == "" || description.trim() == "") { return { success: false, - status: "❗Please make sure all fields are completed before minting.", + status: "❗请在铸币前确保所有字段都已填写完毕。", } } } ``` -本质上,如果有任何输入参数是空字符串,我们返回一个 JSON 对象,其中 `success` 布尔值为 false,并且 `status` 字符串指示我们用户界面中的所有字段必须完整。 +本质上,如果有任何输入参数是空字符串,我们返回一个 JSON 对象,其中 `success` 布尔值为 false,并且 `status` 字符串指示我们 UI 中的所有字段必须完整。 -### 将元数据上传到星际文件系统 {#upload-metadata-to-ipfs} +### 将元数据上传到 IPFS {#upload-metadata-to-ipfs} -在知道我们的元数据格式正确后,下一步是将其包装到 JSON 对象中,并通过我们编写的 `pinJSONToIPFS` 将其上传到星际文件系统! +在知道我们的元数据格式正确后,下一步是将其包装到 JSON 对象中,并通过我们编写的 `pinJSONToIPFS` 将其上传到 IPFS! 为此,我们首先需要将 `pinJSONToIPFS` 函数导入到 `interact.js` 文件中。 在 `interact.js` 文件最顶部,我们添加: @@ -694,26 +691,26 @@ import { pinJSONToIPFS } from "./pinata.js" ```javascript export const mintNFT = async (url, name, description) => { - //error handling + //错误处理 if (url.trim() == "" || name.trim() == "" || description.trim() == "") { return { success: false, - status: "❗Please make sure all fields are completed before minting.", + status: "❗请在铸币前确保所有字段都已填写完毕。", } } - //make metadata + //创建元数据 const metadata = new Object() metadata.name = name metadata.image = url metadata.description = description - //make pinata call + //发出 pinata 请求 const pinataResponse = await pinJSONToIPFS(metadata) if (!pinataResponse.success) { return { success: false, - status: "😢 Something went wrong while uploading your tokenURI.", + status: "😢 上传你的 tokenURI 时出错了。", } } const tokenURI = pinataResponse.pinataUrl @@ -733,16 +730,16 @@ window.contract = await new web3.eth.Contract(contractABI, contractAddress) 最后,在 `mintNFT` 函数中添加我们的以太坊交易: ```javascript -//set up your Ethereum transaction +//设置你的以太坊交易 const transactionParameters = { - to: contractAddress, // Required except during contract publications. - from: window.ethereum.selectedAddress, // must match user's active address. + to: contractAddress, // 合约发布期间外为必填项。 + from: window.ethereum.selectedAddress, // 必须与用户活动地址匹配。 data: window.contract.methods .mintNFT(window.ethereum.selectedAddress, tokenURI) - .encodeABI(), //make call to NFT smart contract + .encodeABI(), //调用 NFT 智能合约 } -//sign the transaction via MetaMask +//通过 MetaMask 签署交易 try { const txHash = await window.ethereum.request({ method: "eth_sendTransaction", @@ -751,24 +748,24 @@ try { return { success: true, status: - "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" + + "✅ 在 Etherscan 上查看你的交易:https://ropsten.etherscan.io/tx/" + txHash, } } catch (error) { return { success: false, - status: "😥 Something went wrong: " + error.message, + status: "😥 出错了:" + error.message, } } ``` -如果您已经熟悉以太坊交易,您会注意到其结构与您以前看到的非常相似。 +如果你已经熟悉以太坊交易,你会注意到其结构与你以前看到的非常相似。 - 首先,我们设置交易参数。 - - `to` 指定接收者地址\(我们的智能合约\) - - `from` 指定交易的签名者\(用户连接到 MetaMask 的地址:`window.ethereum.selectedAddress`\) - - `data` 包含对智能合约 `mintNFT` 方法的调用,该方法接收 `tokenURI` 和用户的钱包地址 `window.ethereum.selectedAddress ` 作为输入 -- 然后,我们发出一个 await 调用 `window.ethereum.request`,我们通过它要求 MetaMask 签署交易。 注意,在该请求中,我们指定了我们的以太币方法 \(eth_SentTransaction\) 并传入了 `transactionParameters`。 此时,MetaMask 将在浏览器中打开,并提示用户签署或拒绝交易。 + - `to` 指定接收者地址(我们的智能合约) + - `from` 指定交易的签名者(用户连接到 MetaMask 的地址:`window.ethereum.selectedAddress`) + - `data` 包含对智能合约 `mintNFT` 方法的调用,该方法接收 `tokenURI` 和用户的钱包地址 `window.ethereum.selectedAddress` 作为输入 +- 接下来,我们进行对 `window.ethereum.request` 进行异步调用,请求 MetaMask 对交易进行签名。 注意,在该请求中,我们指定了我们的以太币方法(`eth_SentTransaction`)并传入了 `transactionParameters`。 此时,MetaMask 将在浏览器中打开,并提示用户签署或拒绝交易。 - 如果交易成功,该函数将返回一个 JSON 对象,其中布尔值 `success` 设置为 true,并且 `status` 字符串提示用户查看 Etherscan 区块浏览器以获取有关其交易的更多信息。 - 如果交易失败,该函数将返回一个 JSON 对象,其中 `success` 布尔值设置为 false,并且 `status` 字符串指示错误信息。 @@ -776,43 +773,43 @@ try { ```javascript export const mintNFT = async (url, name, description) => { - //error handling + //错误处理 if (url.trim() == "" || name.trim() == "" || description.trim() == "") { return { success: false, - status: "❗Please make sure all fields are completed before minting.", + status: "❗请在铸币前确保所有字段都已填写完毕。", } } - //make metadata + //创建元数据 const metadata = new Object() metadata.name = name metadata.image = url metadata.description = description - //pinata pin request + //pinata 置顶请求 const pinataResponse = await pinJSONToIPFS(metadata) if (!pinataResponse.success) { return { success: false, - status: "😢 Something went wrong while uploading your tokenURI.", + status: "😢 上传你的 tokenURI 时出错了。", } } const tokenURI = pinataResponse.pinataUrl - //load smart contract + //加载智能合约 window.contract = await new web3.eth.Contract(contractABI, contractAddress) //loadContract(); - //set up your Ethereum transaction + //设置你的以太坊交易 const transactionParameters = { - to: contractAddress, // Required except during contract publications. - from: window.ethereum.selectedAddress, // must match user's active address. + to: contractAddress, // 合约发布期间外为必填项。 + from: window.ethereum.selectedAddress, // 必须与用户活动地址匹配。 data: window.contract.methods .mintNFT(window.ethereum.selectedAddress, tokenURI) - .encodeABI(), //make call to NFT smart contract + .encodeABI(), //调用 NFT 智能合约 } - //sign transaction via MetaMask + //通过 MetaMask 签署交易 try { const txHash = await window.ethereum.request({ method: "eth_sendTransaction", @@ -821,13 +818,13 @@ export const mintNFT = async (url, name, description) => { return { success: true, status: - "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" + + "✅ 在 Etherscan 上查看你的交易:https://ropsten.etherscan.io/tx/" + txHash, } } catch (error) { return { success: false, - status: "😥 Something went wrong: " + error.message, + status: "😥 出错了:" + error.message, } } } @@ -837,7 +834,7 @@ export const mintNFT = async (url, name, description) => { ## 将 mintNFT 连接到我们的 Minter.js 前端 {#connect-our-frontend} -打开您的 `Minter.js` 文件,并将顶部的 `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` 行更新为: +打开你的 `Minter.js` 文件,并将顶部的 `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` 行更新为: ```javascript import { @@ -847,7 +844,7 @@ import { } from "./utils/interact.js" ``` -最后,实现 `onMintPressed` 函数对导入的 `mintNFT` 函数进行 await 调用,并更新 `status` 状态变量以表示我们的交易是成功还是失败: +最后,实现 `onMintPressed` 函数对导入的 `mintNFT` 函数进行 `await` 调用,并更新 `status` 状态变量以表示我们的交易是成功还是失败: ```javascript const onMintPressed = async () => { @@ -856,22 +853,22 @@ const onMintPressed = async () => { } ``` -## 将您的非同质化代币部署到在线网站 {#deploy-your-NFT} +## 将你的 NFT 部署到在线网站 {#deploy-your-NFT} -准备好让您的项目上线和用户互动了吗? 查看[本教程](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online),将您的铸币机部署到在线网站。 +准备好让你的项目上线和用户互动了吗? 查看[本教程](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online)以将你的 Minter 部署到在线网站。 最后一步...... -## 掀起区块链世界的风暴 {#take-the-blockchain-world-by-storm} +## 让区块链世界为之震撼 {#take-the-blockchain-world-by-storm} -开个玩笑,您已经完成了本教程! +开个玩笑,你已经完成了本教程! -概括一下,通过构建非同质化代币铸币机,您成功学会了如何: +概括一下,通过构建非同质化代币铸币机,你成功学会了如何: -- 通过您的前端项目连接到 MetaMask +- 通过你的前端项目连接到 MetaMask - 在前端调用智能合约的方法 - 使用 MetaMask 签署交易 -大概,你想要在钱包中炫耀通过你的去中心化应用程序铸造的非同质化代币 — 所以请务必参阅我们的快速教程:[如何查看钱包中的非同质化代币](https://docs.alchemyapi.io/alchemy/tutorials/how-to-write-and-deploy-a-nft-smart-contract/how-to-view-your-nft-in-your-wallet)! +也许你希望能够在钱包中展示通过你的去中心化应用程序铸造的 NFT — 因此请务必查看我们的快速教程[“如何在钱包中查看你的 NFT”](https://www.alchemy.com/docs/how-to-view-your-nft-in-your-mobile-wallet)! -一如既往,如果您有任何问题,我们会在 [Alchemy Discord](https://discord.gg/gWuC7zB) 中随时为您提供帮助。 我们迫不及待地想看看您如何在将来的项目中应用本教程中的概念! +一如既往,如果你有任何问题,我们会在 [Alchemy Discord](https://discord.gg/gWuC7zB) 中随时为你提供帮助。 我们迫不及待地想看看你如何在将来的项目中应用本教程中的概念! From 785ffe1a36314941f73d7a5738640ce3a19c2a68 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:10 -0800 Subject: [PATCH 139/581] update(i18n): public/content/translations/zh/developers/docs/data-structures-and-encoding/rlp/index.md --- .../data-structures-and-encoding/rlp/index.md | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/public/content/translations/zh/developers/docs/data-structures-and-encoding/rlp/index.md b/public/content/translations/zh/developers/docs/data-structures-and-encoding/rlp/index.md index 2176f41308c..19f6f5c7b4e 100644 --- a/public/content/translations/zh/developers/docs/data-structures-and-encoding/rlp/index.md +++ b/public/content/translations/zh/developers/docs/data-structures-and-encoding/rlp/index.md @@ -5,20 +5,20 @@ lang: zh sidebarDepth: 2 --- -递归长度前缀 (RLP) 序列化广泛用于以太坊的执行客户端。 数据在节点之间以节省空间的格式传输,而递归长度前缀可使这一过程标准化。 递归长度前缀的目的在于,对任意嵌套的二进制数据数组进行编码,而递归长度前缀是用于序列化以太坊执行层中对象的主要编码方法。 递归长度前缀的主要目的是对结构进行编码;除正整数外,递归长度前缀将特定数据类型(例如字符串、浮点数)的编码委托给更高阶协议。 正整数必须以不带前导零的大端二进制形式表示(从而使整数值零相当于空字节数组)。 任何使用递归长度前缀的高阶协议都必须将带前导零的反序列化正整数视为无效。 +递归长度前缀 (RLP) 序列化广泛用于以太坊的执行客户端。 数据在节点之间以节省空间的格式传输,而递归长度前缀可使这一过程标准化。 递归长度前缀的目的在于,对任意嵌套的二进制数据数组进行编码,而递归长度前缀是用于序列化以太坊执行层中对象的主要编码方法。 RLP 的主要目的是对结构进行编码;除了正整数,RLP 将特定数据类型(例如,字符串、浮点数)的编码委托给高阶协议。 正整数必须以不带前导零的大端二进制形式表示(从而使整数值零相当于空字节数组)。 任何使用递归长度前缀的高阶协议都必须将带前导零的反序列化正整数视为无效。 -更多信息请见[以太坊黄皮书(附录 B)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19)。 +更多信息请参阅[《以太坊黄皮书》(附录 B)](https://ethereum.github.io/yellowpaper/paper.pdf#page=19)。 要使用递归长度前缀对字典进行编码,建议的两种规范形式为: -- 使用 `[[k1,v1],[k2,v2]...]` 加上按字典顺序排列的键 +- 使用 `[[k1,v1],[k2,v2]...]`,其中的密钥按字典顺序排列 - 像以太坊一样使用更高级别的前缀树编码 ## 定义 {#definition} 递归长度前缀编码函数接受一个项目。 该项目的定义如下: -- 一个字符串(即字节数组)是一个项目 +- 一个字符串(即字节数组)是一个项 - 项目列表也是一个项目 - 正整数是一个项目 @@ -35,12 +35,12 @@ sidebarDepth: 2 递归长度前缀编码的定义如下: - 对于正整数,将其转换为最短字节数组,其大端解释为整数,然后根据以下规则编码为字符串。 -- 对于值在 `[0x00, 0x7f]`(十进制 `[0, 127]`)范围内的单个字节,该字节即是它自己的递归长度前缀编码。 -- 否则,如果字符串的长度为 0-55 个字节,则递归长度前缀编码包含一个值为 **0x80**(十进制 128)的单字节,加上该字符串之后字符串的长度。 因此,第一个字节的范围是 `[0x80, 0xb7]`(十进制 `[128, 183]`)。 -- 如果字符串的长度超过 55 个字节,则递归长度前缀编码由一个值为 **0xb7**(十进制为 183)的单个字节,加上二进制字符串长度的以字节为单位的长度,后跟字符串的长度,然后是字符串。 例如,一个长 1024 字节的字符串将被编码为 `\xb9\x04\x00`(十进制 `185, 4, 0`)后跟该字符串。 在这里,`0xb9` (183 + 2 = 185) 为第一个字节,然后是表示实际字符串长度的 2 个字节 `0x0400`(十进制 1024)。 因此,第一个字节的范围是 `[0xb8, 0xbf]`(十进制 `[184, 191]`)。 +- 对于值在 `[0x00, 0x7f]`(十进制 `[0, 127]`)范围内的单个字节,该字节即是它自己的 RLP 编码。 +- 否则,如果字符串的长度为 0-55 字节,RLP 编码将由一个值为 **0x80**(十进制 128)的单字节加上字符串的长度,后跟该字符串本身构成。 因此,第一个字节的范围是 `[0x80, 0xb7]`(十进制 `[128, 183]`)。 +- 如果字符串长度超过 55 字节,RLP 编码由一个值为 **0xb7**(十进制 183)的单字节,加上字符串长度的二进制形式的字节长度,后跟字符串长度,再后跟字符串本身构成。 例如,一个长 1024 字节的字符串将被编码为 `\xb9\x04\x00`(十进制 `185, 4, 0`)后跟该字符串。 在这里,`0xb9` (183 + 2 = 185) 为第一个字节,然后是表示实际字符串长度的 2 个字节 `0x0400`(十进制 1024)。 因此,第一个字节的范围是 `[0xb8, 0xbf]`(十进制 `[184, 191]`)。 - 如果字符串的长度为 2^64 字节或更长,则可能不会对其进行编码。 -- 如果列表的总有效载荷长度(即其所有经过递归长度前缀编码的项目的组合长度)为 0-55 个字节,则递归长度前缀编码包含一个值为 **0xc0** 的单字节,加上有效载荷长度,后跟一串项目的递归长度前缀编码。 因此,第一个字节的范围是 `[0xc0, 0xf7]`(十进制 `[192, 247]`)。 -- 如果列表的总有效载荷长度超过 55 个字节,则递归长度前缀编码包含一个值为 **0xf7** 的单字节,加上二进制格式的有效载荷长度的以字节为单位的长度,后跟有效载荷的长度,然后是项目递归长度前缀编码串。 因此,第一个字节的范围是 `[0xf8, 0xff]`(十进制 `[248, 255]`)。 +- 如果列表的总有效负载(即其所有 RLP 编码项的组合长度)为 0-55 字节长,则 RLP 编码由一个值为 **0xc0** 的单字节,加上有效负载的长度,后跟各项 RLP 编码的串联组成。 因此,第一个字节的范围是 `[0xc0, 0xf7]`(十进制 `[192, 247]`)。 +- 如果列表的总有效负载超过 55 字节,RLP 编码由一个值为 **0xf7** 的单字节,加上有效负载长度的二进制形式的字节长度,后跟有效负载长度,再后跟各项 RLP 编码的串联构成。 因此,第一个字节的范围是 `[0xf8, 0xff]`(十进制 `[248, 255]`)。 对应的代码为: @@ -62,7 +62,7 @@ def encode_length(L, offset): elif L < 256**8: BL = to_binary(L) return chr(len(BL) + offset + 55) + BL - raise Exception("input too long") + raise Exception("input too long") def to_binary(x): if x == 0: @@ -80,30 +80,30 @@ def to_binary(x): - 字节 '\\x00' = `[ 0x00 ]` - 字节 '\\x0f' = `[ 0x0f ]` - 字节 '\\x04\\x00' = `[ 0x82, 0x04, 0x00 ]` -- 3 的[集合论表示](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers),`[ [], [[]], [ [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0 ]` -- 字符串“Lorem ipsum dolor sit amet, consectetur adipisicing elit”= `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ... , 'e', 'l', 'i', 't' ]` +- 三的[集合论表示法](http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers),`[ [], [[]], [ [], [[]] ] ] = [ 0xc7, 0xc0, 0xc1, 0xc0, 0xc3, 0xc0, 0xc1, 0xc0 ]` +- 字符串 "Lorem ipsum dolor sit amet, consectetur adipisicing elit" = `[ 0xb8, 0x38, 'L', 'o', 'r', 'e', 'm', ' ', ... , 'e', 'l', 'i', 't' ]` -## 递归长度前缀解码 {#rlp-decoding} +## RLP 解码 {#rlp-decoding} 根据递归长度前缀编码的规则和过程,递归长度前缀译码的输入被视为一个二进制数据数组。 递归长度前缀解码过程如下: -1. 根据输入数据的第一个字节(即前缀),解码数据类型、实际数据的长度和偏移量; +1. 根据输入数据的第一个字节(即前缀),解码数据类型、实际数据的长度和偏移量; -2. 根据数据的类型和偏移量,遵循正整数的最小编码规则,对数据进行相应的解码; +2. 根据数据的类型和偏移量,遵循正整数的最小编码规则,对数据进行相应的解码; -3. 继续解码输入的其余部分; +3. 继续解码输入的其余部分; 其中,解码数据类型和偏移量的规则如下: -1. 如果第一个字节(即前缀)的范围是 [0x00, 0x7f],则数据为字符串,并且字符串本身就是第一个字节; +1. 如果第一个字节(即前缀)的范围是 `[0x00, 0x7f]`,则数据为字符串,且该字符串就是第一个字节本身; -2. 如果第一个字节的范围是 [0x80, 0xb7],则数据为字符串,并且第一个字节后跟长度等于第一个字节减去 0x80 的字符串; +2. 如果第一个字节的范围是 [0x80, 0xb7],则数据为字符串,并且第一个字节后跟长度等于第一个字节减去 0x80 的字符串; -3. 如果第一个字节的范围是 [0xb8, 0xbf],则数据为字符串,第一个字节后跟长度等于第一字节减去 0xb7 的字符串长度,而字符串则跟在字符串长度后面 +3. 如果第一个字节的范围是 [0xb8, 0xbf],则数据为字符串,第一个字节后跟长度等于第一字节减去 0xb7 的字符串长度,而字符串则跟在字符串长度后面 -4. 如果第一个字节的范围是 [0xc0, 0xf7],则数据为列表,第一字节后跟列表中所有项目的递归长度前缀编码串,而列表的总有效载荷等于第一字节减去 0xc0。 +4. 如果第一个字节的范围是 [0xc0, 0xf7],则数据为列表,第一字节后跟列表中所有项目的递归长度前缀编码串,而列表的总有效载荷等于第一字节减去 0xc0。 -5. 如果第一个字节的范围是 [0xf8, 0xff],则数据为列表,第一个字节后跟长度等于第一字节减去 0xf7 的总有效载荷,而列表所有项目的递归长度前缀编码串则跟在列表的总有效载荷之后; +5. 如果第一个字节的范围是 [0xf8, 0xff],则数据为列表,第一个字节后跟长度等于第一字节减去 0xf7 的总有效载荷,而列表所有项目的递归长度前缀编码串则跟在列表的总有效载荷之后; 对应的代码为: @@ -152,12 +152,12 @@ def to_integer(b): return ord(substr(b, -1)) + to_integer(substr(b, 0, -1)) * 256 ``` -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [以太坊中的递归长度前缀](https://medium.com/coinmonks/data-structure-in-ethereum-episode-1-recursive-length-prefix-rlp-encoding-decoding-d1016832f919) -- [底层以太坊:递归长度前缀](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58) -- [Coglio, A. (2020)。 以太坊 ACL2 中的递归长度前缀。 arXiv 预印本 arXiv:2009.13769。](https://arxiv.org/abs/2009.13769) +- [以太坊中的 RLP](https://medium.com/coinmonks/data-structure-in-ethereum-episode-1-recursive-length-prefix-rlp-encoding-decoding-d1016832f919) +- [以太坊底层机制:RLP](https://medium.com/coinmonks/ethereum-under-the-hood-part-3-rlp-decoding-df236dc13e58) +- Coglio, A. (2020)。 以太坊 ACL2 中的递归长度前缀。 arXiv preprint arXiv:2009.13769.](https://arxiv.org/abs/2009.13769) -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} -- [默克尔前缀树](/developers/docs/data-structures-and-encoding/patricia-merkle-trie) +- [帕特里夏-默克尔树](/developers/docs/data-structures-and-encoding/patricia-merkle-trie) From 892b36d9d3a8a52f30e29456724986a2621d84a6 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:13 -0800 Subject: [PATCH 140/581] update(i18n): public/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md --- .../index.md | 95 +++++++++---------- 1 file changed, 46 insertions(+), 49 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md index d750829690f..1ccce421e25 100644 --- a/public/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md +++ b/public/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md @@ -3,10 +3,7 @@ title: 智能合约安全工具指南 description: 三种不同的测试和程序分析技术概述 author: "Trailofbits" lang: zh -tags: - - "solidity" - - "智能合约" - - "安全性" +tags: [ "Solidity", "智能合同", "安全性。" ] skill: intermediate published: 2020-09-07 source: 构建安全的合约 @@ -15,91 +12,91 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/progr 我们将使用三种独特的测试和程序分析技术: -- **使用 [Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) 进行静态分析**。通过不同的程序演示(例如控制流程图),同时对程序的所有路径进行模拟和分析。 -- **使用 [Echidna](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/) 进行模糊测试。** 代码是通过伪随机生成的交易来执行的, 模糊器将尝试找到一个违反某个给定的合约特性的交易序列。 -- **使用 [Manticore](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) 进行符号执行。** 一种正式的验证技术,它将每个路径转换为数学公式,在此基础上可对最重要的约束加以检查。 +- **通过 [Slither](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) 进行静态分析。** 通过不同的程序表示形式(例如控制流图),同时对程序的所有路径进行近似和分析。 +- **使用 [Echidna](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/) 进行模糊测试。** 通过伪随机生成的交易来执行代码。 模糊器将尝试找到一个违反某个给定属性的交易序列。 +- **使用 [Manticore](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) 进行符号执行。** 这是一种形式化验证技术,可将每个执行路径转换为数学公式,在此基础上可检查约束条件。 -每种技术都有优缺点,在[特定情况](#determining-security-properties)下会很有用: +每种技术都有其优缺点,并且在[特定案例](#determining-security-properties)中会很有用: -| 技术 | 工具 | 使用方法 | 速度 | 错误遗漏 | 误报 | +| 技术 | 工具 | 用法 | 速度 | 遗漏的漏洞 | 误报 | | ---- | --------- | -------------- | -- | ----- | -- | -| 静态分析 | Slither | CLI 和脚本 | 秒 | 中度 | 低 | +| 静态分析 | Slither | CLI 和脚本 | 秒 | 中等 | 低 | | 模糊测试 | Echidna | Solidity 属性 | 分钟 | 低 | 无 | -| 符号执行 | Manticore | Solidity 属性和脚本 | 小时 | 无\* | 无 | +| 符号执行 | Manticore | Solidity 属性和脚本 | 小时 | 无\* | 无 | -\* 如果在没有超时情况下遍历所有路径 +\* 如果在没有超时的情况下探索了所有路径 -**Slither** 可以在几秒钟内分析合同,但是静态分析可能会导致误报,不太适合复杂的检查(例如算术检查)。 通过用于按钮访问内置检测器的 API 或用于用户自定义检查的 API 运行 Slither。 +**Slither** 可在数秒内分析合约,但是,静态分析可能会导致误报,并且不太适合复杂的检查(例如,算术检查)。 通过 API 运行 Slither,以便捷地访问内置探测器或进行用户自定义的检查。 -**Echidna** 需要运行几分钟,并且只会产生真阳性的测试结果。 Echidna 会检查用户提供的用 Solidity 编写的安全属性。 由于它的随机侦测的特性,它也许会错失一些漏洞。 +**Echidna** 需要运行数分钟,且只会产生真阳性结果。 Echidna 会检查用户提供的、用 Solidity 编写的安全属性。 由于它基于随机探索,因此可能会遗漏某些漏洞。 -**Manticore** 进行的是“最大权重”分析。 像 Echidna 一样,Manticore 会验证用户提供的特性。 它需要更多的时间来运行,但它可以证明某个特性的有效性,并且不会报告误报。 +**Manticore** 执行“最重量级”的分析。 与 Echidna 一样,Manticore 也可验证用户提供的属性。 它需要更长的运行时间,但能够证明属性的有效性,并且不会产生误报。 -## 推荐工作流程 {#suggested-workflow} +## 建议的工作流程 {#suggested-workflow} -从 Slither 的内置检测器开始,确保现在没有或以后不会引入简单的漏洞。 使用 Slither 检查与继承、变量依赖关系和结构问题相关的属性。 随着代码库的增大,可以使用 Echidna 来测试状态机更复杂的特性。 再次使用 Slither 开发专门用于那些 Solidity 不提供保护的自定义检查,比如防止某个函数被覆盖。 最后,使用 Manticore 对关键安全属性进行有针对性的验证,例如算术运算。 +从 Slither 的内置检测器入手,确保当前不存在或将来不会引入简单的漏洞。 使用 Slither 检查与继承、变量依赖和结构问题相关的属性。 随着代码库的增长,可使用 Echidna 测试状态机更复杂的属性。 再次使用 Slither,为 Solidity 未提供的保护(例如,防止函数被覆写)开发自定义检查。 最后,使用 Manticore 对关键安全属性(例如算术运算)执行针对性验证。 -- 使用 Slither 的 CLI 来捕捉常见问题 +- 使用 Slither 的 CLI 捕获常见问题 - 使用 Echidna 测试合约的高级安全属性 - 使用 Slither 编写自定义静态检查 -- 如果需要深入保证关键安全属性,请使用 Manticore +- 如果你希望深入确保关键安全属性,请使用 Manticore -**关于单元测试的说明**。 单元测试是构建高质量软件的必要条件。 然而,要找出安全漏洞,这些技术并不是最合适的。 它们通常用来测试正向代码行为(例如:代码在正常情况下按预期工作), 但安全漏洞往往存在于开发者未考虑的边缘情况。 在我们进行的数十次智能合约安全测试研究中,[单元测试覆盖率对于我们在客户端的代码中发现的安全漏洞的数量或者严重程度没有影响](https://blog.trailofbits.com/2019/08/08/246-findings-from-our-smart-contract-audits-an-executive-summary/)。 +**关于单元测试的说明**。 单元测试是构建高质量软件所必需的。 然而,这些技术并非是发现安全漏洞的最佳方法。 它们通常用于测试代码的积极行为(即,代码在正常情况下按预期工作),而安全漏洞往往存在于开发者没有考虑到的边缘情况。 在我们对数十个智能合约安全审计的研究中,我们发现[单元测试覆盖率对我们在客户代码中发现的安全漏洞的数量或严重性没有影响](https://blog.trailofbits.com/2019/08/08/246-findings-from-our-smart-contract-audits-an-executive-summary/)。 ## 确定安全属性 {#determining-security-properties} -为了有效测试和验证代码,你必须确定需要注意的地方。 因为花费在安全上的资源是有限的,只有划分出代码库中的薄弱和高价值部分,才能优化你的工作。 威胁建模可以提供帮助。 供考虑的审核方法有: +为有效测试和验证你的代码,你必须确定需要关注的领域。 由于你在安全方面的资源有限,因此确定代码库中薄弱或高价值的部分对于优化你的工作至关重要。 威胁建模可以提供帮助。 请考虑审查: - [快速风险评估](https://infosec.mozilla.org/guidelines/risk/rapid_risk_assessment.html)(时间紧迫时我们的首选方法) -- [数据中心系统威胁建模指南](https://csrc.nist.gov/publications/detail/sp/800-154/draft) (aka NIST 800-154) -- [Shostack 线程建模](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998) -- [STRIDE](https://wikipedia.org/wiki/STRIDE_(security)) / [DREAD](https://wikipedia.org/wiki/DREAD_(risk_assessment_model)) +- [以数据为中心的系统威胁建模指南](https://csrc.nist.gov/pubs/sp/800/154/ipd) (又名 NIST 800-154) +- [Shostack 威胁建模](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998) +- [STRIDE](https://wikipedia.org/wiki/STRIDE_\(security\)) / [DREAD](https://wikipedia.org/wiki/DREAD_\(risk_assessment_model\)) - [PASTA](https://wikipedia.org/wiki/Threat_model#P.A.S.T.A.) -- [使用断言](https://blog.regehr.org/archives/1091) +- [断言的使用](https://blog.regehr.org/archives/1091) ### 组件 {#components} -了解要检查的内容也有助于选择正确的工具。 +了解你想要检查的内容也有助于你选择正确的工具。 -通常与智能合约相关的领域比较广泛,包括: +与智能合约经常相关的广泛领域包括: -- **状态机**。大多数合约都可以表示为状态机。 考虑检查以下几点:(1) 不能到达无效状态,(2) 如果状态有效则可以到达,以及 (3) 没有状态会限制合约。 +- **状态机。** 大多数合约都可以表示为状态机。 考虑检查:(1) 无法达到无效状态;(2) 如果一个状态有效,则该状态可以达到;(3) 没有状态会使合约陷入陷阱。 - Echidna 和 Manticore 是测试状态机规范的首选工具。 -- **访问控制。**如果你的系统有特权用户(例如所有者、监管者等),你必须确保 (1) 每个用户只能执行授权操作,并且 (2) 没有用户可以阻止权限更大的用户的操作。 +- **访问控制。** 如果你的系统有特权用户(例如所有者、控制者……) 你必须确保 (1) 每个用户只能执行授权的操作,以及 (2) 没有用户可以阻止更具特权的用户执行操作。 - - Slither、Echidna 和 Manticore 都可以检查访问控制正确与否。 例如,Slither 可以检查是否只有白名单上的函数缺少 onlyOwner 修改器。 Echidna 和 Manticore 可用于更复杂的访问控制,例如仅当合约达到给定状态时才授予权限。 + - Slither、Echidna 和 Manticore 都可以检查访问控制的正确性。 例如,Slither 可以检查是否只有列入白名单的函数缺少 `onlyOwner` 修饰符。 Echidna 和 Manticore 对于更复杂的访问控制很有用,例如仅在合约达到特定状态时才授予权限。 -- **算术运算**。检查算术运算的可靠性至关重要。 在所有地方使用 `SafeMath` 是防止上溢/下溢很好的做法,但你还必需考虑其他算术缺陷,包括四舍五入和限制合约的缺陷。 +- **算术运算。** 检查算术运算的可靠性至关重要。 处处使用 `SafeMath` 是防止溢出/下溢的好方法,但你仍必须考虑其他算术缺陷,包括舍入问题和使合约陷入陷阱的缺陷。 - - 在这里,Manticore 是最佳选择。 如果算术超出 SMT 求解器的范围,则可以使用 Echidna。 + - Manticore 是此处的最佳选择。 如果算术运算超出了 SMT 求解器的范围,则可以使用 Echidna。 -- **继承的正确性**。Solidity 合约在很大程度上依赖于多重继承。 因此,很容易出现一些诸如像缺少`超级`调用的遮蔽函数和曲解了 C3 线性化的顺序之类的错误。 +- **继承的正确性。** Solidity 合约严重依赖多重继承。 诸如遮蔽函数缺少 `super` 调用以及对 c3 线性化顺序的误解等错误都很容易出现。 - - Slither 是确保检测出这些问题的工具。 + - Slither 是确保检测这些问题的工具。 -- **外部交互**。这里指合约之间的互动,一些外部合约不应该被信任。 例如,如果你的合约依赖于外部预言机,那么如果现有预言机有一半被泄漏,它是否仍然是安全的? +- **外部交互。** 合约之间会相互交互,某些外部合约不应被信任。 例如,如果你的合约依赖外部预言机,当一半可用预言机被攻破时,它是否仍然安全? - - Manticore 和 Echidna 是测试你的合约外部互动的最佳选择。 Manticore 有一个内置机制来存留外部合约。 + - Manticore 和 Echidna 是测试你的合约与外部交互的最佳选择。 Manticore 有一个内置机制,可以为外部合约创建存根。 -- **标准一致性**。 以太坊标准(例如 ERC20)记录了他们在设计上的缺陷。 请注意你正在构建的标准的局限性。 - - Slither、Echidna 和 Manticore 可以帮助你发现偏离特定标准的情况。 +- **标准一致性。** 以太坊标准(例如 ERC20)的设计曾出现过缺陷。 请注意你所依据的标准的局限性。 + - Slither、Echidna 和 Manticore 将帮助你检测与特定标准的偏差。 ### 工具选择备忘清单 {#tool-selection-cheatsheet} -| 组件 | 工具 | 示例 | -| ------ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 状态机 | Echidna、Manticore | | -| 访问控制 | Slither、Echidna、Manticore | [Slither 练习 2](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise2.md)、[Echidna 练习 2](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-2.md) | -| 算术运算 | Manticore、Echidna | [Echidna 练习 1](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-1.md)、[Manticore 练习 1 - 3](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) | -| 继承的正确性 | Slither | [Slither 练习 1](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise1.md) | -| 外部交互 | Manticore、Echidna | | -| 标准一致性 | Slither、Echidna、Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) | +| 组件 | 工具 | 示例 | +| ------ | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 状态机 | Echidna、Manticore | | +| 访问控制 | Slither、Echidna、Manticore | [Slither 练习 2](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise2.md)、[Echidna 练习 2](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-2.md) | +| 算术运算 | Manticore、Echidna | [Echidna 练习 1](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/exercises/Exercise-1.md)、[Manticore 练习 1 - 3](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) | +| 继承的正确性 | Slither | [Slither 练习 1](https://github.com/crytic/slither/blob/7f54c8b948c34fb35e1d61adaa1bd568ca733253/docs/src/tutorials/exercise1.md) | +| 外部交互 | Manticore、Echidna | | +| 标准一致性 | Slither、Echidna、Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) | -其他领域需要根据你的目标进行检查, 但以上囊括的大致重点领域对于所有智能合约系统来说都是一个良好的开端。 +根据你的目标,可能还需要检查其他领域,但这些粗粒度的重点领域对于任何智能合约系统来说都是一个很好的起点。 -我们公开的审计包含了经过验证或测试的属性实例。 请考虑阅读以下报告的`自动测试和验证部分`,以查看实际安全属性: +我们的公开审计报告包含经过验证或测试的属性示例。 请考虑阅读以下报告的“自动化测试和验证”部分,以审查真实世界的安全属性: - [0x](https://github.com/trailofbits/publications/blob/master/reviews/0x-protocol.pdf) -- [平衡器](https://github.com/trailofbits/publications/blob/master/reviews/BalancerCore.pdf) +- [Balancer](https://github.com/trailofbits/publications/blob/master/reviews/BalancerCore.pdf) From a48451d7c3e5543fe76329075263fef2f3a53d4e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:16 -0800 Subject: [PATCH 141/581] update(i18n): public/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md --- .../index.md | 161 +++++++++--------- 1 file changed, 83 insertions(+), 78 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md index d92aa5ede8c..ce066432258 100644 --- a/public/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md +++ b/public/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md @@ -3,33 +3,30 @@ title: 面向 Python 开发者的以太坊介绍,第一部分 description: 这是一篇介绍以太坊开发的文章,对那些熟悉 Python 编程语言的人来说尤其有用。 author: Marc Garreau lang: zh -tags: - - "入门指南" - - "python" - - "区块链" - - "web3.py" +tags: [ "python", "web3.py" ] skill: beginner published: 2020-09-08 source: Snake charmers sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/ --- -想必您已经听说过以太坊,那么,您准备好投身于这个领域了吗? 本篇文章将快速介绍一些区块链基础知识,然后让您与模拟的以太坊节点进行互动,比如读取区块数据、检查账户余额和发送交易。 在这个过程中,我们会着重强调用传统方式构建应用与这种新的去中心化范式之间的差异。 +想必你已经听说过以太坊,那么,你准备好深入研究这个领域了吗? 本篇文章将快速介绍一些区块链基础知识,然后让你与模拟的以太坊节点进行互动,比如读取区块数据、检查帐户余额和发送交易。 在这个过程中,我们会着重强调用传统方式构建应用与这种新的去中心化范式之间的差异。 ## (软)前提条件 {#soft-prerequisites} -本文希望面向所有开发者。 在文章里会涉及 [Python 工具](/developers/docs/programming-languages/python/),不过它们只是思想的载体,如果您不是 Python 开发者也没有问题。 不过,我将对您已经了解的知识作一些假设,以便我们能够迅速地进入以太坊部分。 +本文希望面向广大开发者。 本文会涉及 [Python 工具](/developers/docs/programming-languages/python/),不过它们只是思想的载体,如果你不是 Python 开发者也没问题。 不过,我将对你已经了解的知识作一些假设,以便我们能够迅速地进入以太坊部分。 本文假定: -- 您熟悉终端操作, -- 您写过一些 Python 代码, -- 您的机器上有安装 Python 3.6 或更高版本 (强烈推荐使用 [虚拟环境](https://realpython.com/effective-python-environment/#virtual-environments) ),并且 -- 您使用过 `pip`,Python 的软件包安装程序。 再次强调,如果您不符合其中任何一条,或者您不打算敲本文中的代码,您照着学仍然可以学得很好。 +- 你熟悉终端操作, +- 你写过一些 Python 代码, +- 你的机器上安装了 Python 3.6 或更高版本(强烈建议使用[虚拟环境](https://realpython.com/effective-python-environment/#virtual-environments)),并且 +- 你使用过 `pip` (Python 的软件包安装程序)。 + 再次强调,如果你不符合其中任何一条,或者你不打算复现本文中的代码,你很可能仍然可以顺利地跟上进度。 -## 区块链简述 {#blockchains-briefly} +## 区块链简介 {#blockchains-briefly} -描述以太坊有很多方法,但其核心还是区块链。 区块链由一系列区块组成,所以让我们从区块链开始。 用最简单的话来说,以太坊区块链上的每个区块只是一些元数据和一个交易的列表。 在 JSON 格式中,它看起来像这样: +描述以太坊有很多方法,但其核心还是区块链。 区块链由一系列区块组成,所以我们从区块开始讲起。 用最简单的话来说,以太坊区块链上的每个区块只是一些元数据和一个交易列表。 在 JSON 格式中,它看起来像这样: ```json { @@ -41,39 +38,39 @@ sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt- } ``` -每个 [块](/developers/docs/blocks/) 会引用它前面的区块; `parentHash` 是前一个区块的哈希值。 +每个[区块](/developers/docs/blocks/)都引用它前面的区块;`parentHash` 就是前一个区块的哈希。 -注:以太坊广泛使用哈希函数来生成固定大小的值(“哈希”)。 哈希值在以太坊中发挥着重要作用,但您现在可以放心地将其视为是唯一的 ID 值。 +注:以太坊广泛使用哈希函数来生成固定大小的值(“哈希”)。 哈希在以太坊中扮演着重要角色,但暂时你可以放心地把它们看作是唯一 ID。 ![描述区块链的示意图,其中包括每个区块内的数据](./blockchain-diagram.png) _区块链本质上是一个链表;每个区块都有一个对前一个区块的引用。_ -这种数据结构并不新颖,但治理网络的规则(即点对点协议)却很新颖。 区块链没有中央机构;网络中的对等节点必需协作以维持网络,并且通过竞争决定将哪些交易纳入下一个区块。 因此,当您想给朋友转账时,您需要将这笔交易广播到网络上,然后等待它被纳入即将产生的区块。 +这种数据结构并不新颖,但治理网络的规则(即点对点协议)却很新颖。 区块链没有中央机构;网络中的对等节点必需协作以维持网络,并且通过竞争决定将哪些交易纳入下一个区块。 因此,当你想给朋友转账时,你需要将这笔交易广播到网络上,然后等待它被纳入即将产生的区块。 -区块链验证资金确实从一个用户发送给另一个用户的唯一方法是使用该区块链原生货币(即,由该区块链创建和管理的货币)。 在以太坊,这种货币被称为 ETH,以太坊区块链是账户余额的唯一正式记录。 +区块链验证资金确实从一个用户发送给另一个用户的唯一方法是使用该区块链原生货币(即,由该区块链创建和管理的货币)。 在以太坊,这种货币被称为以太币,以太坊区块链包含账户余额的唯一官方记录。 -## 一种新范式 {#a-new-paradigm} +## 新范式 {#a-new-paradigm} -这种新的去中心化技术栈催生了新的开发者工具。 许多编程语言都有这样的工具,但我们将通过 Python 的视角来观察。 重申一下:即使 Python 不是您的首选语言,跟上文章也不会有什么太大的问题。 +这种新的去中心化技术栈催生了新的开发者工具。 许多编程语言都有这样的工具,但我们将通过 Python 的视角来观察。 重申一下:即使 Python 不是你的首选语言,跟上文章也不会有什么太大的问题。 -想要与以太坊进行互动的 Python 开发人员可能会接触到 [Web3.py](https://web3py.readthedocs.io/)。 Web3.py 是一个库,可以帮助我们简化连接以太坊节点,以及发送和接收数据。 +想要与以太坊进行交互的 Python 开发者可能会用到 [Web3.py](https://web3py.readthedocs.io/)。 Web3.py 是一个程序库,可以极大简化连接以太坊节点以及收发数据的过程。 注:“以太坊节点”和“以太坊客户端”可互换使用。 这两种说法都是指以太坊网络中参与者所运行的软件。 该软件可以读取区块数据,在新区块添加到链中时接收更新,广播新交易等等。 从技术角度讲,客户端是软件,节点是运行软件的计算机。 -[以太坊客户端](/developers/docs/nodes-and-clients/)可以配置为通过[进程间通信 (IPC)](https://wikipedia.org/wiki/Inter-process_communication)、超文本传输协议 (HTTP) 或网络套接字 (Websockets) 进行访问,因此 Web3.py 也需要完成这个配置。 Web3.py 将这些连接选项称为**提供者**。 您需要从三个提供者中选择一个来连接 Web3.py 实例和您的节点。 +[以太坊客户端](/developers/docs/nodes-and-clients/)可配置为通过 [IPC](https://wikipedia.org/wiki/Inter-process_communication)、HTTP 或 Websockets 访问,因此 Web3.py 也需要进行相应配置。 Web3.py 将这些连接选项称为**提供者**。 你需要从三个提供者中选择一个来连接 Web3.py 实例和你的节点。 -![描述 web3.py 如何使用 IPC 将应用程序连接到以太坊节点的示意图](./web3py-and-nodes.png) +![描述 web3.py 如何使用 IPC 将你的应用程序连接到以太坊节点的示意图](./web3py-and-nodes.png) -_将以太坊节点和 Web3.py 配置为通过相同通信的协议(例如,本图中的 IPC)进行通信。_ +_配置以太坊节点和 Web3.py 通过相同协议(例如本图中的 IPC)进行通信。_ -正确配置了 Web3.py 之后,您就可以开始与区块链交互了。 下面是一些 Web3.py 使用示例,算是抛砖引玉: +正确配置了 Web3.py 之后,你就可以开始与区块链交互了。 下面是一些 Web3.py 使用示例,算是抛砖引玉: ```python -# read block data: +# 读取区块数据: w3.eth.get_block('latest') -# send a transaction: +# 发送一笔交易: w3.eth.send_transaction({'from': ..., 'to': ..., 'value': ...}) ``` @@ -83,112 +80,115 @@ w3.eth.send_transaction({'from': ..., 'to': ..., 'value': ...}) 注:在下面的例子中,以“$”开头的命令是要在终端中运行的。 (不要输入 `$`,它只是表示行的开始。) -首先,安装 [IPython](https://ipython.org/),以方便用户在其中进行探索。 IPython 提供了 tab 补全等功能,使得我们更容易看到 Web3.py 中有哪些可用方法。 +首先,安装 [IPython](https://ipython.org/),以获得一个便于探索的用户友好环境。 IPython 提供了 tab 补全等功能,使得我们更容易看到 Web3.py 中有哪些可用方法。 ```bash -$ pip install ipython +pip install ipython ``` Web3.py 以 `web3` 的名称发布。 安装方式如下: ```bash -$ pip install web3 +pip install web3 ``` 另外,我们后面要模拟一个区块链,这就需要更多依赖项。 可以通过下面的命令安装这些依赖项: ```bash -$ pip install 'web3[tester]' +pip install 'web3[tester]' ``` -您已经设置完毕! +你已经设置完毕! -## 开启沙盒环境 {#spin-up-a-sandbox} +请注意:`web3[tester]` 软件包最高支持 Python 3.10.xx -在终端中运行 `ipython`,打开一个新的 Python 环境。 这与运行 `python` 类似,但更友好。 +## 启动一个沙盒 {#spin-up-a-sandbox} + +在终端中运行 `ipython`,打开一个新的 Python 环境。 这与运行 `python` 类似,但功能更丰富。 ```bash -$ ipython +ipython ``` -这将打印出一些关于您正在运行的 Python 和 IPython 版本的信息,然后您应该会看到一个等待输入的提示: +这将打印出一些关于你正在运行的 Python 和 IPython 版本的信息,然后你应该会看到一个等待输入的提示: ```python In [1]: ``` -您现在看到的是一个交互式的 Python shell, 实际上,它是一个沙盒。 如果您已经做到了这一点,现在可以导入 Web3.py 了: +你现在看到的是一个交互式的 Python shell, 从根本上说,这是一个沙盒。 如果你已经走到这一步,那么现在就可以导入Web3.py了: ```python In [1]: from web3 import Web3 ``` -## Web3 模块介绍 {#introducing-the-web3-module} +## Web3 模块简介 {#introducing-the-web3-module} -除了作为以太坊的网关, [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) 模块还提供了一些便利的功能。 让我们来探究探究。 +除了作为以太坊的网关,[Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) 模块还提供了一些便捷函数。 让我们来探究探究。 -在以太坊应用中,您通常需要转换货币面额。 Web3 模块为此提供几个辅助方法: [fromWei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.fromWei) 和 [toWei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toWei)。 +在以太坊应用中,你通常需要转换货币面额。 Web3 模块为此提供了几个辅助方法:[from_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.from_wei) 和 [to_wei](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.to_wei)。 注:计算机不擅长处理十进制数学。 为了规避这个问题,开发者通常会以美分存储美元。 例如,价格为 5.99 美元的物品在数据库中存储为 599。 -在以 ETH 处理交易时,也使用了类似的模式。 但是,ETH 不是只有两个小数位,而是有 18 位。 ether 的最小单位是 wei,所以发送交易时指定的就是这个值。 +在以 ETH 处理交易时,也使用了类似的模式。 但是,ETH 不是只有两个小数位,而是有 18 位。 以太币的最小单位是 wei,因此发送交易时指定的是该值。 -1 ETH = 1000000000000000000 wei +1 以太币 = 1000000000000000000 wei -1 wei = 0.000000000000000001 ETH +1 wei = 0.000000000000000001 以太币 -试一下将一些数值转换为 wei 或反向转换。 请注意, [ETH 和 wei 之间还有其他面额](https://web3py.readthedocs.io/en/stable/troubleshooting.html#how-do-i-convert-currency-denominations)名称。 其中比较有名的是 **gwei**,因为它通常用于表示交易费用。 +试一下将一些数值转换为 wei 或反向转换。 请注意,在以太币和 wei 之间[还有许多其他面额单位的名称](https://web3py.readthedocs.io/en/stable/troubleshooting.html#how-do-i-convert-currency-denominations)。 其中比较有名的是**gwei**,因为它通常用于表示交易费用。 ```python -In [2]: Web3.toWei(1, 'ether') +In [2]: Web3.to_wei(1, 'ether') Out[2]: 1000000000000000000 -In [3]: Web3.fromWei(500000000, 'gwei') +In [3]: Web3.from_wei(500000000, 'gwei') Out[3]: Decimal('0.5') ``` -Web3 模块上的其他实用方法包括数据格式转换器(例如 [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)),地址助手,(例如 [`is address`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)),以及哈希函数(例如 [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak))。 其中许多内容将在后面的系列文章中介绍。 要查看所有可用的方法和属性,可以利用 IPython 的自动补全功能,输入 `Web3`。 然后在点号后面按两次 tab 键。 +Web3 模块上的其他实用方法包括数据格式转换器(例如 [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex))、地址辅助工具(例如 [`isAddress`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress))和哈希函数(例如 [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak))。 其中许多内容将在后面的系列文章中介绍。 要查看所有可用的方法和属性,可以利用 IPython 的自动补全功能,输入 `Web3`。 然后在点号后面按两次 tab 键。 -## 与链交互 {#talk-to-the-chain} +## 与链对话 {#talk-to-the-chain} -方便的方法很受欢迎,但让我们继续来说区块链。 接下来配置 Web3.py 与以太坊节点通信。 在这里,我们可以选择使用 IPC、HTTP 或 Websocket 提供者。 +这些便捷方法很棒,但我们还是继续来了解区块链吧。 接下来配置 Web3.py 与以太坊节点通信。 在这里,我们可以选择使用 IPC、HTTP 或 Websocket 提供者。 我们不会完整地进行这个步骤,但一个使用 HTTP 提供者的完整工作流程的例子可能如下所示: - 下载一个以太坊节点,例如 [Geth](https://geth.ethereum.org/)。 -- 在一个终端窗口启动 Geth,等待它同步网络。 默认的 HTTP 端口是 `8545`,但可以配置成其它端口。 -- 告诉 Web3.py 通过 HTTP 连接到节点,使用 `localhost:8545`。 `w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))` +- 在一个终端窗口启动 Geth,等待它同步网络。 默认的 HTTP 端口是 `8545`,但可以配置。 +- 让 Web3.py 通过 HTTP 连接到 `localhost:8545` 上的节点。 + `w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545'))` - 使用 `w3` 实例与节点交互。 -虽然这是一种“正式”的方式,但同步过程需要几个小时,如果您只是想要一个开发环境,则没有必要同步过程。 Web3.py 为此公开了第四个提供者,即 **EthereumTesterProvider**。 这个测试器提供者连接到一个模拟的以太坊节点,它有更宽松的权限,还有虚拟以太币可供操作。 +虽然这是一种“真实”的方式,但同步过程需要几个小时,如果你只是想要一个开发环境,则没必要进行同步。 Web3.py 为此公开了第四个提供者,即 **EthereumTesterProvider**。 这个测试器提供者连接到一个模拟的以太坊节点,它有更宽松的权限,还有虚拟以太币可供操作。 -![描述将 web3.py 应用程序连接到模拟以太坊节点的 EthereumTesterProvider 的示意图](./ethereumtesterprovider.png) +![显示 EthereumTesterProvider 将你的 web3.py 应用程序链接到模拟以太坊节点的示意图](./ethereumtesterprovider.png) _EthereumTesterProvider 连接到一个模拟节点,对于快速开发环境来说非常方便。_ -这个模拟节点叫做 [eth-tester](https://github.com/ethereum/eth-tester),我们把它作为 `pip install web3[tester]` 命令的一部分进行安装。 配置 Web3.py 来使用这个测试器提供者很简单: +这个模拟节点叫做 [eth-tester](https://github.com/ethereum/eth-tester),我们已通过 `pip install web3[tester]` 命令将其安装。 配置 Web3.py 来使用这个测试器提供者很简单: ```python In [4]: w3 = Web3(Web3.EthereumTesterProvider()) ``` -现在,您已经准备好在链上冲浪了! 这不是人们常说的以太链。 我只是虚构了它。 我们来快速了解一下。 +现在,你已经准备好在链上冲浪了! 人们一般不这么说。 我刚编的。 我们来快速了解一下。 -## 快速了解 {#the-quick-tour} +## 快速概览 {#the-quick-tour} -第一件事,先进行连接检查。 +首先,我们来检查一下是否一切正常: ```python -In [5]: w3.isConnected() +In [5]: w3.is_connected() Out[5]: True ``` -由于我们使用的是测试器提供者,这不是一个非常有价值的测试,但如果它确实失败了,很可能是在实例化 `w3` 变量时发生了输入错误。 仔细检查您是否包含了内括号,即 `Web3.EthereumTesterProvider()`。 +由于我们使用的是测试器提供者,这不是一个非常有价值的测试,但如果它确实失败了,很可能是在实例化 `w3` 变量时发生了输入错误。 仔细检查你是否包含了内括号,即 `Web3.EthereumTesterProvider()`。 -## 第一站:[帐户 ](/developers/docs/accounts/) {#tour-stop-1-accounts} +## 概览第一站:[账户](/developers/docs/accounts/) {#tour-stop-1-accounts} 为了方便起见,测试器提供者创建了一些帐户,并预先分配了测试以太币。 @@ -201,27 +201,27 @@ Out[6]: ['0x7E5F4552091A69125d5DfCb7b8C2659029395Bdf', '0x6813Eb9362372EEF6200f3b1dbC3f819671cBA69', ...] ``` -如果运行这个命令,您应该会看到一个以 `0x` 开头的十个字符串的列表。 每一个字符串都是一个的**公共地址**,在某些方面,类似于支票帐户上的帐号。 如果有人要给您转 ETH,您可以把这个地址给他。 +如果运行这个命令,你应该会看到一个以 `0x` 开头的十个字符串的列表。 每个都是一个**公共地址**,在某些方面类似于银行支票账户的账号。 如果有人要给你转 ETH,你可以把这个地址给他。 -如前所述,测试提供者已经为这些账户中的每一个账户预分配了一些测试以太币。 我们来看看第一个帐户上有多少 ETH。 +如前所述,测试提供者已经为这些帐户中的每一个帐户预分配了一些测试以太币。 我们来看看第一个帐户上有多少 ETH。 ```python In [7]: w3.eth.get_balance(w3.eth.accounts[0]) Out[7]: 1000000000000000000000000 ``` -好多零啊! 在你一路笑醒之前,先回忆一下之前关于货币面额的介绍。 ETH 币值用最小的面额 wei 来表示。 将其转换为 ETH: +好多零啊! 在你偷着乐之前,先回忆一下之前关于货币面额的介绍。 以太币值用最小的面额 wei 来表示。 将其转换为 ETH: ```python -In [8]: w3.fromWei(1000000000000000000000000, 'ether') +In [8]: w3.from_wei(1000000000000000000000000, 'ether') Out[8]: Decimal('1000000') ``` 100 万测试以太币,也不算太寒酸。 -## 第二站:区块数据 {#tour-stop-2-block-data} +## 概览第二站:区块数据 {#tour-stop-2-block-data} -我们来看看这个模拟区块链的状态。 +我们来看看这个模拟区块链的状态: ```python In [9]: w3.eth.get_block('latest') @@ -236,28 +236,31 @@ Out[9]: AttributeDict({ 这里返回了大量关于区块的信息,但这里只介绍以下几点: -- 该区块编号是零  —无论您在多久以前配置了测试器提供者。 与每 12 秒添加一个新区块的真实以太坊网络不同,此模拟区块链则需要你给它一些工作去做才添加区块。 +- 该区块编号是零 —无论你在多久以前配置了测试器提供者。 与每 12 秒添加一个新区块的真实以太坊网络不同,此模拟区块链则需要你给它一些工作去做才添加区块。 - `transactions` 是一个空列表,原因相同:我们还没有做任何事情。 第一个区块是一个**空区块**,只是为了开个头。 - 注意,`parentHash` 只是一堆空的字节。 这标志着它是链条上的第一个区块,也就是所谓的**创世区块**。 -## 第三站:[ 交易 ](/developers/docs/transactions/) {#tour-stop-3-transactions} +## 概览第三站:[交易](/developers/docs/transactions/) {#tour-stop-3-transactions} -在没有待处理交易之前,我们停留在零区块处,所以我们给它一个交易。 从一个账户向另一个账户发送一些测试 ETH: +在没有待处理交易之前,我们停留在零区块处,所以我们给它一个交易。 从一个帐户向另一个帐户发送一些测试 ETH: ```python In [10]: tx_hash = w3.eth.send_transaction({ 'from': w3.eth.accounts[0], 'to': w3.eth.accounts[1], - 'value': w3.toWei(3, 'ether'), + 'value': w3.to_wei(3, 'ether'), 'gas': 21000 }) ``` 这时你通常会等上几秒钟,等待交易添加到新区块中。 完整的流程是这样的: -1. 提交交易并持有交易哈希。 在包含交易的区块被创建并广播之前,交易一直处于“待处理”状态。 `tx_hash = w3.eth.send_transaction({ … })` -2. 等待交易添加到区块中: `w3.eth.wait_for_transaction_receipt(tx_hash)` -3. 继续应用逻辑。 查看成功的交易:`w3.eth.get_transaction(tx_hash)` +1. 提交交易并持有交易哈希。 在包含交易的区块被创建并广播之前,交易一直处于“待处理”状态。 + `tx_hash = w3.eth.send_transaction({ … })` +2. 等待交易被纳入区块: + `w3.eth.wait_for_transaction_receipt(tx_hash)` +3. 继续应用逻辑。 要查看成功交易: + `w3.eth.get_transaction(tx_hash)` 我们的模拟环境会在一个新的区块中即时添加交易,所以我们可以立即查看交易: @@ -274,22 +277,24 @@ Out[11]: AttributeDict({ }) ``` -您将在这里看到一些熟悉的细节:`from`、`to `和 `value `字段应该与 `send_transaction `调用的输入相匹配。 另一个令人欣慰的是,这项交易被列为 1 号区块内的第一笔交易(`'transactionIndex': 0`)。 +你将在这里看到一些熟悉的细节:`from`、`to` 和 `value` 字段应该与我们 `send_transaction` 调用的输入相匹配。 另一个令人欣慰的是,这项交易被列为 1 号区块内的第一笔交易(`'transactionIndex': 0`)。 我们也可以通过检查两个相关帐户的余额,轻松验证此次交易是否成功。 三个 ETH 应从一个帐户转移到另一个帐户。 ```python In [12]: w3.eth.get_balance(w3.eth.accounts[0]) -Out[12]: 999996999999999999969000 +Out[12]: 999996999979000000000000 In [13]: w3.eth.get_balance(w3.eth.accounts[1]) Out[13]: 1000003000000000000000000 ``` -后者看起来不错! 余额从 1000000 增加到 1000003 个 ETH。 但第一个账户发生了什么情况? 它减少的数量看起来略大于三个 ETH? 是的,没有免费的午餐,使用以太坊公网需要支付矿工手续费, 一笔小额交易费从进行交易的帐户中扣除,金额为 31000 wei。 +后者看起来不错! 余额从 1,000,000 增加到 1,000,003 个 ETH。 但第一个帐户发生了什么情况? 它减少的数量看起来略大于三个 ETH? 是的,没有免费的午餐,使用以太坊公网需要向为你提供支持的对等节点支付报酬。 从提交交易的帐户中扣除一小笔交易费用——这笔费用是燃料消耗量(ETH 转账需消耗 21000 单位燃料)乘以根据网络活动而变化的基本费用,再加上给将交易打包到区块中的验证者的小费。 + +更多关于[燃料](/developers/docs/gas/#post-london)的信息 -注:在公共网络上,交易费用根据网络需求和您希望交易处理的速度而变化。 如果您对费用的计算方式感兴趣,请查看我之前关于如何将交易包含在一个区块中的文章。 +注:在公共网络上,交易费用根据网络需求和你希望交易处理的速度而变化。 如果你对费用的计算方式感兴趣,请查看我之前关于如何将交易包含在一个区块中的文章。 -## 结尾 {#and-breathe} +## 喘口气 {#and-breathe} -我们已经学习一段时间,现在可以休息一下。 要学习的内容还有很多,我们将在本系列的第二部分继续进行探索。 探索这些概念:连接真实节点、智能合约和代币, 仍有后续问题? 请告诉我! 您的反馈对我们今后的学习至关重要! 欢迎通过 [Twitter](https://twitter.com/wolovim) 与我联系。 +我们已经学习一段时间,现在可以休息一下。 要学习的内容还有很多,我们将在本系列的第二部分继续进行探索。 即将介绍的概念:连接真实节点、智能合约和代币。 仍有后续问题? 请告诉我! 你的反馈对我们今后的学习至关重要! 欢迎通过 [Twitter](https://twitter.com/wolovim) 提出请求。 From fc5a63628c3735b3bd9cfb26119a0f8a095c36ab Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:19 -0800 Subject: [PATCH 142/581] update(i18n): public/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md --- .../client-diversity/index.md | 91 ++++++++++++------- 1 file changed, 56 insertions(+), 35 deletions(-) diff --git a/public/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md index 899b267a6c6..b1400d19f6f 100644 --- a/public/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md +++ b/public/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md @@ -9,7 +9,7 @@ sidebarDepth: 2 ## 前提条件 {#prerequisites} -如果你还不了解什么是节点和客户端,请查看[节点和客户端](/developers/docs/nodes-and-clients/)。 [执行层](/glossary/#execution-layer)和[共识层](/glossary/#consensus-layer)的定义见词汇表。 +如果您还不了解什么是节点和客户端,请查阅[节点和客户端](/developers/docs/nodes-and-clients/)。 术语表中对[执行层](/glossary/#execution-layer)和[共识层](/glossary/#consensus-layer)进行了定义。 ## 为什么会有多种客户端? {#why-multiple-clients} @@ -23,11 +23,11 @@ sidebarDepth: 2 当代表少数以太坊节点时,一种客户端中的漏洞对网络的风险较小。 由于许多客户端的节点分布大致均匀,大多数客户端出现同一问题的可能性很小,因此网络更加稳健。 -### 抵御攻击 {#resilience} +### 抗攻击能力 {#resilience} -客户端多样性还提供了抵御攻击的能力。 例如,要[欺骗特定客户端](https://twitter.com/vdWijden/status/1437712249926393858)让其接受链的某条分支,这种攻击不太可能成功,因为不大可能以相同方式利用其他客户端,并且规范链未损坏。 客户端多样性程度低增加了主要客户端受到黑客攻击的风险。 已经证实,客户端多样性是抵御网络受到恶意攻击的重要防御手段,例如,由于攻击者能够欺骗主要客户端 (Geth) 对每个区块执行数万次慢速磁盘输入/输出操作,2016 年的上海拒绝服务攻击得以实施。 由于有其他客户端在线且没有同样的漏洞,因此以太坊能够抵抗那次攻击并继续运行,同时修复了 Geth 中的漏洞。 +客户端多样性还提供了抵御攻击的能力。 例如,一种[欺骗特定客户端](https://twitter.com/vdWijden/status/1437712249926393858)使其接受链的特定分叉的攻击不太可能成功,因为其他客户端不太可能以同样的方式被利用,并且规范链仍未损坏。 客户端多样性程度低增加了主要客户端受到黑客攻击的风险。 已经证实,客户端多样性是抵御网络受到恶意攻击的重要防御手段,例如,由于攻击者能够欺骗主要客户端 (Geth) 对每个区块执行数万次慢速磁盘输入/输出操作,2016 年的上海拒绝服务攻击得以实施。 由于有其他客户端在线且没有同样的漏洞,因此以太坊能够抵抗那次攻击并继续运行,同时修复了 Geth 中的漏洞。 -### 权益证明的最终确定性 {#finality} +### 权益证明的确定性 {#finality} 超过 33% 的以太坊节点的共识客户端中有一个漏洞,它可能会阻止共识层的最终确定,这意味着用户无法相信交易不会在某些时候被回滚或更改。 对于许多建立在以太坊之上的应用程序,尤其是去中心化金融,这将是一个很大的问题。 @@ -35,19 +35,45 @@ sidebarDepth: 2 尽管这些情况不太可能发生,但为了降低这类风险,以太坊生态系统可以使客户端均衡分布在活跃节点上。 理想情况下,任何共识客户端任何时候都不会达到总节点数的 33%。 -### 共担责任 {#responsibility} +### 共同责任 {#responsibility} 采用主流客户端也需要人力成本。 这给小型开发团队带来了过多的压力和责任。 客户端多样性程度越低,维护主流客户端的开发者的责任负担就越大。 将这一责任分摊到多个团队,既有利于以太坊节点网络的健康,也有益于相关人员的健康。 -## 客户端多样性现状 {#current-client-diversity} +## 当前客户端多样性 {#current-client-diversity} -![显示客户端多样性的饼状图](./client-diversity.png) _图表数据来自 [ethernodes.org](https://ethernodes.org) 和 [ clientdiversity.org](https://clientdiversity.org/)_ +### 执行客户端 {#execution-clients-breakdown} -上面的两个饼图显示了执行层和共识层客户端多样性现状的快照(在 2022 年 1 月撰写本文时)。 在执行层,[Geth](https://geth.ethereum.org/) 占据绝对主导地位,[Open Ethereum ](https://openethereum.github.io/) 以极大的差距位居第二,[Erigon](https://github.com/ledgerwatch/erigon) 和 [Nethermind](https://nethermind.io/) 分别占据第三和第四,其他客户端加起来占网络的比例不到 1%。 共识层最常用的客户端 [Prysm](https://prysmaticlabs.com/#projects) 不像 Geth 那样占据绝对主导地位,但仍占有网络的 60% 以上。 [Lighthouse](https://lighthouse.sigmaprime.io/) 和 [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) 分别占据约 20% 和约 14%,其他客户端很少使用。 + -2022 年 1 月 23 日,从 [Ethernodes](https://ethernodes.org) 获得执行层数据。 共识客户端的数据来自 [Michael Sproul](https://github.com/sigp/blockprint)。 共识客户端数据更难获取,因为共识层客户端并不总是具有可以用来识别它们的明确痕迹。 这些数据是使用分类算法生成的,该算法有时会混淆一些非主流客户端(点击[此处](https://twitter.com/sproulM_/status/1440512518242197516)了解更多详细信息)。 在上图中,这些含糊的分类使用了“/”符号进行处理(例如 Nimbus/Teku)。 尽管如此,很明显大部分网络都在运行 Prysm。 这些数据是一组固定区块的快照(在本例中为时隙 2048001 与 2164916 之间的信标区块),Prysm 的主导地位曾经一度更高,超过 68%。 尽管只是快照,但上图中的数值可以让你清晰地了解客户端多样性现状的全局。 +### 共识客户端 {#consensus-clients-breakdown} -现在,可以在 [clientdiversity.org](https://clientdiversity.org/) 查阅最新的共识层客户端多样性数据。 + + +此图表可能已过时 — 请访问 [ethernodes.org](https://ethernodes.org) 和 [clientdiversity.org](https://clientdiversity.org) 获取最新信息。 + +以上两个饼图显示了执行层和共识层当前客户端多样性的快照(撰文时为 2025 年 10 月)。 多年来,客户端多样性已得到改善,执行层中 [Geth](https://geth.ethereum.org/) 的主导地位有所下降,[Nethermind](https://www.nethermind.io/nethermind-client) 紧随其后,[Besu](https://besu.hyperledger.org/) 位列第三,[Erigon](https://github.com/ledgerwatch/erigon) 位列第四,其他客户端占网络的不到 3%。 共识层最常用的客户端 —[Lighthouse](https://lighthouse.sigmaprime.io/)— 的使用率与第二常用的客户端非常接近。 [Prysm](https://prysmaticlabs.com/#projects) 和 [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) 分别约占 31% 和 14%,而其他客户端则很少被使用。 + +执行层数据于 2025 年 10 月 26 日获取自 [supermajority.info](https://supermajority.info/)。 共识客户端的数据来自 [Michael Sproul](https://github.com/sigp/blockprint)。 共识客户端数据更难获取,因为共识层客户端并不总是具有可以用来识别它们的明确痕迹。 这些数据是使用分类算法生成的,该算法有时会混淆一些非主流客户端(更多详细信息请见[此处](https://twitter.com/sproulM_/status/1440512518242197516))。 在上图中,这些含糊的分类使用了“/”符号进行处理(例如 Nimbus/Teku)。 尽管如此,很明显大部分网络都在运行 Prysm。 尽管只是快照,但上图中的数值可以让你清晰地了解客户端多样性现状的全局。 + +有关共识层客户端多样性的最新数据现在可在 [clientdiversity.org](https://clientdiversity.org/) 上获取。 ## 执行层 {#execution-layer} @@ -55,33 +81,26 @@ sidebarDepth: 2 ## 使用非主流客户端 {#use-minority-client} -解决客户端多样性问题不仅需要个人用户选择非主流客户端,还需要矿池/验证者池以及主要去中心应用程序和交易所等机构改用客户端。 然而,所有用户都可以尽一份力量,纠正目前的失衡状况并且实现所有可用以太坊软件的使用正常化。 合并后,所有节点运营商都需要运行执行客户端和共识客户端。 选择下面建议的客户端组合将有助于提高客户端多样性。 +解决客户端多样性问题,不仅需要个人用户选择非主流客户端——还需要验证者池以及大型去中心化应用程序和交易所这样的机构也一同切换客户端。 然而,所有用户都可以尽一份力量,纠正目前的失衡状况并且实现所有可用以太坊软件的使用正常化。 合并后,所有节点运营商都需要运行执行客户端和共识客户端。 选择下面建议的客户端组合将有助于提高客户端多样性。 ### 执行客户端 {#execution-clients} -[Besu](https://www.hyperledger.org/use/besu) - -[Nethermind](https://downloads.nethermind.io/) - -[Erigon](https://github.com/ledgerwatch/erigon) - -[Go-Ethereum](https://geth.ethereum.org/) +- [Besu](https://www.hyperledger.org/use/besu) +- [Nethermind](https://downloads.nethermind.io/) +- [Erigon](https://github.com/ledgerwatch/erigon) +- [Go-Ethereum](https://geth.ethereum.org/) +- [Reth](https://reth.rs/) ### 共识客户端 {#consensus-clients} -[Nimbus](https://nimbus.team/) +- [Nimbus](https://nimbus.team/) +- [Lighthouse](https://github.com/sigp/lighthouse) +- [Teku](https://consensys.io/teku) +- [Lodestar](https://github.com/ChainSafe/lodestar) +- [Prysm](https://prysm.offchainlabs.com/docs/) +- [Grandine](https://docs.grandine.io/) -[Lighthouse](https://github.com/sigp/lighthouse) - -[Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) - -[Lodestar](https://github.com/ChainSafe/lodestar) - -[Prysm](https://prysm.offchainlabs.com/docs/) - -[Grandine](https://docs.grandine.io/) - -技术用户可以为非主流客户端编写更多教程和相关文档,并鼓励他们运营节点的对等体从主流客户端迁离,帮助加快这一进程。 [clientdiversity.org](https://clientdiversity.org/) 提供了改用非主流共识客户端的指南。 +技术用户可以为非主流客户端编写更多教程和相关文档,并鼓励他们运营节点的对等体从主流客户端迁离,帮助加快这一进程。 有关切换到非主流共识客户端的指南,请访问 [clientdiversity.org](https://clientdiversity.org/)。 ## 客户端多样性仪表板 {#client-diversity-dashboards} @@ -90,22 +109,24 @@ sidebarDepth: 2 **共识层:** - [Rated.network](https://www.rated.network/) -- [clientdiversity.org](https://clientdiversity.org/) **执行层:** +- [clientdiversity.org](https://clientdiversity.org/) + +**执行层:** - [supermajority.info](https://supermajority.info//) - [Ethernodes](https://ethernodes.org/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [以太坊共识层的客户端多样性](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) -- [以太坊合并:运行主流客户端须自担风险!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest,2022 年 3 月 24 日_ +- [以太坊合并:运行多数客户端,风险自负!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest,2022 年 3 月 24 日_ - [客户端多样性的重要性](https://our.status.im/the-importance-of-client-diversity/) - [以太坊节点服务列表](https://ethereumnodes.com/) -- [客户端多样性问题的“五个原因”](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08) +- [客户端多样性问题的“五个为什么”](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08) - [以太坊多样性及其解决方法 (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU) - [clientdiversity.org](https://clientdiversity.org/) -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} - [运行以太坊节点](/run-a-node/) - [节点和客户端](/developers/docs/nodes-and-clients/) From 3f9f0d9fda0696bffe29f1ba6bee68409a46a047 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:22 -0800 Subject: [PATCH 143/581] update(i18n): public/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md --- .../nodes-as-a-service/index.md | 152 ++++++++++-------- 1 file changed, 82 insertions(+), 70 deletions(-) diff --git a/public/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md index 37526266521..84195e9be23 100644 --- a/public/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md +++ b/public/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md @@ -7,17 +7,17 @@ sidebarDepth: 2 ## 简介 {#Introduction} -运行自己的 [以太坊](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients)节点可能会比较困难,特别是在刚开始时或在快速扩展时。 [许多服务](#popular-node-services)都可以为你运行优化的节点基础设施,藉此,你可以专注于开发你的应用程序或产品。 我们将解释节点服务运行的原理以及它们的优缺点,并列出供应商,如果有兴趣,就着手开始吧。 +运行自己的[以太坊节点](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients)可能具有挑战性,尤其是在入门或快速扩容时。 有许多[服务](#popular-node-services)可以为您运行优化的节点基础架构,以便您可以专注于开发应用程序或产品。 我们将解释节点服务运行的原理以及它们的优缺点,并列出供应商,如果有兴趣,就着手开始吧。 ## 前提条件 {#prerequisites} -如果你还不了解什么是节点和客户端,请查看[节点和客户端](/developers/docs/nodes-and-clients/)。 +如果您还不了解什么是节点和客户端,请查阅[节点和客户端](/developers/docs/nodes-and-clients/)。 -## 质押人 {#stakoooooooooooooors} +## 质押者 {#stakoooooooooooooors} -单独的质押人必须运行自己的基础设施,而不是依赖第三方提供商。 这意味着运行一个执行客户端和一个共识客户端。 在[合并](/roadmap/merge)之前,可以只运行共识客户端并通过中心化的提供商来获取执行数据;但现在已不存在这种情况——单独的质押人必须同时运行两种客户端。 但是,有一些服务可以简化这个过程。 +单独的质押人必须运行自己的基础设施,而不是依赖第三方提供商。 这意味着运行一个执行客户端和一个共识客户端。 在[合并](/roadmap/merge)之前,可以只运行一个共识客户端,并使用一个中心化的提供商来获取执行数据;现在已经不行了——个人质押者必须同时运行两种客户端。 但是,有一些服务可以简化这个过程。 -[阅读有关运行节点的更多信息](/developers/docs/nodes-and-clients/run-a-node/)。 +[阅读更多关于运行节点的内容](/developers/docs/nodes-and-clients/run-a-node/)。 本页描述的服务适用于非质押节点。 @@ -25,13 +25,13 @@ sidebarDepth: 2 节点服务提供商在幕后为你运行分布式节点客户端,因此你无需自己运行。 -这些服务通常提供一个可用来写入和读取区块链的应用程序接口密钥。 除了主网之外,通常还包括[以太坊测试网](/developers/docs/networks/#ethereum-testnets)访问权限。 +这些服务通常提供一个可用来写入和读取区块链的应用程序接口密钥。 除了主网,它们通常还包括对[以太坊测试网](/developers/docs/networks/#ethereum-testnets)的访问权限。 有些服务提供你自己的专用节点但由他们代为管理,而另外一些服务则使用负载均衡器在各节点之间分配活动。 几乎所有的节点服务都非常容易集成,只需要在你的代码中修改一行,就可以替换你自己的托管节点,甚至可以在服务本身之间切换。 -通常节点服务会运行各种[节点客户端](/developers/docs/nodes-and-clients/#execution-clients)和[节点](/developers/docs/nodes-and-clients/#node-types),使得用户可以通过一个应用程序接口访问全节点和归档节点以及客户端特定方法。 +节点服务通常会运行各种[节点客户端](/developers/docs/nodes-and-clients/#execution-clients)和[类型](/developers/docs/nodes-and-clients/#node-types),让您除了可以通过一个 API 访问客户端的特定方法外,还可以访问完整节点和存档节点。 值得注意的是,节点服务不存储也不应该存储你的私钥或信息。 @@ -45,15 +45,15 @@ sidebarDepth: 2 使用节点服务,你产品的基础设施部分走向了中心化。 因此,可能更喜欢对那些极为注重去中心化的项目采用自我托管节点,而不是外包给第三方。 -详细了解[运行自己节点的好处](/developers/docs/nodes-and-clients/#benefits-to-you)。 +阅读更多关于[运行您自己的节点的好处](/developers/docs/nodes-and-clients/#benefits-to-you)。 -## 主流节点服务 {#popular-node-services} +## 热门节点服务 {#popular-node-services} 下面列出了一些最受欢迎的以太坊节点服务提供商,如有遗漏,欢迎随时补充! 每种节点服务除了免费或付费层级外,还提供各种好处和功能。做出决定之前,你应该调查哪些服务最符合自己的需求。 - [**Alchemy**](https://alchemy.com/) - - [相关文档](https://docs.alchemyapi.io/) - - 特性 + - [文档](https://www.alchemy.com/docs/) + - 功能 - 最大的免费层级,每月有 3 亿个计算单元(约 3000 万个 getLatestBlock 请求) - 对 Polygon、Starknet、Optimism、Arbitrum 的多链支持 - 为大约 70% 的以太坊去中心化应用程序和去中心化金融最大交易量提供支持 @@ -64,8 +64,21 @@ sidebarDepth: 2 - 集成了测试网水龙头访问权限 - 拥有 1.8 万用户的活跃 Discord 构建者社区 +- [**Allnodes**](https://www.allnodes.com/) + - [文档](https://docs.allnodes.com/) + - 功能 + - 在 Allnodes 投资组合页面上创建的 PublicNode 代币无速率限制。 + - 在 [PublicNode](https://www.publicnode.com) 上提供注重隐私的免费 RPC 端点(100 多个区块链) + - 为 90+ 区块链提供无速率限制的专用节点 + - 为 30+ 区块链提供专用归档节点 + - 在 3 个地区可用(美国、欧盟、亚洲) + - 在 [PublicNode](https://www.publicnode.com/snapshots) 上提供 100 多个区块链的快照 + - 提供全天候技术支持,正常运行时间 SLA 为 99.90%-99.98%(取决于套餐)。 + - 按小时计费定价 + - 使用信用卡、PayPal 或加密货币支付 + - [**All That Node**](https://allthatnode.com/) - - [相关文档](https://docs.allthatnode.com/) + - [文档](https://docs.allthatnode.com/) - 功能 - 免费套餐每天 50,000 个请求 - 支持 40 多种协议 @@ -78,8 +91,8 @@ sidebarDepth: 2 - 自动更新 - [**Amazon Managed Blockchain**](https://aws.amazon.com/managed-blockchain/) - - [相关文档](https://aws.amazon.com/managed-blockchain/resources/) - - 特性 + - [文档](https://aws.amazon.com/managed-blockchain/resources/) + - 功能 - 完全托管的以太坊节点 - 可在六个地区使用 - 基于 HTTP 的 JSON-RPC 和安全 WebSockets @@ -88,8 +101,8 @@ sidebarDepth: 2 - Go-ethereum 和 Lighthouse - [**Ankr**](https://www.ankr.com/) - - [相关文档](https://docs.ankr.com/) - - 特性 + - [文档](https://docs.ankr.com/) + - 功能 - Ankr 协议 - 在超过 8 条链上开放式访问公共远程过程调用应用程序接口端点 - 通过负载均衡和节点健康监测,为最近可用节点提供快速可靠的网关 - 启用网络套接字安全端点和无速率上限的高级套餐 @@ -101,8 +114,8 @@ sidebarDepth: 2 - 直接支持 - [**Blast**](https://blastapi.io/) - - [相关文档](https://docs.blastapi.io/) - - 特性 + - [文档](https://docs.blastapi.io/) + - 功能 - 远程过程调用和网络套接字安全支持 - 多区域节点托管 - 去中心化基础设施 @@ -116,15 +129,15 @@ sidebarDepth: 2 - 加密货币支付 - [**BlockDaemon**](https://blockdaemon.com/) - - [相关文档](https://ubiquity.docs.blockdaemon.com/) + - [文档](https://ubiquity.docs.blockdaemon.com/) - 好处 - - 管理面板 + - 仪表板 - 基于每个节点 - 分析 - [**BlockPI**](https://blockpi.io/) - - [相关文档](https://docs.blockpi.io/) - - 特性 + - [文档](https://docs.blockpi.io/) + - 功能 - 稳健的分布式节点结构 - 多达 40 个安全套接字层超文本传输协议和网络套接字安全端点 - 免费注册套餐和月度套餐 @@ -135,44 +148,44 @@ sidebarDepth: 2 - 直接支持与技术支持 - [**Chainbase**](https://www.chainbase.com/) - - [相关文档](https://docs.chainbase.com) - - 特性 + - [文档](https://docs.chainbase.com) + - 功能 - 高可用性、高速和可扩展的远程过程调用服务 - 多链支持 - 不收费 - 用户友好的仪表板 - 提供远程过程调用之外的区块链数据服务 -- [**ChainStack**](https://chainstack.com/) - - [相关文档](https://docs.chainstack.com/) +- [**Chainstack**](https://chainstack.com/) + - [文档](https://docs.chainstack.com/) - 功能 - 免费共享节点 - 共享归档节点 - GraphQL 支持 - - 远程过程调用和网络套接字安全端点 + - RPC 、 HTTPS 和 WSS 端点 - 专用全节点和归档节点 - 专用部署的快速同步时间 - - 使用自己的云服务 + - 使用自己的云端服务 - 按小时计费定价 - 全天候直接支持 -- [**DRPC**](https://drpc.org/) - - [相关文档](https://docs.drpc.org/) - - 特性 - - 去中心化远程过程调用节点 - - 超过 15 个节点提供商 - - 节点平衡 - - 免费套餐每月计算单元无限制 - - 数据验证 - - 自定义端点 - - HTTP 和 WSS 端点 - - 无限密钥(免费和付费套餐) - - 灵活的回退选项 - - [公共端点](https://eth.drpc.org) - - 免费共享归档节点 +- [**dRPC**](https://drpc.org/) + - [文档](https://drpc.org/docs) + - NodeCloud:即插即用型 RPC 基础设施,10 美元起步——全速,无限制 + - NodeCloud 特性: + - 支持 185 个网络的 API + - 由 40 多个提供商组成的分布式池 + - 九 (9) 个地理集群实现全球覆盖 + - 人工智能驱动的负载均衡系统 + - 按需付费的统一定价——无涨价、无期限、无锁仓 + - 无限密钥、精细密钥调整、团队角色、前端保护 + - 每个方法固定费率为 20 个计算单元 (CU) + - [公共端点链列表](https://drpc.org/chainlist) + - [价格计算器](https://drpc.org/pricing#calculator) + - NodeCore:为希望完全控制的组织提供的开源堆栈 - [**GetBlock**](https://getblock.io/) - - [相关文档](https://getblock.io/docs/get-started/authentication-with-api-key/) + - [文档](https://getblock.io/docs/get-started/authentication-with-api-key/) - 功能 - 访问超过 40 个区块链节点 - 4 万个每日免费请求 @@ -196,7 +209,7 @@ sidebarDepth: 2 - 访问超过 50 个区块链节点 - [**Infura**](https://infura.io/) - - [相关文档](https://infura.io/docs) + - [文档](https://infura.io/docs) - 功能 - 免费套餐选项 - 随时扩容 @@ -205,18 +218,18 @@ sidebarDepth: 2 - 仪表板 - [**Kaleido**](https://kaleido.io/) - - [相关文档](https://docs.kaleido.io/) + - [文档](https://docs.kaleido.io/) - 功能 - - 免费初学者套餐 + - 免费初学者层级 - 一键部署以太坊节点 - 可自定义的客户端和算法(Geth、Quorum 和 Besu || PoA、IBFT 和 Raft) - 500 多个管理和服务应用程序接口 - 用于提交以太坊交易的 RESTful 接口(支持 Apache Kafka) - 用于事件传送的出站流(支持 Apache Kafka) - - “链下”和辅助服务的深度集合(例如双边加密消息传输) + - 大量的“链下”和辅助服务(例如,双边加密消息传输) - 简单明了的配置入网,提供治理和基于角色的访问控制 - 适用于管理员和最终用户的精细用户管理 - - 高度可扩展、复原力强的企业级基础设施 + - 高度可扩展、恢复力强的企业级基础设施 - Cloud HSM 私钥管理 - 以太坊主网网络共享 - ISO 27k 和 SOC 2 Type 2 认证 @@ -226,7 +239,7 @@ sidebarDepth: 2 - 服务等级协议和全天候支持 - [**Lava Network**](https://www.lavanet.xyz/) - - [相关文档](https://docs.lavanet.xyz/) + - [文档](https://docs.lavanet.xyz/) - 功能 - 免费使用测试网 - 适用于高正常运行时间的去中心化冗余 @@ -238,7 +251,7 @@ sidebarDepth: 2 - 多链支持 - [**Moralis**](https://moralis.io/) - - [相关文档](https://docs.moralis.io/) + - [文档](https://docs.moralis.io/) - 功能 - 免费共享节点 - 免费共享归档节点 @@ -248,10 +261,10 @@ sidebarDepth: 2 - 仪表板 - 独特的以太坊软件开发工具包 - 独有的应用程序接口端点 - - 直接技术支持 + - 点对点技术支持 - [**NodeReal MegaNode**](https://nodereal.io/) - - [相关文档](https://docs.nodereal.io/docs/introduction) + - [文档](https://docs.nodereal.io/docs/introduction) - 功能 - 可靠、快速而且可扩展的远程过程调用应用程序接口服务 - 面向 Web3 开发者的增强型应用程序接口 @@ -278,7 +291,7 @@ sidebarDepth: 2 - Pre-Stake+ 计划(如果你每天需要超过 100 万个请求) - 支持超过 15 条区块链 - 6400 多个节点为应用程序服务并赚取 POKT - - 归档节点、包含追踪数据的归档节点及测试网节点支持 + - 归档节点、带跟踪的归档节点和测试网节点支持 - 以太坊主网节点客户端多样性 - 无单点故障 - 零停机 @@ -286,22 +299,22 @@ sidebarDepth: 2 - 无每月沉没成本,将你的基础设施变成资产 - 协议中内置负载均衡 - 随时无限增加每日请求数量和每小时节点数量 - - 最私密的抗审查选项 + - 最隐密的抗审查选择 - 开发者实战支持 - [Pocket Portal](https://bit.ly/ETHorg_POKTportal) 仪表板和分析 - [**QuickNode**](https://www.quicknode.com) - [文档](https://www.quicknode.com/docs/) - 功能 - - 全天候技术支持和开发者 Discord 社区 + - 全天候技术支持和开发人员 Discord 社区 - 区域负载均衡、多云端/元模型、低延迟网络 - 多链支持(Optimism、Arbitrum、Polygon 及 11 个其他网络) - - 快速且稳定的中间层(调用路由、缓存、索引) + - 用于提高速度和稳定性的中间层(调用路由、缓存、索引) - 通过网络钩子进行智能合约监控 - 直观的仪表板、分析套件、远程过程调用编写器 - 高级安全功能(JWT、屏蔽、白名单) - 非同质化代币数据和分析应用程序接口 - - [已获 SOC2 认证](https://www.quicknode.com/security) + - [SOC2 认证](https://www.quicknode.com/security) - 适用于企业开发者 - [**Rivet**](https://rivet.cloud/) @@ -320,13 +333,13 @@ sidebarDepth: 2 - [**SettleMint**](https://console.settlemint.com/) - [文档](https://docs.settlemint.com/) - - 特性 + - 功能 - 免费试用 - 随时扩容 - GraphQL 支持 - - 远程过程调用和网络套接字安全端点 + - RPC 、 HTTPS 和 WSS 端点 - 专用全节点 - - 使用自己的云服务 + - 使用自己的云端服务 - 分析工具 - 仪表板 - 按小时计费定价 @@ -334,7 +347,7 @@ sidebarDepth: 2 - [**Tenderly**](https://tenderly.co/web3-gateway) - [文档](https://docs.tenderly.co/web3-gateway/web3-gateway) - - 特性 + - 功能 - 免费套餐包含每月 2500 万个 Tenderly 单位 - 免费访问历史数据 - 读取繁重型工作负载的速度最多提高 8 倍 @@ -349,8 +362,8 @@ sidebarDepth: 2 - [**Tokenview**](https://services.tokenview.io/) - [文档](https://services.tokenview.io/docs?type=nodeService) - - 特性 - - 全天候技术支持和开发者 Telegram 社区 + - 功能 + - 全天候技术支持和开发人员 Telegram 社区 - 多链支持(比特币、以太坊、Tron、BNB Smart Chain 和以太坊经典) - RPC 和 WSS 端点均开放使用 - 无限制访问归档数据应用程序接口 @@ -361,7 +374,7 @@ sidebarDepth: 2 - [**Watchdata**](https://watchdata.io/) - [文档](https://docs.watchdata.io/) - - 特性 + - 功能 - 数据可靠性 - 不间断连接,不会出现停机 - 过程自动化 @@ -373,7 +386,7 @@ sidebarDepth: 2 - [**ZMOK**](https://zmok.io/) - [文档](https://docs.zmok.io/) - - 特性 + - 功能 - 前台运行即服务 - 带有搜索/过滤方法的全局交易内存池 - 发送交易时,交易手续费和燃料均不受限制 @@ -382,21 +395,20 @@ sidebarDepth: 2 - [**Zeeve**](https://www.zeeve.io/) - [文档](https://www.zeeve.io/docs/) - - 特性 + - 功能 - 企业级无代码自动化平台,提供区块链节点和网络的部署、监控和管理 - - 超过 30 种支持的协议与集成,种类还在增加 + - 支持超过 30 种协议与集成,且仍在不断增加 - 增值型 Web3 基础设施服务,如去中心化存储、去中心化身份和用于真实世界用例的区块链账本数据应用程序接口 - 全天候支持和主动监控始终确保节点的健康 - 远程过程调用端点提供对应用程序接口的验证访问,并通过直观的仪表板和分析实现无忧管理。 - 提供托管云和自带云选项,支持所有主要云服务提供商,例如 AWS、Azure、Google Cloud、Digital Ocean 和本地服务 - 我们每次都会通过智能路由接入到距离你的用户最近的节点 - -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} - [以太坊节点服务列表](https://ethereumnodes.com/) -## 相关主题 {#related-topics} +## 相关话题 {#related-topics} - [节点和客户端](/developers/docs/nodes-and-clients/) From fd50835af8b77c934fe2b1f400b9a38161484992 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:26 -0800 Subject: [PATCH 144/581] update(i18n): public/content/translations/zh/developers/docs/scaling/zk-rollups/index.md --- .../docs/scaling/zk-rollups/index.md | 127 +++++++++--------- 1 file changed, 65 insertions(+), 62 deletions(-) diff --git a/public/content/translations/zh/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/zh/developers/docs/scaling/zk-rollups/index.md index 7ade72b6bba..7ea69b6fa76 100644 --- a/public/content/translations/zh/developers/docs/scaling/zk-rollups/index.md +++ b/public/content/translations/zh/developers/docs/scaling/zk-rollups/index.md @@ -4,33 +4,33 @@ description: 零知识卷叠简介 — 以太坊社区使用的一种扩容解 lang: zh --- -零知识卷叠(ZK 卷叠)是二层网络[扩容解决方案](/developers/docs/scaling/),通过将计算和状态存储转移到链下进行提高了以太坊主网吞吐量。 零知识卷叠可以处理一个批次中的数千笔交易,但仅将一部分最少量的摘要数据发布到主网。 这些摘要数据确定了应对以太坊状态进行的变化以及一些证明这些变化正确性的加密证明。 +零知识卷叠 (ZK-rollups) 是二层 [扩容解决方案](/developers/docs/scaling/),通过将计算和状态存储移至脱链,来提高以太坊主网的吞吐量。 零知识卷叠可以处理一个批次中的数千笔交易,但仅将一部分最少量的摘要数据发布到主网。 这些摘要数据确定了应对以太坊状态进行的变化以及一些证明这些变化正确性的加密证明。 ## 前提条件 {#prerequisites} -你应该已经阅读并理解关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2)的页面。 +你应该已经阅读并理解我们关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2)的页面。 -## 什么是零知识卷叠? {#what-are-zk-rollups} +## 什么是零知识卷叠? 什么是零知识卷叠?{#what-are-zk-rollups} -**零知识卷叠(ZK 卷叠)**将在链下执行的交易打包(或“卷叠”)成批。 链下计算减少了必须发布到区块链的数据量。 零知识卷叠运营商提交用于表示批次中所有交易的变化摘要,而不是单独发送每笔交易。 他们还生成[有效性证明](/glossary/#validity-proof)来证明状态变化的正确性。 +**零知识卷叠 (ZK-rollups)** 将交易捆绑(或“卷叠”)成批次,并在脱链执行。 链下计算减少了必须发布到区块链的数据量。 零知识卷叠运营商提交用于表示批次中所有交易的变化摘要,而不是单独发送每笔交易。 它们还生成[有效性证明](/glossary/#validity-proof)来证明其变更的正确性。 -零知识卷叠的状态由部署在以太坊网络上的智能合约维护。 为了更新这个状态,零知识卷叠节点必须提交一个有效性证明进行验证。 如前所述,有效性证明是一种加密保证,即卷叠提出的状态变化确实是执行给定批次交易的结果。 这意味着零知识卷叠只需提供有效性证明即可在以太坊上最终确定交易,而不是像[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)那样将所有交易数据发布到链上。 +零知识卷叠的状态由部署在以太坊网络上的智能合约维护。 为了更新这个状态,零知识卷叠节点必须提交一个有效性证明进行验证。 如前所述,有效性证明是一种加密保证,即卷叠提出的状态变化确实是执行给定批次交易的结果。 这意味着零知识卷叠只需提供有效性证明即可在以太坊上最终确定交易,而无需像[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)那样将所有交易数据发布到链上。 -将资金从零知识卷叠转移到以太坊时不会出现延迟,因为一旦零知识卷叠合约验证了有效性证明后,就会执行退出交易。 相反,从乐观卷叠中提取资金会产生延迟,让任何人都可以使用[欺诈证明](/glossary/#fraud-proof)来挑战退出交易。 +将资金从零知识卷叠转移到以太坊时不会出现延迟,因为一旦零知识卷叠合约验证了有效性证明后,就会执行退出交易。 相反,从乐观卷叠中提取资金会有延迟,以便任何人都可以用[欺诈证明](/glossary/#fraud-proof)来挑战退出交易。 -零知识卷叠将交易作为 `calldata` 写入以太坊。 对智能合约函数进行的外部调用中包含的数据就存储在 `calldata` 中。 `calldata` 中的信息发布在区块链上,让任何人都可以独立重建该卷叠的状态。 零知识卷叠使用压缩技术减少交易数据 — 例如,帐户用索引而不是地址表示,这样可以节省 28 字节的数据。 链上数据发布占据卷叠的大部分成本,因此数据压缩可以降低用户的费用。 +零知识卷叠将交易作为 `calldata` 写入以太坊。 `calldata` 是存储对智能合约函数进行外部调用时所含数据的地方。 `calldata` 中的信息发布在区块链上,允许任何人独立地重建该卷叠的状态。 零知识卷叠使用压缩技术减少交易数据 — 例如,帐户用索引而不是地址表示,这样可以节省 28 字节的数据。 链上数据发布占据卷叠的大部分成本,因此数据压缩可以降低用户的费用。 -## 零知识卷叠如何与以太坊交互? {#zk-rollups-and-ethereum} +## 零知识卷叠如何与以太坊交互? 零知识卷叠和以太坊 {#zk-rollups-and-ethereum} 零知识卷叠链是一种在以太坊区块链上运行并由链上以太坊智能合约管理的链下协议。 零知识卷叠在主网之外执行交易,但会定期将链下交易批次提交到链上卷叠合约。 与以太坊区块链非常相像,这种交易记录是不可更改的并形成了零知识卷叠链。 零知识卷叠的核心架构由以下组件构成: -1. **链上合约**:如前所述,零知识卷叠协议由运行在以太坊上的智能合约控制。 其中包括存储卷叠区块、跟踪存款并监控状态更新的主合约。 另一个上链上合约(验证者合约),它验证区块生产者提交的零知识证明。 因此,以太坊充当零知识卷叠的基础层或“一层网络”。 +1. **链上合约**:如前所述,零知识卷叠协议由运行在以太坊上的智能合约控制。 其中包括存储卷叠区块、跟踪存款并监控状态更新的主合约。 另一种链上合约(验证者合约)验证区块生产者提交的零知识证明。 因此,以太坊充当零知识卷叠的基础层或“一层网络”。 -2. **链下虚拟机 (VM)**:虽然零知识卷叠协议存在于以太坊上,但交易执行和状态存储却在独立于[以太坊虚拟机](/developers/docs/evm/)的单独虚拟机中进行。 这种链下虚拟机是零知识卷叠上交易的执行环境,并作为零知识卷叠协议的第二层或“二层网络”。 在以太坊主网上验证的有效性证明保证链下虚拟机中状态转换的正确性。 +2. **脱链虚拟机 (VM)**:虽然零知识卷叠协议存在于以太坊上,但交易执行和状态存储却在独立于 [EVM](/developers/docs/evm/) 的单独虚拟机中进行。 这种链下虚拟机是在零知识卷叠上交易的执行环境,并作为零知识卷叠协议的第二阶段或“第二阶段网络”。 在以太坊主网上验证的有效性证明保证链下虚拟机中状态转换的正确性。 -零知识卷叠是“混合扩容解决方案” — 独立运行但从以太坊获得安全性的链下协议。 具体来说,以太坊网络强制执行零知识卷叠上状态更新的有效性,并保证每次更新卷叠状态时后台数据的可用性。 因此,零知识卷叠比纯链下扩容解决方案安全得多,例如负责其安全属性的[侧链](/developers/docs/scaling/sidechains/),或 [Validium](/developers/docs/scaling/validium/),它也使用有效性证明在以太坊上验证交易但将交易数据存储在别处。 +零知识卷叠是“混合扩容解决方案” — 独立运行但从以太坊获得安全性的链下协议。 具体来说,以太坊网络强制执行零知识卷叠上状态更新的有效性,并保证每次更新卷叠状态时后台数据的可用性。 因此,零知识卷叠比纯脱链扩容解决方案安全得多,例如负责其安全属性的[侧链](/developers/docs/scaling/sidechains/),或 [validiums](/developers/docs/scaling/validium/),后者也使用有效性证明在以太坊上验证交易,但将交易数据存储在别处。 零知识卷叠依赖以太坊主协议获得: @@ -46,7 +46,7 @@ lang: zh 以太坊充当零知识卷叠的结算层:只有当一层网络合约接受有效性证明时,二层网络交易才会最终确定。 这就化解了恶意运营商破坏链的风险(例如,窃取卷叠资金),因为每笔交易都必须在主网上得到批准。 此外,以太坊保证一旦在一层网络上最终确定后,用户操作就不能被逆转。 -### 抗审查 {#censorship-resistance} +### 抗审查性 {#censorship-resistance} 大多数零知识卷叠使用“超级节点”(运营商)来执行交易、生产批次并将区块提交到一层网络。 尽管这样做保证了效率,但也增加了审查风险:恶意零知识卷叠运营商可以通过拒绝将用户的交易添加到批次中来审查用户。 @@ -62,17 +62,17 @@ lang: zh #### 零知识卷叠如何在以太坊上发布交易数据 {#how-zk-rollups-publish-transaction-data-on-ethereum} -如前所述,交易数据作为 `calldata` 发布到以太坊上。 `calldata` 是智能合约中的数据区,用于将参数传递给函数,其行为类似于[内存](/developers/docs/smart-contracts/anatomy/#memory)。 虽然 `calldata` 不存储到以太坊状态中,但它作为以太坊链[历史日志](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)的一部分一直存在于链上。 `calldata` 不会影响以太坊的状态,使其成为一种在链上存储数据的实惠方式。 +如前所述,交易数据作为 `calldata` 发布到以太坊上。 `calldata` 是智能合约中的一个数据区域,用于向函数传递参数,其行为与[内存](/developers/docs/smart-contracts/anatomy/#memory)类似。 虽然 `calldata` 不作为以太坊状态的一部分存储,但它会作为以太坊链[历史日志](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)的一部分永久保存在链上。 `calldata` 不会影响以太坊的状态,这使其成为一种在链上存储数据的廉价方式。 `calldata` 关键字通常标识交易调用的智能合约方法,并以任意字节序列的形式保存该方法的输入。 零知识卷叠使用 `calldata` 将压缩的交易数据发布到链上;卷叠运营商只需通过调用卷叠合约中所需的函数来添加一个新批次,并将压缩数据作为函数参数传递。 这有助于降低用户的成本,因为大部分卷叠费用用于在链上存储交易数据。 ### 状态承诺 {#state-commitments} -零知识卷叠的状态包括二层网络帐户和余额,用[默克尔树](/whitepaper/#merkle-trees)表示。 默克尔树根(默克尔根)的加密哈希存储在链上合约中,让卷叠协议可以跟踪零知识卷叠状态的变化。 +零知识卷叠的状态(包括二层帐户和余额)用[默克尔树](/whitepaper/#merkle-trees)表示。 默克尔树根(默克尔根)的加密哈希存储在链上合约中,让卷叠协议可以跟踪零知识卷叠状态的变化。 在执行一组新交易后,卷叠交易转换到新状态。 发起状态转换的运营商需要计算一个新的状态根并提交到链上合约。 如果与批次相关的有效性证明通过验证者合约的身份验证,则新默克尔根将成为零知识卷叠的规范状态根。 -除了计算状态根之外,零知识卷叠运营商还创建了一个批处理根 — 包含批处理中所有交易的默克尔树的根。 当提交新批次时,卷叠合约存储批次根,允许用户证明交易(例如,提款请求)包含在批次中。 用户必须提供交易详情、批次根和显示包含路径的 [Merkle 证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)。 +除了计算状态根之外,零知识卷叠运营商还创建了一个批处理根 — 包含批处理中所有交易的默克尔树的根。 当提交新批次时,卷叠合约存储批次根,允许用户证明交易(例如,提款请求)包含在批次中。 用户必须提供交易详情、批次根和显示包含路径的[默克尔证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)。 ### 有效性证明 {#validity-proofs} @@ -80,31 +80,31 @@ lang: zh 但是,在运营商证明新默克尔根是由卷叠状态的正确更新产生之前,卷叠合约不会自动接受提出的状态承诺。 零知识卷叠运营商通过生成有效性证明来做到这一点,有效性证明是一种简单的加密承诺,用于验证批量交易的正确性。 -有效性证明允许参与方在不透露陈述本身的情况下证明陈述的正确性 — 因此,它们又称为零知识证明。 零知识卷叠使用有效性证明确认链下状态转换的正确性,而无需在以太坊上重新执行交易。 这些证明可以有 [ZK-SNARK](https://arxiv.org/abs/2202.06877)(零知识简洁非交互式知识论证)或 [ZK-STARK](https://eprint.iacr.org/2018/046)(零知识可扩容透明知识论证)两种形式。 +有效性证明允许参与方在不透露陈述本身的情况下证明陈述的正确性 — 因此,它们又称为零知识证明。 零知识卷叠使用有效性证明确认链下状态转换的正确性,而无需在以太坊上重新执行交易。 这些证明可以采用 [ZK-SNARK](https://arxiv.org/abs/2202.06877)(零知识简洁非交互式知识论证)或 [ZK-STARK](https://eprint.iacr.org/2018/046)(零知识可扩展透明知识论证)的形式。 SNARK 和 STARK 都有助于证明零知识卷叠中链下计算的完整性,尽管每种证明类型都有不同的特征。 -**零知识简洁非交互式知识论证 (ZK-SNARK)** +**ZK-SNARKs** 为了让 ZK-SNARK 协议起作用,必须创建公共参考字符串 (CRS),公共参考字符串提供公共参数来证明和验证有效性证明。 证明系统的安全性取决于公共参考字符串设置;如果用于创建公共参数的信息落入恶意行为者手中,他们可能会生成虚假的有效性证明。 -一些零知识卷叠尝试通过采用[多方计算仪式 (MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/) 解决这一问题,即让受信任个人为 ZK-SNARK 线路生成公共参数。 每一方都提供一些随机性(称为“有毒废物”)来构建公共参考字符串,而且必须立即将其销毁。 +一些零知识卷叠尝试通过采用[多方计算仪式 (MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/) 解决这一问题,该仪式涉及受信任的个人,为 ZK-SNARK 电路生成公共参数。 每一方都提供一些随机性(称为“有毒废物”)来构建公共参考字符串,而且必须立即将其销毁。 使用受信任的设置,因为它们提高了公共参考字符串设置的安全性。 只要诚实参与者销毁其输入,ZK-SNARK 系统的安全性就得到了保证。 这种方法仍然需要信任相关人员删除他们抽样的随机性,并且不会破坏系统的安全保障。 撇开信任假设不谈,ZK-SNARK 因其更小的证明大小和恒定时间验证而广受欢迎。 由于运行零知识卷叠的较大一部分成本用于一层网络上的证明验证,因此二层网络使用 ZK-SNARK 生成可在主网上快速、经济实惠地验证的证明。 -**零知识可扩容透明知识论证 (ZK-STARK)** +**ZK-STARKs** 与 ZK-SNARK 一样,ZK-STARK 证明链下计算的有效性而不会透露输入。 然而,ZK-STARK 被认为是对 ZK-SNARK 的改进,因为前者具有可扩展性和透明性。 ZK-STARK 是“透明的”,因为无需受信任的公共参考字符串 (CRS) 设置,它们就可以工作。 然而,ZK-STARK 依靠可公开验证的随机性来设置用于生成和验证证明的参数。 -ZK-STARK 还提供了更强的可扩展性,因为证明和验证有效性证明所需的时间相对于底层计算的复杂性呈_准线性_增加。 对于 ZK-SNARK,证明和验证时间相对于底层计算的规模呈_线性_增加。 这意味着在涉及大型数据集时,ZK-STARK 比 ZK-SNARK 的证明和验证时间更少,这使得前者适用于大批量应用。 +ZK-STARK 还提供了更强的可扩展性,因为证明和验证有效性证明所需的时间,会随着底层计算的复杂性呈_准线性_增加。 对于 ZK-SNARK,证明和验证时间会随着底层计算的规模呈_线性_增加。 这意味着在涉及大型数据集时,ZK-STARK 比 ZK-SNARK 的证明和验证时间更少,这使得前者适用于大批量应用。 ZK-STARK 对于量子计算机也是安全的,而 ZK-SNARK 中使用的椭圆曲线密码学 (ECC) 被广泛认为容易受到量子计算攻击。 ZK-STARK 的缺点是它们产生的证明尺寸更大,在以太坊上验证的成本更高。 -#### 有效性证明如何在零知识卷叠中运作? {#validity-proofs-in-zk-rollups} +#### 有效性证明如何在零知识卷叠中运作? 零知识卷叠中的有效性证明 {#validity-proofs-in-zk-rollups} ##### 证明生成 @@ -136,13 +136,13 @@ ZK-STARK 对于量子计算机也是安全的,而 ZK-SNARK 中使用的椭圆 在证明线路验证状态更新的正确性后,二层网络运营商将计算出的有效性证明提交给一层网络上的验证者合约。 合约的验证线路验证证明的有效性,并检查证明中包含的公共输入: -- **前状态根**:零知识卷叠的旧状态根(在执行交易批次之前),表示二层网络链的前一个已知有效状态。 +- **前状态根**:零知识卷叠的旧状态根(即在执行批处理交易前),反映了二层链上一个已知的有效状态。 -- **后状态根**:零知识卷叠的新状态根(执行交易批次之后),表示二层网络链的最新状态。 后状态根是在证明线路中应用状态更新后产生的最终根。 +- **后状态根**:零知识卷叠的新状态根(即在执行批处理交易后),反映了二层链的最新状态。 后状态根是在证明线路中应用状态更新后产生的最终根。 -- **批处理根**:批次的默克尔根,通过_默克尔化_批次中的交易并对树根进行哈希处理得到。 +- **批次根**:批次的默克尔根,通过对批次中的交易进行_默克尔化_并对树根进行哈希运算而得出。 -- **交易输入**:与在已提交批次中执行的交易相关的数据。 +- **交易输入**:与作为已提交批次的一部分执行的交易所关联的数据。 如果证明符合线路条件(即证明是有效的),则意味着存在一系列有效交易,这些交易将卷叠从先前状态(由前状态根提供加密指纹)转换到新状态(由后状态根提供加密指纹)。 如果前状态根与存储在卷叠合约中的根匹配,并且证明是有效的,则卷叠合约从证明中获取后状态根并更新其状态树以反映卷叠的状态变化。 @@ -164,11 +164,11 @@ ZK-STARK 对于量子计算机也是安全的,而 ZK-SNARK 中使用的椭圆 卷叠合约对交易数据进行哈希处理,检查批处理根是否存在,并使用默克尔证明检查交易哈希是否是批处理根的一部分。 之后,合约执行退出交易并将资金发送到用户选择的一层网络上的地址。 -## 零知识卷叠和以太坊虚拟机的兼容性 {#zk-rollups-and-evm-compatibility} +## 零知识卷叠和 EVM 兼容性 {#zk-rollups-and-evm-compatibility} -与乐观卷叠不同,零知识卷叠不直接与[以太坊虚拟机 (EVM)](/developers/docs/evm/) 兼容。 在线路中证明通用以太坊虚拟机计算比证明简单计算(如前面描述的代币转账),更加困难且更加耗费资源。 +与乐观卷叠不同,零知识卷叠不易与[以太坊虚拟机 (EVM)](/developers/docs/evm/) 兼容。 在线路中证明通用以太坊虚拟机计算比证明简单计算(如前面描述的代币转账),更加困难且更加耗费资源。 -然而,[零知识技术的进步](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now)重新点燃了将以太坊虚拟机计算封装在零知识证明中的兴趣。 这些努力旨在创建一个零知识以太坊虚拟机 (zkEVM) 实现,它可以高效验证程序执行的正确性。 零知识以太坊虚拟机重新创建在线路中进行证明/验证的现有以太坊虚拟机操作码,从而允许执行智能合约。 +然而,[零知识技术的进步](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now)正重新点燃人们将 EVM 计算封装于零知识证明的兴趣。 这些努力旨在创建一个零知识以太坊虚拟机 (zkEVM) 实现,它可以高效验证程序执行的正确性。 零知识以太坊虚拟机重新创建在线路中进行证明/验证的现有以太坊虚拟机操作码,从而允许执行智能合约。 与以太坊虚拟机一样,零知识以太坊虚拟机在对某些输入执行计算之后在状态之间转换。 差别在于零知识以太坊虚拟机还创建了零知识证明,验证程序执行中每一步的正确性。 有效性证明可以验证影响虚拟机状态(内存、堆栈、存储)和计算本身的操作的正确性(即,操作是否调用了正确的操作码并正确执行它们?)。 @@ -178,21 +178,21 @@ ZK-STARK 对于量子计算机也是安全的,而 ZK-SNARK 中使用的椭圆 用户为零知识卷叠上的交易支付多少费用取决于燃料费用,就像在以太坊主网上一样。 但是,燃料费用在二层网络上的运作方式不同,并受以下费用影响: -1. **状态写入**:写入以太坊状态(即在以太坊区块链上提交交易)有固定费用。 零知识卷叠通过批量处理交易并将固定费用分摊给多名用户来降低该费用。 +1. **状态写入**:写入以太坊状态(即在以太坊区块链上提交交易)有固定成本。 零知识卷叠通过批量处理交易并将固定费用分摊给多名用户来降低该费用。 -2. **数据发布**:零知识卷叠将每笔交易的状态数据作为 `calldata` 发布到以太坊。 `calldata` 费用目前由 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 监管,它规定对于 `calldata` 的非零字节和零字节费用分别为 16 单位和 4 单位燃料。 每笔交易支付的费用受需要在链上为其发布多少 `calldata` 的影响。 +2. **数据发布**:零知识卷叠将每笔交易的状态数据作为 `calldata` 发布到以太坊。 `calldata` 成本目前由 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 决定,其中规定 `calldata` 的每个非零字节成本为 16 单位燃料,每个零字节为 4 单位燃料。 每笔交易支付的成本受需要为其在链上发布多少 `calldata` 的影响。 -3. **二层网络运营商费用**:这是支付给卷叠运营商的金额,用于补偿处理交易产生的计算费用,很像以太坊主网上的[交易“优先费(小费)”](/developers/docs/gas/#how-are-gas-fees-calculated)。 +3. **二层运营商费用**:这是支付给卷叠运营商的金额,作为处理交易所产生计算成本的补偿,与以太坊主网上的[交易“优先费(小费)”](/developers/docs/gas/#how-are-gas-fees-calculated)非常相似。 -4. **证明生成和验证**:零知识卷叠运营商必须为交易批次生成有效性证明,该操作耗费大量资源。 在主网上验证零知识证明也需要花费燃料(约 500,000 单位燃料)。 +4. **证明生成和验证**:零知识卷叠运营商必须为交易批次生成有效性证明,这项工作是资源密集型的。 在主网上验证零知识证明也需要花费燃料(约 500,000 单位燃料)。 -除了批量处理交易之外,零知识卷叠通过压缩交易数据降低用户的费用。 你可以[查看实时概览](https://l2fees.info/),了解使用以太坊零知识卷叠的费用。 +除了批量处理交易之外,零知识卷叠通过压缩交易数据降低用户的费用。 你可以[查看实时概览](https://l2fees.info/),了解使用以太坊零知识卷叠的成本。 -## 零知识卷叠如何扩展以太坊? {#scaling-ethereum-with-zk-rollups} +## 零知识卷叠如何扩展以太坊? 使用零知识卷叠扩容以太坊 {#scaling-ethereum-with-zk-rollups} ### 交易数据压缩 {#transaction-data-compression} -零知识卷叠通过在链下计算来提升以太坊基础层的吞吐量,但真正提升扩容的是压缩交易数据。 以太坊的[区块大小](/developers/docs/blocks/#block-size)限制了每个区块可以保存的数据,进而限制了每个区块处理的交易数量。 通过压缩交易相关数据,零知识卷叠显著增加了每个区块处理的交易数量。 +零知识卷叠通过在链下计算来提升以太坊基础层的吞吐量,但真正提升扩容的是压缩交易数据。 以太坊的[区块大小](/developers/docs/blocks/#block-size)限制了每个区块可以容纳的数据量,并因此限制了每个区块处理的交易数量。 通过压缩交易相关数据,零知识卷叠显著增加了每个区块处理的交易数量。 零知识卷叠能够比乐观卷叠更好地压缩交易数据,因为它们不必发布验证每笔交易所需的所有数据。 它们只需要发布在卷叠上重建帐户和余额的最新状态所需的最少量数据。 @@ -206,49 +206,52 @@ ZK-STARK 对于量子计算机也是安全的,而 ZK-SNARK 中使用的椭圆 ### 零知识卷叠的优缺点 {#zk-rollups-pros-and-cons} -| 优点 | 缺点 | -| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | -| 有效性证明确保链下交易的正确性,并阻止运营商执行无效的状态转换。 | 与计算和验证有效性证明相关的成本很高,并且可能会增加卷叠用户的费用。 | -| 一旦在一层网络上验证了有效性证明,在批准状态更新后,交易的最终确定更快。 | 由于零知识技术的复杂性,构建与以太坊虚拟机兼容的零知识卷叠很困难。 | -| 依靠去信任加密机制来保证安全性,而不是像[乐观卷叠](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons)那样依靠受激励参与者的诚信。 | 生成有效性证明需要专用硬件,这可能会鼓励一些参与方对链进行集中控制。 | -| 将恢复链下状态所需的数据存储在一层网络上,从而保证安全性、抗审查性和去中心化。 | 中心化运营商(排序者)可以影响交易的顺序。 | -| 用户可以从更高的资本效率中受益,并且可以毫无拖延地从二层网络中提取资金。 | 硬件要求可能会减少能够强制推进链状态的参与者数量,从而增加恶意运营商冻结卷叠状态和审查用户的风险。 | -| 不依赖于可用性假设,用户不必验证链来保护他们的资金。 | 一些证明系统(例如 ZK-SNARK)需要受信任的设置,如果处理不当,可能会危及零知识卷叠的安全模型。 | -| 更好的数据压缩有助于降低在以太坊上发布 `calldata` 的成本,并最大限度地减少用户的卷叠费用。 | | +| 优点 | 缺点 | +| -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | +| 有效性证明确保链下交易的正确性,并阻止运营商执行无效的状态转换。 | 与计算和验证有效性证明相关的成本很高,并且可能会增加卷叠用户的费用。 | +| 一旦在一层网络上验证了有效性证明,在批准状态更新后,交易的最终确定更快。 | 由于零知识技术的复杂性,构建与以太坊虚拟机兼容的零知识卷叠很困难。 | +| 依靠免信任的加密机制来保障安全,而非像[乐观卷叠](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons)那样依赖受激励行动者的诚信。 | 生成有效性证明需要专用硬件,这可能会鼓励一些参与方对链进行集中控制。 | +| 将恢复链下状态所需的数据存储在一层网络上,从而保证安全性、抗审查性和去中心化。 | 中心化运营商(排序者)可以影响交易的顺序。 | +| 用户可以从更高的资本效率中受益,并且可以毫无拖延地从二层网络中提取资金。 | 硬件要求可能会减少能够强制推进链状态的参与者数量,从而增加恶意运营商冻结卷叠状态和审查用户的风险。 | +| 不依赖于可用性假设,用户不必验证链来保护他们的资金。 | 一些证明系统(例如 ZK-SNARK)需要受信任的设置,如果处理不当,可能会危及零知识卷叠的安全模型。 | +| 更好的数据压缩有助于降低在以太坊上发布 `calldata` 的成本,并最大限度地减少用户的卷叠费用。 | | -### 零知识卷叠的直观解释 {#zk-video} +### 零知识卷叠的视频解说 {#zk-video} 观看 Finematics 解说零知识卷叠: - -## 零知识以太坊虚拟机上有哪些项目? {#zkevm-projects} +## 零知识以太坊虚拟机上有哪些项目? zkEVM 项目 {#zkevm-projects} 零知识以太坊虚拟机上运行的项目包括: -- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _zkEVM 是由以太坊基金会资助的项目,旨在开发与以太坊虚拟机兼容的零知识卷叠以及为以太坊区块生成有效性证明的机制。_ +- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _zkEVM 是由以太坊基金会资助的项目,旨在开发与 EVM 兼容的零知识卷叠,以及为以太坊区块生成有效性证明的机制。_ + +- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _一个在以太坊主网上运行的去中心化零知识卷叠,它在零知识以太坊虚拟机 (zkEVM) 上工作,以透明的方式执行以太坊交易,包括带零知识证明验证的智能合约。_ -- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _是以太坊主网上的去中心化零知识卷叠,它在零知识以太坊虚拟机 (zkEVM) 上运行,以透明的方式执行以太坊交易,包括智能合约与零知识证明验证。_ +- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scroll 是一家技术驱动型公司,致力于为以太坊构建原生的 zkEVM 二层解决方案。_ -- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scroll 是 一家致力于为以太坊构建原生零知识以太坊虚拟机二层解决方案的技术驱动型公司。_ +- **[Taiko](https://taiko.xyz)** - _Taiko 是一个去中心化、与以太坊等效的零知识卷叠(一种[第 1 类 ZK-EVM](https://vitalik.eth.limo/general/2022/08/04/zkevm.html))。_ -- **[Taiko](https://taiko.xyz)** - _Taiko 是一个去中心化、类似以太坊的零知识卷叠(一种[第一类零知识以太坊虚拟机](https://vitalik.eth.limo/general/2022/08/04/zkevm.html))。_ +- **[ZKsync](https://docs.zksync.io/)** - _ZKsync Era 是一个与 EVM 兼容的零知识卷叠,由 Matter Labs 构建,并由其自己的 zkEVM 提供支持。_ -- **[ZKsync](https://docs.zksync.io/)** - _ZKsync Era 是与以太坊虚拟机兼容的零知识卷叠,由 Matter Labs 构建并由它自己的 zkEVM 提供支持。_ +- **[Starknet](https://starkware.co/starknet/)** - _StarkNet 是一个与 EVM 兼容的二层扩容解决方案,由 StarkWare 构建。_ -- **[Starknet](https://starkware.co/starknet/)** - _StarkNet 是以太坊虚拟机兼容的二层网络扩容解决方案,由 StarkWare 构建。_ +- **[Morph](https://www.morphl2.io/)** - _Morph 是一个混合式卷叠扩容解决方案,利用零知识证明来解决二层状态挑战问题。_ -- **[Morph](https://www.morphl2.io/)** - _Morph 是利用零知识证明来解决二层网络状态质询问题的混合卷叠扩容解决方案。_ +- **[Linea](https://linea.build)** - _Linea 是由 Consensys 构建、与以太坊等效的 zkEVM 二层网络,完全与以太坊生态系统保持一致。_ -## 进一步阅读零知识卷叠的相关内容 {#further-reading-on-zk-rollups} +## 关于零知识卷叠的延伸阅读 {#further-reading-on-zk-rollups} - [什么是零知识卷叠?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups) - [什么是零知识卷叠?](https://alchemy.com/blog/zero-knowledge-rollups) -- [STARK(可扩容透明知识论证)和 SNARK(简洁非交互式知识论证)](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/) -- [什么是 zkEVM(零知识以太坊虚拟机)?](https://www.alchemy.com/overviews/zkevm) -- [零知识以太坊虚拟机类型:以太坊等效、以太坊虚拟机等效、类型 1、类型 4 和其他晦涩的术语](https://taiko.mirror.xyz/j6KgY8zbGTlTnHRFGW6ZLVPuT0IV0_KmgowgStpA0K4) -- [zkEVM(零知识以太坊虚拟机)简介](https://hackmd.io/@yezhang/S1_KMMbGt) -- [超赞的 zkEVM(零知识以太坊虚拟机)资源](https://github.com/LuozhuZhang/awesome-zkevm) -- [ZK-SNARK(零知识简洁非交互式知识论证)底层技术](https://vitalik.eth.limo/general/2017/02/01/zk_snarks.html) -- [SNARK(简洁非交互式知识论证),怎么可能?](https://vitalik.eth.limo/general/2021/01/26/snarks.html) +- [以太坊卷叠实用指南](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) +- [STARK 与 SNARK 对比](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/) +- [什么是 zkEVM?](https://www.alchemy.com/overviews/zkevm) +- [ZK-EVM 类型:以太坊等效、EVM 等效、类型 1、类型 4 和其他神秘的流行语](https://taiko.mirror.xyz/j6KgY8zbGTlTnHRFGW6ZLVPuT0IV0_KmgowgStpA0K4) +- [zkEVM 简介](https://hackmd.io/@yezhang/S1_KMMbGt) +- [什么是 ZK-EVM L2?](https://linea.mirror.xyz/qD18IaQ4BROn_Y40EBMTUTdJHYghUtdECscSWyMvm8M) +- [zkEVM 精选资源](https://github.com/LuozhuZhang/awesome-zkevm) +- [ZK-SNARKs 原理](https://vitalik.eth.limo/general/2017/02/01/zk_snarks.html) +- [SNARK 如何成为可能?](https://vitalik.eth.limo/general/2021/01/26/snarks.html) From e74b4f350fe105f37ea0282c1ab4ed30d727fded Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:29 -0800 Subject: [PATCH 145/581] update(i18n): public/content/translations/zh/contributing/translation-program/playbook/index.md --- .../translation-program/playbook/index.md | 317 ++++++++++++++++++ 1 file changed, 317 insertions(+) create mode 100644 public/content/translations/zh/contributing/translation-program/playbook/index.md diff --git a/public/content/translations/zh/contributing/translation-program/playbook/index.md b/public/content/translations/zh/contributing/translation-program/playbook/index.md new file mode 100644 index 00000000000..a7d3791b589 --- /dev/null +++ b/public/content/translations/zh/contributing/translation-program/playbook/index.md @@ -0,0 +1,317 @@ +--- +title: 翻译程序操作手册 +lang: zh +description: 建立翻译项目的实用技巧与重要注意事项合集 +--- + +# 翻译程序操作手册{#translation-program-playbook} + +英语是世界上使用最广泛的语言之一,也是迄今为止全球学习人数最多的语言。 由于英语是互联网上最常用的语言——尤其在社交媒体领域——且多语言编程语言较为稀缺,区块链领域的大部分内容都以英语为母语编写。 + +然而,全球超过60亿人(占总人口的75%以上)完全不会说英语,这为绝大多数人接触以太坊设置了巨大的门槛。 + +正因如此,该领域越来越多的项目正寻求将内容翻译成不同语言并进行本地化,以面向全球市场。 + +提供多语言内容是拓展全球社区、为非英语使用者提供教育、确保内容与信息触达更广泛受众、并吸引更多人加入该领域的简单而有效的方式。 + +本指南旨在解决内容本地化过程中常见的挑战与误解。 它提供了一个分步指南,涵盖内容管理、翻译与审校流程、质量保证、译员招募以及本地化流程中的其他关键环节。 + +## 内容管理 {#content-management} + +翻譯內容管理是指通過自動化翻譯工作流程,消除重複性手動操作,提升效率與質量,實現更佳管控,並促進協作的過程。 + +在本地化过程中,内容管理存在多种不同的方法,具体取决于内容类型和您的需求。 + +管理内容的基本方法是创建双语文件,其中包含源文本和目标文本。 这种译法很少被采用,因为除了简洁之外,它并无显著优势。 + +翻译机构通常通过使用翻译管理软件或本地化工具来管理翻译项目,这些工具不仅具备项目管理功能,还能对文件、内容及译员实现更全面的管控。 + +阅读更多关于内容管理的信息: + +[Trados 谈何为翻译管理](https://www.trados.com/solutions/translation-management/) + +[关于多语言内容管理的用语](https://phrase.com/blog/posts/multilingual-content-management/) + +### 翻译管理软件{#translation-management-software} + +市面上有许多翻译管理系统和本地化工具,软件的选择主要取决于您的具体需求。 + +尽管某些项目选择不使用翻译管理系统,而倾向于手动翻译——无论是直接在双语文件中操作,还是借助GitHub等托管服务——这种做法都会显著降低项目控制力、生产效率、翻译质量、可扩展性及协作能力。 这种方法可能最适合小型或一次性翻译项目。 + +快速了解一些功能强大且广泛使用的翻译管理工具: + +**最适合众包和协作** + +[Crowdin](https://crowdin.com/) + +- 对开源项目免费 (不限字数和项目) +- 所有计划均提供 TM 和词汇表 +- 支持超过 60 种文件类型,超过 70 种 API 集成 + +[Lokalise](https://lokalise.com/) + +- 2 名团队成员可免费使用,更多成员需选用付费方案(大多数方案对字符串数量有限制) +- 一些付费计划均提供 TM 和词汇表 +- 支持超过 30 种文件类型,超过 40 种 API 集成 + +[Transifex](https://www.transifex.com/) + +- 只有付费方案(大多数方案对字符串数量有限制) +- 所有付费计划均提供 TM 和词汇表 +- 支持超过 30 种文件类型,超过 20 种 API 集成 + +[Phrase](https://phrase.com/) + +- 只有付费方案(所有方案都有无限制的字符串数量,项目团队成员数量则有限制) +- 一些付费计划均提供 TM 和词汇表 +- 支持超过 40 种文件类型,超过 20 种 API 集成 + +[Smartcat](https://www.smartcat.com/) + +- 有基础的免费方案和付费的高级功能(所有方案都有无限制的字符串和项目数量) +- 所有计划均提供 TM 和词汇表 +- 支持超过 60 种文件类型,超过 20 种 API 集成 + +[POEditor](https://poeditor.com/) + +- 对开源项目免费(所有项目有字符串数量限制,开源项目无限制) +- 付费计划提供 TM 和词汇表 +- 支持超过 20 种文件类型,超过 10 种 API 集成 + +以及很多其他选择…… + +**专业翻译工具** + +[SDL Trados Studio](https://www.trados.com/products/trados-studio/) + +- 为自由译者和团队提供的付费计划 +- 功能强大的计算机辅助翻译 (CAT) 工具与翻译人员效率提升软件 + +[MemoQ](https://www.memoq.com/) + +- 提供有限免费版本,同时设有多个付费方案以解锁高级功能。 +- 面向企业、语言服务提供商及翻译人员的翻译管理软件 + +[Memsource](https://www.memsource.com/) + +- 个人翻译者免费使用,团队用户则提供多种付费方案。 +- 云端计算机辅助翻译与翻译管理系统 + +以及很多其他选择…… + +阅读更多关于翻译管理软件的信息: + +[维基百科对翻译管理系统的定义](https://en.wikipedia.org/wiki/Translation_management_system) + +[Phrase:每个翻译管理软件都应具备的 7 个要素](https://phrase.com/blog/posts/7-things-every-translation-management-software-should-have/) + +[MemoQ 解读:何为翻译管理系统](https://www.memoq.com/tools/what-is-a-translation-management-system) + +[Gengo 推荐的 16 款最佳翻译管理系统](https://gengo.com/translator-product-updates/16-best-translation-management-systems/) + +## 工作流程 {#workflow} + +在翻译领域,翻译工作流程可以指代几种不同的含义,这些含义既相互关联,又是项目中需要重点考虑的因素。 + +我们将在下文探讨这两种情况。 + +**含义 1** + +这可能是人们理解翻译工作流程最常见的方式,也是听到“工作流程”这个词时通常会想到的内容。 + +本质上,这是从开始考虑翻译到在产品中使用翻译内容的整个工作流程。 + +在此情况下,一个示例工作流如下: + +1. **翻译文件的准备工作**——听起来很简单,但你需要考虑几个重要事项。 在此步骤中,您应该对整个流程的运作方式有清晰的规划。 + +- _你将使用哪些文件类型? 您希望以何种格式接收翻译后的文件?_ + - 若您的内容以DOCX或MD格式提供,翻译过程将比处理PDF版本的白皮书或其他文档简单得多。 +- _哪些本地化工具支持这种文件类型? 能否在翻译该文件时保留原始格式?_ + - 并非所有文件类型都支持直接本地化(例如PDF文件、图像文件),也并非所有本地化工具都支持所有文件类型。 +- _谁将翻译内容? 您将选择专业翻译服务还是依靠志愿者?_ + - 这会影响到你需要做出的其他若干决定。 例如,专业翻译人员比志愿者更擅长使用高级本地化工具。 +- _你对语言学家有什么期望? 如果您正在使用语言服务供应商,他们对您有什么期望?_ + - 这是确保您的目标、期望和时间表保持一致的关键步骤。 +- 所有待译内容的重要性是否相同? 应该优先翻译哪些内容吗?_ + - 存在若干方法可用于确定特定内容的优先级,这些内容应优先进行翻译与实施。 例如,如果你有大量内容需要翻译,可以使用版本控制来确保译者清楚哪些内容需要优先处理。 + +2. **共享待译文件**——这一步骤同样需要长远考量,并非像将源文件发送给语言服务供应商那样简单直接。 + +- _谁将翻译内容? 多少人会参与到该流程中?_ + - 若计划使用本地化工具,此步骤将得到简化,因为您可以直接将源文件上传至该工具。 即使翻译过程在托管服务上进行,情况也是如此,因为源文件无需导出到任何地方。 +- _源文件将进行人工处理,还是可以实现自动化处理?_ + - 大多数本地化工具都支持某种形式的文件管理流程集成或自动化。 另一方面,若您采用的是独立译员协作模式而非本地化工具,手动向数百甚至数千名译员发送源文件的做法显然难以实现规模化运作。 +- _将使用哪些工具进行本地化?_ + - 这个问题的答案将决定你处理其他所有事情的方式。 选择合适的工具可助您实现内容管理自动化,包括管理翻译记忆库和术语库、管理译员、追踪翻译/审校进度等,因此请花些时间研究您想要使用的工具。 若您不打算使用本地化工具,则上述所有操作均需手动完成。 +- _翻译流程需要多长时间? 要花多少钱?_ + - 此时,您应该准备好将源文件分享给语言服务提供商或翻译团队。 语言服务供应商可协助您分析字数统计并提供报价,其中包含翻译流程的费率及时间安排。 +- _您是否计划在此过程中对源内容进行修改/更新?_ + - 如果您的内容具有动态性且频繁变更,任何修改或更新都可能打乱翻译进度。 使用翻译记忆库可显著缓解此问题,但仍需仔细规划工作流程,避免阻碍译者的翻译进度。 + +3. **管理翻译流程**——源内容移交给语言服务供应商或译员后,您的工作并未结束。 为确保翻译质量达到最佳水平,内容创作者应尽可能深度参与翻译流程。 + +- _您计划如何与译员进行沟通?_ + - 若您计划使用本地化工具,沟通可直接在工具内进行。 建议与译员建立备用沟通渠道,因为他们可能更愿意主动联系,而即时通讯工具能实现更自由的交流。 +- _如何处理翻译者的问题? 谁应该回答这些问题?_ + - 翻译者(专业与非专业人士) 经常会带着疑问,想弄清问题的请求,或者其它的补充内容,反馈与改进建议来主动联系我们。 回应像这类的询问有助于提高与翻译者的互动率和译文的质量。 给他们提供尽可能多的资源同样很有意义(如指南,提示,专业术语指南,常见答疑等)。 +- _审核流程如何进行? 想要外包这个项目,或者您有能力在内部审核? + - 虽然审核不总是硬性要求,但审核是一个合格翻译流程的重要部分。 通常来说,让专业译者外包审核流程是最简单的。 但是,如果您拥有一个强大的国际团队,审核或答疑也可以在内部进行。 + +4. 发布译文 — 翻译流程的最后一部分,不过提前规划它依旧很重要。 + +- 所有的译文都会在同一时间完成吗? + - 如果答案是否定的,那么您应该考虑哪些译文应当被优先发布,如何实时追踪正在进行的翻译流程,翻译完成时应怎样发布。 +- _翻译内容将如何交付给你? 它将以什么格式呈现?_ + - 无论采用哪种方法,这都是一个重要的考量因素。 本地化工具能让您保持对目标文件格式和导出过程的控制,并且通常支持自动化,例如通过与托管服务的集成来实现。 +- _您将如何在项目中实施翻译?_ + - 在某些情况下,这可能简单到只需上传翻译文件或将其添加到文档中。 然而,对于更复杂的项目,如网站或应用程序的翻译,您应确保代码支持国际化,并提前规划好实施流程。 +- _如果格式与源文件不同会怎样?_ + - 与上述情况类似,如果您翻译的是简单的文本文件,格式可能并不至关重要。 然而,对于更复杂的文件,如网站或应用程序的内容,格式和代码必须与源文件完全一致,以便在您的项目中实施。 否则,目标文件将需要由翻译人员或您的开发者进行编辑。 + +**含义 2** + +另一种翻译工作流程,它不考虑内部决策和方法。 这里主要关注的是内容本身的流动。 + +在此情况下,一个示例工作流如下: + +1. _翻译 → 实现_ + +- 最简单的工作流程,由于在实施前没有审查或质量保证流程来评估和编辑翻译,因此翻译很可能由人工完成。 +- 采用此工作流程时,确保译员能够维持一定的翻译质量至关重要,这需要项目经理与译员之间具备充分的资源支持和有效沟通。 + +2. _翻译 → 审核 → 实现_ + +- 一个更高级的工作流程,包含审阅和编辑环节,以确保翻译质量达到可接受且一致的标准。 +- 针对这一工作流程,存在多种实施方案:翻译环节可由专业译员或志愿者完成,而审校工作则通常由熟悉目标语言语法与正字法规范的专业审校人员负责。 + +3. _翻译 → 审核 → QA → 实现_ + +- 确保最高质量水平的最佳工作流程。 虽然质量检查并非总是必需,但在翻译和审校后,它能帮助您更好地了解译文的质量。 +- 通过这一流程,翻译工作可以完全由志愿者甚至机器翻译来完成。 审校环节则应由专业译员负责,而质量保证 (QA) 可由语言服务提供商承担,如果公司内部有目标语言的母语员工,也可自行完成。 + +阅读更多关于翻译工作流程的信息: + +[Content Rules 谈翻译工作流程的五个阶段](https://contentrules.com/creating-translation-workflow/) + +[Smartling 关于翻译工作流管理的解读](https://www.smartling.com/resources/101/what-is-translation-workflow-management/) + +[RixTrans 翻译流程详解](https://www.rixtrans.com/translation-workflow) + +## 术语管理 {#terminology-management} + +制定明确的术语处理方案,是确保翻译质量与一致性、节省译员时间的关键步骤之一。 + +在翻译领域,这被称为术语管理,是语言服务提供商除提供语言专家资源库和内容管理外,为客户提供的核心服务之一。 + +术语管理是指识别、收集和管理对项目至关重要且必须始终确保准确、一致翻译的术语的过程。 + +开始思考术语管理时,有几个步骤需要遵循: + +- 确定应纳入术语库的关键术语。 +- 创建术语及其定义的词汇表。 +- 翻译术语并将它们添加到词汇表。 +- 检查并批准翻译。 +- 维护术语表,并在新术语变得重要时及时更新。 + +阅读更多关于术语管理的信息: + +[Trados 谈术语管理](https://www.trados.com/solutions/terminology-management/translation-101-what-is-terminology-management.html) + +[Language Scientific 谈术语管理的重要性](https://www.languagescientific.com/terminology-management-why-it-matters/#:~:text=Terminology%20management%20is%20the%20process,are%20related%20to%20each%20other.) + +[Clear Words Translation 谈术语管理是什么及其重要性](http://clearwordstranslations.com/language/en/what-is-terminology-management/) + +### 翻译记忆和词汇表 {#tm-and-glossary} + +翻译记忆库与术语表是翻译行业中的重要工具,也是大多数语言服务提供商所依赖的核心资源。 + +让我们来看看这些术语的含义以及它们之间的区别: + +**翻译记忆库 (TM)** – 一种自动存储文本片段或字符串的数据库,涵盖较长的文本块、完整句子、段落及独立术语,同时记录其在各语言中的当前及历史翻译版本。 + +大多数本地化工具、翻译管理系统以及计算机辅助翻译工具都内置了翻译记忆库,这些记忆库通常也可以导出,并在其他同类工具中使用。 + +使用翻译记忆库的好处包括:加快翻译速度、提升翻译质量、在更新或更改源内容时保留特定翻译,以及对重复内容降低翻译成本。 + +翻译记忆库的工作原理基于不同文本片段之间的匹配百分比,通常在两个片段包含超过 50% 相同内容时最为有效。 它们还被用于自动翻译重复的句段,这些句段是 100% 匹配的,从而无需对重复内容进行多次翻译。 + +阅读更多关于翻译记忆的信息: + +[Memsource 谈翻译记忆库](https://www.memsource.com/translation-memory/) + +[Smartling 谈什么是翻译记忆库](https://www.smartling.com/resources/101/what-is-translation-memory/) + +**术语表 –** 一份包含重要或敏感术语、其定义、功能及既定翻译的清单。 术语表与翻译记忆库的主要区别在于,术语表并非自动生成,且不包含完整句子的翻译。 + +大多数本地化工具、翻译管理系统以及计算机辅助翻译工具都内置了术语表,您可以对其进行维护,以确保其中包含对项目至关重要的术语。 与翻译记忆库类似,术语表通常也可以导出,并在其他本地化工具中使用。 + +在启动翻译项目之前,强烈建议您花些时间,为译员和审校人员创建一份术语表。 使用术语表能确保重要术语的准确翻译,为译者提供必要的上下文,并保证翻译的一致性。 + +尽管术语表通常包含目标语言的既定翻译,但即便没有这些翻译,它们同样具有实用价值。 即使没有既定的翻译,术语表也可以包含技术术语的定义,突出不应翻译的术语,并告知译者某个特定术语是作为名词、动词、专有名词还是其他词性使用。 + +阅读更多关于术语表的信息: + +[Lionbridge 谈什么是翻译术语表](http://info.lionbridge.com/rs/lionbridge/images/Lionbridge%20FAQ_Glossary_2013.pdf) + +[Transifex 谈术语表](https://docs.transifex.com/glossary/glossary) + +如果您不打算在项目中使用本地化工具,则可能无法使用翻译记忆库和术语表(您可以在 Excel 文件中创建术语表或术语库,但自动化的术语表能免除翻译人员手动查找术语及其定义的需要)。 + +这意味着所有重复和相似的内容每次都需要人工翻译。 此外,翻译人员还需要就某些术语是否需要翻译、在文本中如何使用以及是否已有既定译法等问题进行咨询。 + +_您希望在项目中使用 ethereum.org 的翻译记忆库和术语表吗? 通过向 translations@ethereum.org._ 发送邮件联系我们 + +## 翻译者宣传 {#translator-outreach} + +**与语言服务供应商合作** + +如果您正在与语言服务提供商及其专业译员合作,那么这部分内容对您可能不太适用。 + +在这种情况下,选择一家能够以多种语言提供您所需全部服务(如翻译、审校、质量保证)的语言服务提供商至关重要。 + +虽然仅凭报价选择语言服务提供商可能颇具诱惑,但值得注意的是,大型语言服务提供商收费较高自有其道理。 + +- 他们的数据库中拥有数以万计的语言专家,这意味着他们能够为您的项目指派具备足够经验和特定领域知识的翻译人员(例如技术翻译专家)。 +- 他们在处理各类项目及满足客户多样化需求方面拥有丰富经验。 这意味着他们更能适应您独特的工作流程,为您的翻译过程提供宝贵建议和潜在改进方案,并确保满足您的需求、要求及交付期限。 +- 大多数大型语言服务提供商都拥有自己的本地化工具、翻译记忆库和术语表供您使用。 即便没有,他们也至少储备了足够多的语言专家,以确保其译员能够熟悉并熟练操作您希望使用的任何本地化工具。 + +您可以在[2021 年 Nimdzi 100 报告](https://www.nimdzi.com/nimdzi-100-top-lsp/)中找到全球最大语言服务提供商的深度对比分析,包括各公司的详细信息、按服务类型划分的细分数据、地理分布情况等内容。 + +**与非专业译者合作** + +您可能正在与非专业译员合作,并寻找志愿者协助翻译工作。 + +接触并邀请他人加入您的项目有多种途径。 这主要取决于您的产品特性以及您现有社区的规模。 + +以下是招募志愿者的一些方式概述: + +**外联 –** 尽管以下各点已有所涉及,但主动接触潜在志愿者并确保他们了解您的翻译项目,这本身就是一种有效的方式。 + +许多人渴望参与并为他们喜爱的项目贡献力量,但常常苦于非开发者或缺乏专业技术,找不到明确的参与途径。 若能提升项目的知名度,许多双语人士很可能对此表现出浓厚兴趣。 + +**深入社区内部探索 –** 该领域的大多数项目已拥有庞大且活跃的社区基础。 许多社区成员或许会乐于以简单的方式为项目贡献力量。 + +尽管参与开源项目通常源于内在动力,但它同时也是一次绝佳的学习机会。 任何对您的项目感兴趣的人,很可能都乐意以志愿者身份加入翻译计划,因为这不仅能让他们为自己关心的事业贡献力量,还能在实践过程中获得深入的学习体验。 + +**在产品中提及计划 –** 如果您的产品广受欢迎且用户众多,在使用过程中突出展示您的翻译计划并号召用户参与,效果会非常显著。 + +这可以简单到在您的应用或网站上为产品添加一个带有行动号召的横幅或弹窗。 这种方法之所以有效,是因为您的目标受众正是您的社区成员——他们是最有可能首先参与进来的人群。 + +**社交媒体 –** 社交媒体是宣传您的翻译项目、联系您的社区成员以及吸引尚未成为社区成员的其他人的有效途径。 + +若您拥有 Discord 服务器或 Telegram 频道,可便捷地将其用于项目推广、与译者沟通及致谢贡献者。 + +像 X(前身为 Twitter)这样的平台同样有助于吸纳新社区成员,并公开表彰您的贡献者。 + +Linux 基金会发布了一份内容详尽的[《2020 FOSS 贡献者调查报告》](https://www.linuxfoundation.org/wp-content/uploads/2020FOSSContributorSurveyReport_121020.pdf),分析了开源贡献者及其动机。 + +## 结论 {#conclusion} + +本文档包含每个翻译项目都应了解的一些关键考量因素。 这绝不是一份详尽的指南,但可以帮助任何没有翻译行业经验的人为他们的项目组织翻译计划。 + +若您希望获得关于翻译项目管理中不同工具、流程及关键环节的更详尽指导与解析,一些大型语言服务提供商设有博客专栏,定期发布本地化流程各维度的专业文章。 如果您想深入研究以上任何主题并专业地了解本地化流程的运作方式,这些都是最好的资源。 + +每节末尾附有相关链接;但是,您可以在线找到许多其他资源。 + +若要获取合作提案,或想了解更多关于维护 ethereum.org 翻译项目过程中我们积累的信息、经验教训和最佳实践,欢迎随时通过 translations@ethereum.org 与我们联系。 From e430739d8ea992d45d3c6ce1c689bc2417f7af65 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:32 -0800 Subject: [PATCH 146/581] update(i18n): public/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md --- .../index.md | 150 +++++++++--------- 1 file changed, 74 insertions(+), 76 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md index a0a4b0b99da..cd474a809c5 100644 --- a/public/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md +++ b/public/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md @@ -2,10 +2,7 @@ title: 使用 Web3 发送交易 description: "本文是面向初学者的指南,介绍如何用 Web3 发送以太坊交易。 向以太坊区块链发送交易主要有三个步骤:创建、签署和广播。 我们将对三个方面进行讨论。" author: "Elan Halpern" -tags: - - "交易" - - "web3.js" - - "alchemy" +tags: [ "交易", "web3.js", "Alchemy" ] skill: beginner lang: zh published: 2020-11-04 @@ -13,86 +10,86 @@ source: Alchemy 文档 sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs --- -本文是面向初学者的指南,介绍如何用 Web3 发送以太坊交易。 向以太坊区块链发送交易主要有三个步骤:创建、签署和广播。 我们将对这三个方面进行讨论,希望能回答你可能遇到的所有问题! 在本教程中,我们将使用 [Alchemy](https://www.alchemy.com/) 将我们的交易发送到以太坊链。 可以[点击此处创建一个免费 Alchemy 帐户](https://auth.alchemyapi.io/signup)。 +本文是面向初学者的指南,介绍如何用 Web3 发送以太坊交易。 向以太坊区块链发送交易主要有三个步骤:创建、签署和广播。 我们将逐一讲解这三个步骤,希望能回答你可能遇到的任何问题! 在本教程中,我们将使用 [Alchemy](https://www.alchemy.com/) 将我们的交易发送到以太坊链。 你可以在[此处创建免费的 Alchemy 帐户](https://auth.alchemyapi.io/signup)。 -**注意:**本指南适用于在应用程序_后端_签署交易。 如果想在前端集成交易签署,请查看将 [Web3 与浏览器提供程序集成](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider)。 +\*\*注意:\*\*本指南适用于在应用程序的_后端_签署交易。 如果想在前端集成交易签名,可以查阅[集成 Web3 和浏览器提供商](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider)的相关内容。 -## 基本概念 {#the-basics} +## 基础知识 {#the-basics} -像大多数区块链开发人员刚开始的时候一样,你可能已经对如何发送交易(应该非常简单)进行了一些研究,然后阅读了大量的指南,发现每个人有不同的解读,让你有点不知所措和困惑。 如果你已上了那条船,就不要担心,我们在某些时候都会这样! 所以,在开始之前,让我们弄清楚一些事情: +和大多数区块链开发者入门时一样,你可能已经研究了如何发送交易(这本应很简单),但却看到了海量指南,而且众说纷纭,让你感到不知所措、心生困惑。 如果你也有同感,别担心,我们都曾经历过! 所以,在开始之前,我们先要弄清楚几件事: -### 1. Alchemy 不会存储你的私钥 {#alchemy-does-not-store-your-private-keys} +### 1. Alchemy 不会储存你的私钥 {#alchemy-does-not-store-your-private-keys} -- 这意味着 Alchemy 无法代表你签署和发送交易。 这样做的原因是出于安全考虑。 Alchemy 绝不会要求你分享你的私钥,你也绝不应该与托管节点(或任何人)分享你的私钥。 -- 你可以使用 Alchemy 的核心应用程序接口读取区块链,但要写入它,你需要使用其他方式签署交易然后通过 Alchemy 发送它们(任何其他[节点服务](/developers/docs/nodes-and-clients/nodes-as-a-service/)也是如此)。 +- 这意味着 Alchemy 无法代表你签署和发送交易。 这是出于安全考虑。 Alchemy 绝不会要求你分享你的私钥,你也绝不应该与托管节点(或任何其他人)分享你的私钥。 +- 你可以使用 Alchemy 的核心 API 从区块链读取数据,但要向区块链写入数据,你需要先用其他工具为交易签名,然后再通过 Alchemy 发送(这对任何其他[节点服务](/developers/docs/nodes-and-clients/nodes-as-a-service/)都一样)。 ### 2. 什么是“签名者”? {#what-is-a-signer} -- 签名者将使用你的私钥为你签署交易。 在本教程中,我们将使用 [Alchemy Web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) 签署我们的交易,但你也可以使用任何其他 Web3 库。 -- 在前端,一个很好的签名者示例是 [MetaMask](https://metamask.io/),它将代表你签署和发送交易。 +- 签名者会用你的私钥为你签署交易。 在本教程中,我们将使用 [Alchemy web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) 签署交易,但你也可以使用任何其他 web3 库。 +- 在前端,[MetaMask](https://metamask.io/) 就是一个很好的签名者例子,它会代表你签署并发送交易。 -### 3. 为什么我需要在我的交易上签名? {#why-do-i-need-to-sign-my-transactions} +### 3. 为什么我需要为我的交易签名? {#why-do-i-need-to-sign-my-transactions} -- 每个想要在以太坊网络上发送交易的用户都必须在交易上签名(使用他们的私钥),以验证交易的来源是其所声称的那个人。 -- 保护这个私钥非常重要,因为拥有这个私钥就可以完全控制你的以太坊帐户,允许你(或任何有权限的人)代表你进行交易。 +- 每个想在以太坊网络上发送交易的用户,都必须用自己的私钥为交易签名,以验证交易发起人的身份。 +- 保护私钥至关重要,因为拥有私钥就等于拥有了以太坊帐户的完全控制权,你(或任何知道私钥的人)可以代表你执行交易。 ### 4. 如何保护我的私钥? {#how-do-i-protect-my-private-key} -- 有许多方法来保护你的私钥,并使用它来发送交易。 在本教程中,我们将使用 `.env` 文件。 然而,你也可以使用一个单独的存储私钥的服务提供器,使用一个密钥库文件,或其他选项。 +- 有很多方法可以保护你的私钥并用它来发送交易。 在本教程中,我们将使用一个 `.env` 文件。 不过,你也可以使用单独的私钥存储提供商、使用密钥存储文件或其他选项。 ### 5. `eth_sendTransaction` 和 `eth_sendRawTransaction` 之间有什么区别? {#difference-between-send-and-send-raw} -`eth_sendTransaction` 和 `eth_sendRawTransaction` 都是 Ethereum API 函数,用于将交易广播到 Ethereum 网络,以便将其添加到未来的区块中。 它们在处理交易签名的方式上有所不同。 +`eth_sendTransaction` 和 `eth_sendRawTransaction` 都是以太坊 API 函数,可将交易广播到以太坊网络,以便将其添加到未来的区块中。 它们在处理交易签名的方式上有所不同。 -- [`eth_sendTransaction`](https://docs.web3js.org/api/web3-eth/function/sendTransaction) 用于发送_未签名的_交易,这意味着你向其发送交易的节点必须管理你的私钥,以便该节点能够在将交易广播到链上之前对交易进行签名。 由于 Alchemy 没有用户私钥,因此他们不支持这种方法。 -- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) 用于广播已经签名的交易。 这意味着你首先必须使用 [`signTransaction(tx, private_key)`](https://docs.web3js.org/api/web3-eth-accounts/function/signTransaction),然后将结果发送到 `eth_sendRawTransaction`。 +- [`eth_sendTransaction`](https://docs.web3js.org/api/web3-eth/function/sendTransaction) 用于发送_未签名_的交易,这意味着你发送到的节点必须管理你的私钥,这样它才能在将交易广播到链上之前对其进行签名。 由于 Alchemy 不持有用户的私钥,因此不支持此方法。 +- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) 用于广播已签名的交易。 这意味着你必须先使用 [`signTransaction(tx, private_key)`](https://docs.web3js.org/api/web3-eth-accounts/function/signTransaction),然后将结果传入 `eth_sendRawTransaction`。 -当使用 web3 时,通过调用函数 [web3.eth.sendSignedTransaction](https://docs.web3js.org/api/web3-eth/function/sendSignedTransaction) 来访问 `eth_sendRawTransaction`。 +使用 web3 时,可以通过调用 [web3.eth.sendSignedTransaction](https://docs.web3js.org/api/web3-eth/function/sendSignedTransaction) 函数来访问 `eth_sendRawTransaction`。 这就是我们将在本教程中使用的函数。 -### 6. Web3 库是什么? {#what-is-the-web3-library} +### 6. 什么是 web3 库? {#what-is-the-web3-library} -- Web3.js 是一个围绕标准 JSON-RPC 调用的封装库,在以太坊开发中使用相当普遍。 -- 有许多针对不同语言的 web3 库。 在本教程中,我们将使用 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview),它用 JavaScript 编写。 你可以在[这里](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries)查看其他选项,例如 [ethers.js](https://docs.ethers.org/v5/)。 +- Web3.js 是一个围绕标准 JSON-RPC 调用的封装库,在以太坊开发中非常常用。 +- 有许多适用于不同语言的 web3 库。 在本教程中,我们将使用以 JavaScript 编写的 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview)。 你可以在[此处](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries)查看其他选项,例如 [ethers.js](https://docs.ethers.org/v5/)。 -好了,现在我们把这些问题都解决了,让我们继续学习教程。 请随时在 Alchemy [discord](https://discord.gg/gWuC7zB) 中提问! +好了,澄清了这几个问题后,我们继续学习本教程。 欢迎随时在 Alchemy [discord](https://discord.gg/gWuC7zB) 提问! -### 7. 如何发起安全、燃料优化且私密的交易? {#how-to-send-secure-gas-optimized-and-private-transactions} +### 7. 如何发送安全、燃料优化和私密的交易? {#how-to-send-secure-gas-optimized-and-private-transactions} -- [Alchemy 有一套交易应用程序接口。](https://docs.alchemy.com/reference/transact-api-quickstart)。 你可以使用它们发起强化交易,在交易发生之前模拟交易,发起私密交易,和发起燃料优化交易。 -- 你也可以使用 [Notify 应用程序接口](https://docs.alchemy.com/docs/alchemy-notify)在你的交易被从内存池添加到链上时收到提醒。 +- [Alchemy 有一套 Transact API](https://docs.alchemy.com/reference/transact-api-quickstart)。 你可以用它们来发送增强型交易、在交易发生前模拟交易、发送私密交易和发送燃料优化的交易。 +- 你也可以使用 [Notify API](https://docs.alchemy.com/docs/alchemy-notify),在你的交易被从内存池中取出并添加到链上时收到提醒。 -**注意:**本指南需要使用 Alchemy 帐户、以太坊地址或安装 MetaMask 钱包、NodeJs 和 npm。 如果没有,按以下步骤操作: +\*\*注意:\*\*本指南需要一个 Alchemy 帐户、一个以太坊地址或 MetaMask 钱包,并且需要安装 NodeJs 和 npm。 如果没有,请按以下步骤操作: -1. [创建一个免费的 Alchemy 帐户](https://auth.alchemyapi.io/signup) -2. [创建 MetaMask 帐户](https://metamask.io/)(或获取以太坊地址) -3. [按照这些步骤安装 NodeJs 和 NPM](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs) +1. [创建免费的 Alchemy 帐户](https://auth.alchemyapi.io/signup) +2. [创建 MetaMask 帐户](https://metamask.io/)(或获取一个以太坊地址) +3. [按照这些步骤安装 NodeJs 和 NPM](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs) ## 发送交易的步骤 {#steps-to-sending-your-transaction} ### 1. 在 Sepolia 测试网上创建一个 Alchemy 应用程序 {#create-an-alchemy-app-on-the-sepolia-testnet} -导航到你的 [Alchemy 仪表板](https://dashboard.alchemyapi.io/)并创建一个新的应用程序,选择 Sepolia(或任何其他测试网)作为你的网络。 +导航至你的 [Alchemy 控制面板](https://dashboard.alchemyapi.io/)并创建一个新应用,为你的网络选择 Sepolia(或任何其他测试网)。 -### 2. 从 Sepolia 水龙头请求以太币 {#request-eth-from-sepolia-faucet} +### 2. 从 Sepolia 水龙头请求 ETH {#request-eth-from-sepolia-faucet} -请参考 [Alchemy Sepolia](https://www.sepoliafaucet.com/) 的说明来接收以太币。 确保包含你的 **Sepolia** 以太坊地址(来自 MetaMask),而不是其他网络。 按照说明操作后,请仔细检查你是否已在钱包中收到以太币。 +按照 [Alchemy Sepolia 水龙头](https://www.sepoliafaucet.com/)上的说明接收 ETH。 请确保输入你的 **Sepolia** 以太坊地址(来自 MetaMask),而不是其他网络的地址。 按照说明操作后,请再次检查你是否已在钱包中收到 ETH。 -### 3. 创建一个新的项目目录,并使用 `cd` 命令进入该目录。 {#create-a-new-project-direction} +### 3. 创建一个新项目目录并用 `cd` 命令进入 {#create-a-new-project-direction} -从命令行(macs 终端)创建一个新的项目目录并导航到这个目录: +从命令行(Mac 系统是终端)创建一个新项目目录,并进入该目录: ``` mkdir sendtx-example cd sendtx-example ``` -### 4. 安装 Alchemy Web3(或任何 web3 库)。 {#install-alchemy-web3} +### 4. 安装 Alchemy Web3(或任何 web3 库) {#install-alchemy-web3} 在你的项目目录中运行以下命令,以安装 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview): -注意,如果你想要使用 ethers.js 库, 请按照[这里](https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum)的说明操作。 +注意,如果你想使用 ethers.js 库,请[按照此处的说明操作](https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum)。 ``` npm install @alch/alchemy-web3 @@ -100,7 +97,7 @@ npm install @alch/alchemy-web3 ### 5. 安装 dotenv {#install-dotenv} -我们将使用 `.env` 文件安全地存储我们的应用程序接口密钥和私钥。 +我们将使用一个 `.env` 文件来安全地存储我们的 API 密钥和私钥。 ``` npm install dotenv --save @@ -108,9 +105,9 @@ npm install dotenv --save ### 6. 创建 `.env` 文件 {#create-the-dotenv-file} -在你的项目目录中创建一个 `.env` 文件并添加以下内容(替换“`your-api-url`”和“`your-private-key`”) +在你的项目目录中创建一个 `.env` 文件,并添加以下内容(替换“`your-api-url`”和“`your-private-key`”) -- 要找到你的 Alchemy 应用程序接口 URL,请导航到你刚刚在仪表板上创建的应用程序详细信息页面。点击右上角的“View Key”,然后获取 HTTP URL。 +- 要查找你的 Alchemy API URL,请导航到你刚在控制面板上创建的应用的详细信息页面,点击右上角的“View Key”,然后复制 HTTP URL。 - 要使用 MetaMask 查找你的私钥,请查看此[指南](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key)。 ``` @@ -121,16 +118,16 @@ PRIVATE_KEY = "your-private-key" -不要提交 .env! 请确保永远不要与任何人共享或公开你的 .env 文件,因为这样做会泄露你的私钥。 如果你使用版本控制,请将你的 .env 添加到 gitignore 文件中。 +不要提交 .env! 请确保永远不要与任何人共享或公开你的 .env 文件,因为这样做会泄露你的机密信息。 如果你使用版本控制,请将你的 .env 添加到 gitignore 文件中。 ### 7. 创建 `sendTx.js` 文件 {#create-sendtx-js} -太好了,既然我们已经在 `.env` 文件中保护了敏感数据,我们开始编码吧。 为了发起示例交易,我们将以太币发送回Sepolia 水龙头。 +很好,现在我们已将敏感数据保护在 `.env` 文件中,可以开始编码了。 对于我们的发送交易示例,我们会将 ETH 发送回 Sepolia 水龙头。 -创建一个 `sendTx.js` 文件,我们将在其中配置和发送我们的示例交易,并在该文件中添加以下几行代码: +创建一个 `sendTx.js` 文件,我们将在这里配置并发送我们的示例交易,然后向其中添加以下代码行: ``` async function main() { @@ -138,25 +135,25 @@ async function main() { const { API_URL, PRIVATE_KEY } = process.env; const { createAlchemyWeb3 } = require("@alch/alchemy-web3"); const web3 = createAlchemyWeb3(API_URL); - const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address + const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: 将此地址替换为你自己的公共地址 - const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0 + const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce 从 0 开始计数 const transaction = { - 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth - 'value': 1000000000000000000, // 1 ETH + 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // 用于返回 eth 的水龙头地址 + 'value': 1000000000000000000, // 1 个 ETH 'gas': 30000, 'nonce': nonce, - // optional data field to send message or execute smart contract + // 发送消息或执行智能合约的可选数据字段 }; const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY); web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) { if (!error) { - console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!"); + console.log("🎉 你的交易哈希是: ", hash, "\n 检查 Alchemy 的内存池,查看你的交易状态!"); } else { - console.log("❗Something went wrong while submitting your transaction:", error) + console.log("❗提交交易时出错了:", error) } }); } @@ -164,30 +161,31 @@ async function main() { main(); ``` -确保将**第 6 行**中的地址替换为你自己的公共地址。 +请务必将**第 6 行**的地址替换为你自己的公共地址。 -现在,在我们开始运行这段代码之前,我们先来谈谈其中的一些组件。 +现在,在运行此代码之前,我们先来讨论一下其中的一些组件。 -- `nonce`:nonce 规范用于跟踪从你的地址发送的交易数量。 为了安全起见,我们需要这样做,以防止[重放攻击](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce)。 要获得从你的地址发送的交易数量,我们可以使用 [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount)。 -- `transaction`:交易对象有几个方面需要我们指定。 - - `to`:这是我们要向其发送以太币的地址。 在这个示例中,我们将以太币发送回我们最初请求的 [Sepolia 水龙头](https://sepoliafaucet.com/)。 - - `value`:这是我们希望发送的金额,以 Wei 为单位,其中 10^18 Wei = 1 个以太币 - - `gas`:有多种方法可确定要包括在你的交易中的正确燃料数量。 Alchemy 甚至提供了一个[燃料价格 Web 钩子](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1),用于当燃料价落在某个阈值范围内时通知你。 对于主网交易,最好查看[以太坊燃料站](https://ethgasstation.info/)一类的燃料估算器,以确定要包括的正确燃料数量。 21000 是以太坊操作所使用的最小燃料数量,所以为了确保我们的交易得以执行,我们在这里输入 30000。 - - `nonce`:参见上面的 nonce 定义。 Nonce 从零开始计数。 - - [OPTIONAL] data:用于在你的转账中发送附加信息或调用智能合约,余额转账不需要此项,请查看下面的注释。 -- `signedTx`:要签署交易对象,我们将使用 `signTransaction` 方法和我们的 `PRIVATE_KEY` -- `sendSignedTransaction`:在我们有一个已签署交易后,我们可以通过使用 `sendSignedTransaction` 将其发送出去,以包含在后续区块中 +- `nonce`:nonce 规范用于跟踪从你的地址发送的交易数量。 我们需要它来确保安全并防止[重放攻击](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce)。 为获取从你的地址发送的交易数量,我们使用 [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount)。 +- `transaction`:交易对象有几个方面需要我们指定 + - `to`:这是我们要将 ETH 发送到的地址。 在本例中,我们将 ETH 发送回我们最初请求 ETH 的 [Sepolia 水龙头](https://sepoliafaucet.com/)。 + - `value`:这是我们希望发送的金额,以 Wei 为单位,其中 10^18 Wei = 1 ETH + - `gas`:有很多方法可以确定交易中要包含的正确燃料数量。 Alchemy 甚至有一个[燃料价格 webhook](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1),可以在燃料价格降至特定阈值时通知你。 对于主网交易,最好使用 [ETH Gas Station](https://ethgasstation.info/) 等燃料估算器来确定要包含的正确燃料数量。 21000 是以太坊上一次操作将使用的最小燃料量,因此为确保我们的交易能够执行,我们在这里设置为 30000。 + - `nonce`:见上面的 nonce 定义。 Nonce 从零开始计数。 + - [可选] data:用于在转账时发送附加信息,或用于调用智能合约。余额转账不需要此字段,请查看下面的说明。 +- `signedTx`:要签署我们的交易对象,我们将使用 `signTransaction` 方法和 `PRIVATE_KEY` +- `sendSignedTransaction`:一旦我们有了签名的交易,就可以使用 `sendSignedTransaction` 将其发送出去,以包含在后续区块中 -**关于数据的注释** 有两种主要类型的交易可以在以太坊中发送。 +**关于数据的说明** +在以太坊中可以发送两种主要类型的交易。 -- 余额转账:将以太币从一个地址发送到另一个地址。 不需要数据字段,但是,如果你想在交易中发送附加信息,可以在此字段中包含 HEX 格式的信息。 - - 例如,假设我们想将星际文件系统文档的哈希写入以太坊链,以便为其提供不可变的时间戳。 我们的数据字段应该看起来像该数据:`web3.utils.toHex('IPFS hash')`。 现在任何人都可以查询该链并查看该文档的添加时间。 -- 智能合约交易:在链上执行一些智能合约代码。 在这种情况下,数据字段应包含你希望执行的智能函数及任何参数。 - - 有关实际示例,请查看此 [Hello World 教程](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction)中的第 8 步。 +- 余额转账:将 ETH 从一个地址发送到另一个地址。 不需要数据字段,但是,如果你想在交易中发送附加信息,可以在此字段中包含十六进制 (HEX) 格式的信息。 + - 例如,假设我们想将 IPFS 文档的哈希写入以太坊链,以便为其提供不可变的时间戳。 我们的数据字段应该如下所示:data: `web3.utils.toHex(‘IPFS hash‘)`。 这样,任何人都可以查询该链,查看该文档的添加时间。 +- 智能合约交易:在链上执行一些智能合约代码。 在这种情况下,数据字段应包含你希望执行的智能合约函数及其所有参数。 + - 如需查看实际示例,请查看此 [Hello World 教程](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction)的第 8 步。 ### 8. 使用 `node sendTx.js` 运行代码 {#run-the-code-using-node-sendtx-js} -返回到你的终端或命令行并运行: +返回你的终端或命令行并运行: ``` node sendTx.js @@ -195,16 +193,16 @@ node sendTx.js ### 9. 在内存池中查看你的交易 {#see-your-transaction-in-the-mempool} -在你的 Alchemy 仪表板上打开[内存池页面](https://dashboard.alchemyapi.io/mempool),并通过你创建的应用程序筛选,以找到你的交易。 我们可以在这里看到交易从待处理状态转换到已开采状态(如果成功),或者从待处理状态转换到被丢弃状态(如果失败)。 确保页面保持在“All”视图下,这样你就能捕捉到“已开采”、“待处理”和“被丢弃”的交易。 你还可以通过查找发送到地址 `0x31b98d14007bdee637298086988a0bbd31184523` 的交易来搜索你的交易。 +在你的 Alchemy 控制面板中打开[内存池页面](https://dashboard.alchemyapi.io/mempool),并按你创建的应用进行筛选以查找你的交易。 在这里,我们可以观察我们的交易从待处理状态转为已打包状态(如果成功)或被丢弃状态(如果失败)。 确保将其保留在“全部”状态,以便捕获“已打包”、“待处理”和“已丢弃”的交易。 你也可以通过查找发送到地址 `0x31b98d14007bdee637298086988a0bbd31184523` 的交易来搜索你的交易。 -要在找到交易后查看交易的详细信息,请选择交易哈希值,你将看到这样的视图: +找到交易后,要查看其详细信息,请选择交易哈希,这会带你进入如下所示的视图: -![内存池监视器截图](./mempool.png) +![内存池观察程序屏幕截图](./mempool.png) -在此处,你可以通过单击红色圆圈中的图标,在 Etherscan 上查看你的交易! +从那里,你可以通过单击红色圆圈中的图标,在 Etherscan 上查看你的交易! -**太好了! 你刚刚使用 Alchemy 发送了你的第一笔以太坊交易 🎉** +**太棒啦!** 你刚刚使用 Alchemy 发送了你的第一笔以太坊交易 🎉\*\* -_如有关于本指南的反馈和建议,请在 Alchemy 的 [Discord](https://discord.gg/A39JVCM) 上给 Elan 留言!_ +_有关本指南的反馈和建议,请在 Alchemy 的 [Discord](https://discord.gg/A39JVCM) 上给 Elan 留言!_ -_最初发表在 [https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy](https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy) 上。_ +_原文发布于 [https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy](https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy)_ From fd9dd136ac7bf5926f3298c26574e597ceca0259 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:35 -0800 Subject: [PATCH 147/581] update(i18n): public/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md --- .../index.md | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md index 743b75c585d..cc52b17a799 100644 --- a/public/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md +++ b/public/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md @@ -1,10 +1,8 @@ --- -title: 设置 web3.js 以用 JavaScript 操作 Ethereum 区块链。 -description: 如何使用智能合约与使用 Solidity 语言的代币进行交互 +title: 设置 web3.js 以在 JavaScript 中使用以太坊区块链 +description: 了解如何设置和配置 web3.js 库,以便从 JavaScript 应用程序与以太坊区块链交互。 author: "jdourlens" -tags: - - "web3.js" - - "javascript" +tags: [ "web3.js", "javascript" ] skill: beginner lang: zh published: 2020-04-11 @@ -27,13 +25,13 @@ address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" npm install web3 --save ``` -接下来,要将 Web3.js 导入 Node.js 脚本或 Browserify 前端项目,你可以使用以下 JavaScript 代码行: +然后,要将 Web3.js 导入 Node.js 脚本或 Browserify 前端项目,你可以使用以下 JavaScript 代码行: ```js const Web3 = require("web3") ``` -现在我们在项目中加入了库,我们需要对其进行初始化。 你的项目需要能够与区块链通信。 大部分以太坊库通过 RPC 的调用与[节点](/developers/docs/nodes-and-clients/)进行通信。 要启动我们的 Web3 提供程序,我们将实例化一个 Web3 实例,并将该提供程序的 URL 作为构造函数传递。 如果你有一个节点或 [ganache 实例在你的计算机上运行](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/),它看起来将是这样: +现在我们已在项目中添加了该库,我们需要对其进行初始化。 你的项目需要能够与区块链通信。 大多数以太坊库通过 RPC 调用与[节点](/developers/docs/nodes-and-clients/)进行通信。 要启动我们的 Web3 提供程序,我们将实例化一个 Web3 实例,并将该提供程序的 URL 作为构造函数传递。 如果你在计算机上运行着节点或 [ganache 实例](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/),它将如下所示: ```js const web3 = new Web3("http://localhost:8545") @@ -68,27 +66,27 @@ async function getBlockNumber() { getBlockNumber() ``` -你可以在[官方 web3.js 文档](https://docs.web3js.org/)中查看该 Web3 实例上可用的所有函数。 +你可以在 [web3.js 官方文档](https://docs.web3js.org/)中查看该 Web3 实例上可用的所有函数。 -大多数 Web3 库都是异步的,因为在后台,该库对返回结果的节点进行 JSON RPC 调用。 +大多数 Web3 库都是异步的,因为在后台,该库对返回结果的节点进行 JSON-RPC 调用。 如果你在浏览器中操作,一些钱包会直接注入 Web3 实例,你应该尽可能尝试使用它,特别是在你打算与用户的以太坊地址交互以进行交易时。 -下面的代码片段用来检测 MetaMask 钱包是否可用,如果可用,则尝试启用它。 稍后它将允许你读取用户的余额,并使它们能够验证你想让它们在以太坊区块链上进行的交易: +下面的代码片段用来检测 MetaMask 钱包是否可用,如果可用,则尝试启用它。 稍后它将允许你读取用户的余额,并使他们能够验证你想让他们在以太坊区块链上进行的交易: ```js if (window.ethereum != null) { state.web3 = new Web3(window.ethereum) try { - // Request account access if needed + // 如果需要,请求帐户访问权限 await window.ethereum.enable() - // Accounts now exposed + // 帐户现已公开 } catch (error) { - // User denied account access... + // 用户拒绝了帐户访问... } } ``` -web3.js 的替代品,如 [Ethers.js](https://docs.ethers.io/),确实存在,也已经被广泛使用。 在下一个教程中,我们将了解[如何轻松监听区块链上的新传入区块并查看它们包含的内容](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/)。 +web3.js 的替代品,如 [Ethers.js](https://docs.ethers.io/),也已存在并被广泛使用。 在下一个教程中,我们将了解[如何轻松侦听区块链上新传入的区块并查看其内容](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/)。 From 0b4176a9ad4b89e86551a848d80977830c3cede5 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:38 -0800 Subject: [PATCH 148/581] update(i18n): public/content/translations/zh/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md --- .../index.md | 69 +++++++++---------- 1 file changed, 32 insertions(+), 37 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md b/public/content/translations/zh/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md index 9e74b787ab0..fb16e11cf6a 100644 --- a/public/content/translations/zh/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md +++ b/public/content/translations/zh/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md @@ -1,20 +1,22 @@ --- -title: "Waffle使用hardhat和ethers设置hello world的教程" -description: 使用hardhat和ethers.js制作你的第一个Waffle项目 +title: "Waffle:使用 Hardhat 和 ethers 的“hello world”教程" +description: 使用 Hardhat 和 ethers.js 创建你的第一个 Waffle 项目 author: "MiZiet" tags: - - "waffle" - - "智能合约" - - "solidity" - - "测试" - - "hardhat" - - "ethers.js" + [ + "waffle", + "智能合同", + "Solidity", + "测试", + "hardhat", + "ethers.js" + ] skill: beginner lang: zh published: 2020-10-16 --- -在这个 [Waffle](https://ethereum-waffle.readthedocs.io) 教程中,我们将学习如何使用 [hardhat](https://hardhat.org/) 和 [ethers.js](https://docs.ethers.io/v5/) 设置一个简单的“Hello world”智能合约项目。 然后我们将学习如何向我们的智能合约中添加一个新功能,以及如何使用 Waffle 测试它。 +在本 [Waffle](https://ethereum-waffle.readthedocs.io) 教程中,我们将学习如何使用 [hardhat](https://hardhat.org/) 和 [ethers.js](https://docs.ethers.io/v5/) 建立一个简单的“Hello world”智能合约项目。 然后我们将学习如何向我们的智能合约中添加一个新功能,以及如何使用 Waffle 测试它。 让我们从创建新项目开始: @@ -31,20 +33,16 @@ npm init 并安装所需的软件包: ```bash -yarn add -D hardhat -@nomiclabs/hardhat-ethers ethers -@nomiclabs/hardhat-waffle ethereum-waffle chai +yarn add -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai ``` 或 ```bash -npm install -D hardhat -@nomiclabs/hardhat-ethers ethers -@nomiclabs/hardhat-waffle ethereum-waffle chai +npm install -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai ``` -下一步是通过运行 `npx hardhat` 创建一个示例 hardhat 项目。 +下一步是通过运行 `npx hardhat` 创建一个 Hardhat 示例项目。 ```bash 888 888 888 888 888 @@ -56,17 +54,15 @@ npm install -D hardhat 888 888 888 888 888 Y88b 888 888 888 888 888 Y88b. 888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888 -👷 Welcome to Hardhat v2.0.3 👷‍ +👷 欢迎来到 Hardhat v2.0.3 👷‍ -? What do you want to do? … -Bachan -Mise en contexte. Est ce des lignes de code, dans ce cas ce n'est pas traduisible -❯ Create a sample project -Create an empty hardhat.config.js -Quit +? 你想做什么?… +❯ 创建一个示例项目 + 创建一个空的 hardhat.config.js + 退出 ``` -选择 `Create a sample project`(创建示例项目) +选择 `Create a sample project`(创建示例项目)。 我们的项目结构应如下所示: @@ -87,7 +83,7 @@ MyWaffleProject ### 现在让我们来谈谈其中一些文件: {#now-lets-talk} -- Greeter.sol - 我们的智能合约是用solidity编写的; +- Greeter.sol - 我们用 Solidity 编写的智能合约; ```solidity contract Greeter { @@ -111,9 +107,9 @@ greeting = _greeting; 我们的智能合约可以分为三个部分: -1. 构造函数 - 我们在其中声明一个字符串类型变量,名为`greeting`, -2. 函数greet - 调用时返回`greeting`的函数, -3. 函数setGreeting - 允许我们更改`greeting`值的函数。 +1. 构造函数 - 我们在其中声明一个名为 `greeting` 的字符串类型变量, +2. 函数 `greet` - 调用时将返回 `greeting` 的函数, +3. 函数 `setGreeting` - 允许我们更改 `greeting` 值的函数。 - sample-test.js - 我们的测试文件 @@ -123,7 +119,6 @@ describe("Greeter", function () { const Greeter = await ethers.getContractFactory("Greeter") const greeter = await Greeter.deploy("Hello, world!") - await greeter.deployed() expect(await greeter.greet()).to.equal("Hello, world!") @@ -135,7 +130,7 @@ describe("Greeter", function () { ### 下一步是编译我们的合约并运行测试: {#compiling-and-testing} -Waffle 测试使用 Mocha(测试框架)与 Chai(一个断言库)。 你只需运行 `npx hardhat test` 并等待以下消息出现。 +Waffle 测试使用 Mocha(测试框架)与 Chai(一个断言库)。 你只需运行 `npx hardhat test` 并等待以下消息出现即可。 ```bash ✓ Should return the new greeting once it's changed @@ -143,10 +138,10 @@ Waffle 测试使用 Mocha(测试框架)与 Chai(一个断言库)。 你 ### 到目前为止,一切看起来都很好,让我们为我们的项目增加一些复杂性吧 {#adding-complexity} -想象一下这种情况,有人添加了一个空字符串作为问候语。 这不是一种热情的问候,对吗? -让我们确保这一点不会发生: +想象一下这种情况,有人添加了一个空字符串作为问候语。 那可不是个热情的问候,对吧? +我们来确保这种情况不会发生: -当有人传递空字符串时,我们想使用 solidity 的 `revert`。 一件好事是,我们可以使用 Waffle 的 chai 匹配器 `to.be.revertedWith()` 轻松测试此功能。 +当有人传入空字符串时,我们希望使用 Solidity 的 `revert`。 好在我们可以用 Waffle 的 chai 匹配器 `to.be.revertedWith()` 轻松测试这个功能。 ```js it("Should revert when passing an empty string", async () => { @@ -160,7 +155,7 @@ it("Should revert when passing an empty string", async () => { }) ``` -看起来我们的新测试没通过: +看来我们的新测试没有通过: ```bash Deploying a Greeter with greeting: Hello, world! @@ -200,10 +195,10 @@ greeting = _greeting; 2 passing (2s) ``` -恭喜! 你做到了:) +恭喜! 你做到了 :) -### 总结 {#conclusion} +### 结论 {#conclusion} 我们使用 Waffle、Hardhat 和 ethers.js 制作了一个简单的项目。 我们学习了如何设置项目、添加测试和实现新功能。 -欲了解更多用于测试你的智能合约的优秀 chai 匹配器,请查看[官方 Waffle 文档](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html)。 +如需更多用于测试智能合约的出色 chai 匹配器,请查看 [Waffle 的官方文档](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html)。 From 82f3707861cbab4172358349680200e724ec9307 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:40 -0800 Subject: [PATCH 149/581] update(i18n): public/content/translations/zh/developers/docs/data-availability/blockchain-data-storage-strategies/index.md --- .../blockchain-data-storage-strategies/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/content/translations/zh/developers/docs/data-availability/blockchain-data-storage-strategies/index.md b/public/content/translations/zh/developers/docs/data-availability/blockchain-data-storage-strategies/index.md index 72bc1e63f42..d6ed2764ae6 100644 --- a/public/content/translations/zh/developers/docs/data-availability/blockchain-data-storage-strategies/index.md +++ b/public/content/translations/zh/developers/docs/data-availability/blockchain-data-storage-strategies/index.md @@ -10,13 +10,13 @@ lang: zh - 调用数据 - 具有一层网络机制的链下 - 合约“代码” -- 事件 +- 活动 - 以太坊虚拟机存储 使用方法的选择基于几个标准: - 信息来源。 调用数据中的信息不能直接来自区块链本身。 -- 信息目的地。 Calldata 仅在其发起的交易中可用。 链上完全无法访问事件。 +- 信息目的地。 Calldata 仅在包含它的交易中可用。 链上完全无法访问事件。 - 能够接受多少麻烦? 相比在浏览器内运行的应用程序中的轻客户端,运行全节点的计算机能够执行更多处理。 - 是否有必要使来自每个节点的信息易于访问? - 安全要求。 @@ -63,7 +63,7 @@ EIP-4844 二进制大对象的主要使用案例是供卷叠发布其交易。 [ 这是将数据永久放在区块链上最便宜的方法。 每个字节的费用为 4 执行燃料(如果字节为 0) 或 16 执行燃料(如果字节为任意其他值)。 如果数据经过压缩(这是标准做法),则每个字节的值几乎相等,所以每个字节的平均费用约为 15.95 燃料。 -撰写本文时的价格为 12 Gwei/燃料(2300 美元/以太币),这意味着每个字节的费用约为 45 美分。 由于这是 EIP-4844 之前最便宜的方法,卷叠使用此方法来储存交易信息,这些交易信息必须在[缺陷质询期](https://docs.optimism.io/stack/protocol/overview#fault-proofs)内可用,但无需直接在链上访问。 +撰写本文时的价格为 12 Gwei/燃料(2300 美元/以太币),这意味着每千字节的费用约为 45 美分。 由于这是 EIP-4844 之前最便宜的方法,卷叠使用此方法来储存交易信息,这些交易信息必须在[缺陷质询期](https://docs.optimism.io/stack/protocol/overview#fault-proofs)内可用,但无需直接在链上访问。 在以下地址可以查看一些知名卷叠发布的交易。 @@ -114,5 +114,5 @@ EIP-4844 二进制大对象的主要使用案例是供卷叠发布其交易。 [ | 调用数据 | 链下 | 由以太坊永久保证(区块链的一部分) | 只有被写入合约时于该交易可用 | | | 具有一层网络机制的链下 | 链下 | 在质询期内由“一名诚实的验证者”保证 | 仅哈希可用 | 仅在质询期内由质询机制提供保证 | | 合约代码 | 链上或链下 | 由以太坊永久保证(区块链的一部分) | 是 | 写入到一个不以 `0xEF` 开头的“随机”地址 | -| 事件 | 链上 | 由以太坊永久保证(区块链的一部分) | 否 | | +| 活动 | 链上 | 由以太坊永久保证(区块链的一部分) | 否 | | | 存储 | 链上 | 由以太坊永久保证(区块链的一部分,并保持当前状态直至被覆盖) | 是 | | From 5688123216f8a5433e06ebae29e5da1db0aaafea Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:44 -0800 Subject: [PATCH 150/581] update(i18n): public/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md --- .../index.md | 251 +++++++++--------- 1 file changed, 125 insertions(+), 126 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md index c2d60116876..83d94e9944d 100644 --- a/public/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md +++ b/public/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md @@ -1,120 +1,115 @@ --- -title: 如何使用Manticore来发现智能合约漏洞 -description: 如何使用Manticore来自动发现智能合约漏洞 +title: 如何使用 Manticore 发现智能合约中的漏洞 +description: 如何使用 Manticore 自动发现智能合约中的漏洞 author: Trailofbits lang: zh -tags: - - "solidity" - - "智能合约" - - "安全性" - - "测试" - - "形式化验证" +tags: [ "Solidity", "智能合同", "安全性。", "测试", "形式化验证" ] skill: advanced published: 2020-01-13 source: 构建安全的合约 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore --- -本教程的目的是展示如何使用Manticore自动发现智能合约中的漏洞。 +本教程的目的是展示如何使用 Manticore 自动发现智能合约中的漏洞。 ## 安装 {#installation} -Manticore需要使用python 3.6。 它可以通过pip或使用docker来安装。 +Manticore 需要 Python 3.6 或更高版本。 它可以通过 pip 或使用 docker 来安装。 -### 使用docker的Manticore {#manticore-through-docker} +### 通过 docker 使用 Manticore {#manticore-through-docker} ```bash docker pull trailofbits/eth-security-toolbox docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox ``` -_最后一个命令在一个可访问你当前目录的docker中运行eth-security工具箱。 你可以更改你主机中的文件,并从docker中运行文件上的工具_ +_最后一个命令在一个可访问你当前目录的 docker 中运行 eth-security-toolbox。 你可以从主机更改文件,并在 docker 中对文件运行工具_ -在docker中,运行: +在 docker 中,运行: ```bash solc-select 0.5.11 cd /home/trufflecon/ ``` -### 使用pip的Manticore {#manticore-through-pip} +### 通过 pip 使用 Manticore {#manticore-through-pip} ```bash pip3 install --user manticore ``` -建议采用solc 0.5.11。 +建议使用 solc 0.5.11。 ### 运行脚本 {#running-a-script} -使用python 3运行一个python脚本: +使用 python 3 运行 python 脚本: ```bash python3 script.py ``` -## 动态符号化执行简介 {#introduction-to-dynamic-symbolic-execution} +## 动态符号执行简介 {#introduction-to-dynamic-symbolic-execution} -### Nutshell中的动态符号化执行 {#dynamic-symbolic-execution-in-a-nutshell} +### 动态符号执行简述 {#dynamic-symbolic-execution-in-a-nutshell} -动态符号化执行(DSE)是一种程序分析技术,用于探究具有高度语义意识的状态空间。 这项技术是基于 "程序路径"的发现 ,以一种称为`path predicates`的数学公式表示。 就概念来说,这种技术对路径预测的操作分为两步: +动态符号执行 (DSE) 是一种程序分析技术,可利用高度的语义感知来探索状态空间。 这项技术基于对“程序路径”的发现,这些路径表示为称为`路径谓词`的数学公式。 从概念上讲,此技术分两步对路径谓词进行操作: 1. 它们是利用对程序输入的约束来构建的。 2. 它们被用来生成程序输入,从而导致相关路径的执行。 -这种方法不会产生误报,因为所有被识别的程序状态都可以在具体执行过程中被触发。 例如,如果分析发现了一个整数溢出,就可以保证它是可重现的 +这种方法不会产生误报,因为所有被识别的程序状态都可以在具体执行过程中被触发。 例如,如果分析发现了一个整数溢出,就可以保证它是可重现的。 -### 路径预测示例 {#path-predicate-example} +### 路径谓词示例 {#path-predicate-example} -为了了解DSE如何工作,请考虑以下示例: +为了了解 DSE 如何工作,请考虑以下示例: ```solidity -f(uint a). - - if (aa== 65) } - // bug 存在 +function f(uint a){ + if (a == 65) { + // 存在一个漏洞 + } } ``` -因为f()包含两个路径,DSE将构建两个不同的路径预测: +由于 `f()` 包含两条路径,DSE 将构建两个不同的路径谓词: -- 路径1: `a == 65` -- 路径 2: `Not (a == 65)` +- 路径 1:`a == 65` +- 路径 2:`Not (a == 65)` -每个路径预测都是一个数学公式,可以传递给所谓的 [SMT 求解器](https://wikipedia.org/wiki/Satisfiability_modulo_theories),求解器将尝试解方程式。 对于`路径1`,求解器会说,可以用`a=65`探索路径。 对于`路径2`,求解器可以给`a`指定一个65以外的任何值,例如`a=0`。 +每个路径谓词都是一个数学公式,可以将其提供给所谓的 [SMT 求解器](https://wikipedia.org/wiki/Satisfiability_modulo_theories),求解器会尝试求解该方程式。 对于“路径 1”,求解器会指出可以使用 `a = 65` 探索该路径。 对于“路径 2”,求解器可以为 `a` 指定一个 65 以外的任何值,例如 `a = 0`。 ### 验证属性 {#verifying-properties} -Manticore允许完全控制每个路径的所有执行情况。 因此,它允许你在几乎任何东西上添加任意限制。 这种控制允许在合约上创建财产。 +Manticore 允许完全控制每个路径的所有执行情况。 因此,它允许你为几乎任何东西添加任意约束。 这种控制允许在合约上创建属性。 请考虑下面的示例: ```solidity -function unsafe_add(uint a, uint b) returns(uint c)。 - c = a + b;// no overflow protection - return c; +function unsafe_add(uint a, uint b) returns(uint c){ + c = a + b; // 没有溢出保护 + return c; } ``` 函数中只有一个要探索的路径: -- 路径1: `c = a + b` +- 路径 1:`c = a + b` -使用Manticore,你可以对溢出进行检查,并对路径预测加以限制: +使用 Manticore,你可以检查溢出,并向路径谓词添加约束: - `c = a + b AND (c < a OR c < b)` -如果有可能找到一个`a`和`b`的估值,对于这个估值,上面的路径预测是可行的,这意味着你发现了一个溢出。 例如,求解器可以生成输入`a = 10 , b = MAXUINT256`。 +如果可以为 `a` 和 `b` 找到一个使上述路径谓词可行的赋值,则意味着你发现了一个溢出。 例如,求解器可以生成输入 `a = 10, b = MAXUINT256`。 -如果你考虑一个固定版本: +如果你考虑一个修复后的版本: ```solidity function safe_add(uint a, uint b) returns(uint c){ c = a + b; - require(c->=a); - require(c)>=b); + require(c>=a); + require(c>=b); return c; } ``` @@ -123,13 +118,13 @@ function safe_add(uint a, uint b) returns(uint c){ - `c = a + b AND (c >= a) AND (c=>b) AND (c < a OR c < b)` -这个公式无法得以解决;在其他领域,这是一个在`safe_add`中,`c`总会增加的**证明**。 +这个公式无法求解;换句话说,这**证明**了在 `safe_add` 中,`c` 的值总是会增加。 -因此,DSE是一个强大的工具,可以验证你代码的任意限制。 +因此,DSE 是一个强大的工具,可以验证你代码中的任意约束。 -## 在Manticore下运行 {#running-under-manticore} +## 在 Manticore 下运行 {#running-under-manticore} -我们将看到如何探索使用Manticore API的智能合约。 目标是以下智能合约[`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol): +我们将了解如何使用 Manticore 应用程序接口来探索智能合约。 目标是以下智能合约 [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol): ```solidity pragma solidity >=0.4.24 <0.6.0; @@ -143,15 +138,15 @@ contract Simple { } ``` -### 运行一个独立的探索方式 {#run-a-standalone-exploration} +### 运行独立探索 {#run-a-standalone-exploration} -你可以通过以下命令直接在智能合约上运行Manticore(`project`可以是一个Solidity文件,或者是项目目录): +你可以通过以下命令直接在智能合约上运行 Manticore(`project` 可以是一个 Solidity 文件,或者是项目目录): ```bash $ manticore project ``` -你将会获得像这个一样的测试案例输出(顺序可能有变): +你将会获得像下面这样的测试用例输出(顺序可能有变): ``` ... @@ -166,37 +161,37 @@ $ manticore project ... ``` -在没有额外信息的情况下,Manticore将利用新的符号交易探索智能合约,直到它不再探索合约上的新途径为止。 Manticore不会在失败后执行新的交易(如恢复原状后)。 +在没有额外信息的情况下,Manticore 将利用新的符号交易探索合约,直到它不再探索合约上的新路径为止。 Manticore 不会在失败后(例如:回滚后)执行新的交易。 -Manticore将在一个`mcore_*`目录中输出信息。 除其他外,你将在这个目录中找到: +Manticore 将在一个 `mcore_*` 目录中输出信息。 除其他外,你将在这个目录中找到: -- `global.summary`:覆盖面和编译器警告 -- `test_XXXXX.summary`:覆盖面、前一次的说明、每次测试案例的帐户余额 -- `test_XXXXX.tx`:每个测试案例的交易详细列表 +- `global.summary`:覆盖率和编译器警告 +- `test_XXXXX.summary`:每个测试用例的覆盖率、最后一条指令、账户余额 +- `test_XXXXX.tx`:每个测试用例的交易详细列表 -在这里,Manticore发现了7个测试案例,它们对应于(文件名顺序可能会改变): +在这里,Manticore 发现了 7 个测试用例,它们对应于(文件名顺序可能会改变): -| | 交易0 | 交易1 | 交易2 | 结果 | -|:--------------------:|:----:|:-------:| ------- |:--:| -| **test_00000000.tx** | 合约创建 | f(!=65) | f(!=65) | 停止 | -| **test_00000001.tx** | 合约创建 | 回退函数 | | 撤销 | -| **test_00000002.tx** | 合约创建 | | | 返回 | -| **test_00000003.tx** | 合约创建 | f(65) | | 撤销 | -| **test_00000004.tx** | 合约创建 | f(!=65) | | 停止 | -| **test_00000005.tx** | 合约创建 | f(!=65) | f(65) | 撤销 | -| **test_00000006.tx** | 合约创建 | f(!=65) | 回退函数 | 撤销 | +| | 交易 0 | 交易 1 | 交易 2 | 结果 | +| :-------------------------------------------------------: | :--: | :------------------------: | -------------------------- | :----: | +| **test_00000000.tx** | 合约创建 | f(!=65) | f(!=65) | STOP | +| **test_00000001.tx** | 合约创建 | 回退函数 | | REVERT | +| **test_00000002.tx** | 合约创建 | | | RETURN | +| **test_00000003.tx** | 合约创建 | f(65) | | REVERT | +| **test_00000004.tx** | 合约创建 | f(!=65) | | STOP | +| **test_00000005.tx** | 合约创建 | f(!=65) | f(65) | REVERT | +| **test_00000006.tx** | 合约创建 | f(!=65) | 回退函数 | REVERT | -_检索摘要f(!=65)表示使用不同于65的任何值调用的调用的f。_ +_探索摘要 f(!=65) 表示 f 是以任何非 65 的值调用的。_ -正如你可以注意到的那样,Manticore为每个成功或撤销的交易生成一个独特的测试案例。 +正如你可以注意到的那样,Manticore 为每个成功或回滚的交易生成一个独特的测试用例。 -如果你想要快速的代码检查,请使用`--quick-mode`标志(它禁用bug检测器、gas计算...) +如果你想要快速的代码探索,请使用 `--quick-mode` 标志(它会禁用漏洞检测器、燃料计算...) -### 通过API操纵智能合约 {#manipulate-a-smart-contract-through-the-api} +### 通过应用程序接口操纵智能合约 {#manipulate-a-smart-contract-through-the-api} -本节介绍如何通过Manticore Python API操纵智能合约的细节。 你可以使用python 扩展名`*.py`创建新文件,并通过将API命令(下面将介绍其基础内容)添加到这个文件中来写入必要的代码,然后使用`$ python3 *.py`命令运行它。 你也可以直接在python控制台中执行下面的指令,使用`$python3`命令来运行控制台。 +本节详细介绍如何通过 Manticore Python 应用程序接口操纵智能合约。 你可以创建扩展名为 `*.py` 的新 Python 文件,通过将应用程序接口命令(下文会介绍其基础知识)添加到此文件中来编写必要的代码,然后使用 `$ python3 *.py` 命令运行它。 你也可以直接在 python 控制台中执行下面的命令,使用 `$ python3` 命令来运行控制台。 -### 创建帐户 {#creating-accounts} +### 创建账户 {#creating-accounts} 首先,你要通过以下命令启动一个新的区块链: @@ -206,13 +201,13 @@ from manticore.ethereum import ManticoreEVM m = ManticoreEVM() ``` -使用 [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) 创建一个非合约账号: +使用 [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) 创建一个非合约账户: ```python user_account = m.create_account(balance=1000) ``` -可以使用 [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract) 部署一个 Solidity 合约: +可以使用 [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract) 部署 Solidity 合约: ```solidity source_code = ''' @@ -225,19 +220,19 @@ contract Simple { } } ''' -# Initiate the contract +# 初始化合约 contract_account = m.solidity_create_contract(source_code, owner=user_account) ``` -#### 概览 {#summary} +#### 总结 {#summary} -- 可以使用 [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) 和 [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract) 创建用户帐户和合约帐户。 +- 你可以使用 [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) 和 [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract) 来创建用户账户和合约账户。 ### 执行交易 {#executing-transactions} -Manticore支持两种类型的交易: +Manticore 支持两种类型的交易: -- 原始交易:已探索所有函数 +- 原始交易:探索所有函数 - 命名交易:只探索一个函数 #### 原始交易 {#raw-transaction} @@ -251,10 +246,10 @@ m.transaction(caller=user_account, value=value) ``` -调用者、地址、数据或交易的值可以是具体的或抽象的: +交易的调用者、地址、数据或值,既可以是具体的,也可以是符号的: - [m.make_symbolic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_value#manticore.ethereum.ManticoreEVM.make_symbolic_value) 创建一个符号值。 -- [mmmake_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) 创建一个符号字节数组。 +- [m.make_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) 创建一个符号字节数组。 例如: @@ -267,28 +262,29 @@ m.transaction(caller=user_account, value=symbolic_value) ``` -如果数据是象征性的,Manticore将在交易执行期间探索合约中的所有函数。 查看[Hands on the Ethernaut CTF](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/)文章中的回退函数解释,对于理解函数选择的工作原理会有所帮助。 +如果数据是符号的,Manticore 将在交易执行期间探索合约的所有函数。 查看[“Ethernaut CTF 实战”](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/)文章中的回退函数解释,对于理解函数选择的工作原理会有所帮助。 #### 命名交易 {#named-transaction} -函数可以通过其的名称执行。 要使用user_account中的符号值以及0 ether执行`f(uint var)`,请使用: +函数可以通过其的名称执行。 +要使用 `user_account` 中的符号值以及 0 ETH 执行 `f(uint var)`,请使用: ```python symbolic_var = m.make_symbolic_value() contract_account.f(symbolic_var, caller=user_account, value=0) ``` -如果没有指定交易的`value`,则默认为0。 +如果没有指定交易的 `value`,则默认为 0。 -#### 概览 {#summary-1} +#### 总结 {#summary-1} -- 交易的参数可以是具体的或抽象的 +- 交易的参数可以是具体的或符号的 - 原始交易将探索所有函数 - 函数可以通过其名称来调用 ### 工作区 {#workspace} -`m.workspace`目录用作所有生成的文件的输出目录: +`m.workspace` 目录用作所有生成的文件的输出目录: ```python print("Results are in {}".format(m.workspace)) @@ -296,9 +292,9 @@ print("Results are in {}".format(m.workspace)) ### 终止探索 {#terminate-the-exploration} -要停止探索,请使用 [m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize)。 一旦这个方法被调用,就不应该再发送任何交易,而且Manticore会针对所探索的每一条路径生成测试案例。 +使用 [m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize) 停止探索。 一旦这个方法被调用,就不应该再发送任何交易,而且 Manticore 会针对所探索的每一条路径生成测试用例。 -### 总结:在Manticore下运行 {#summary-running-under-manticore} +### 总结:在 Manticore 下运行 {#summary-running-under-manticore} 将所有先前的步骤放在一起,我们就会得到: @@ -317,14 +313,14 @@ symbolic_var = m.make_symbolic_value() contract_account.f(symbolic_var) print("Results are in {}".format(m.workspace)) -m.finalize() # stop the exploration +m.finalize() # 停止探索 ``` -以上所有代码都可以在[`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)中找到。 +以上所有代码都可以在 [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py) 中找到 -## 获取投掷路径 {#getting-throwing-paths} +## 获取抛出路径 {#getting-throwing-paths} -我们现在将为路径生成特定的输入,以在`f()`中引发异常。 目标仍为以下智能合约 [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol)。 +我们现在将为路径生成特定的输入,以在 `f()` 中引发异常。 目标仍然是以下智能合约 [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol): ```solidity pragma solidity >=0.4.24 <0.6.0; @@ -339,45 +335,45 @@ contract Simple { ### 使用状态信息 {#using-state-information} -执行的每个路径都有其区块链的状态。 此状态要么是准备就绪,要么是被终止了,也就是说,它达到了THROW或REVERT指令状态。 +执行的每个路径都有其区块链的状态。 此状态要么是准备就绪,要么是被终止了,也就是说,它达到了 THROW 或 REVERT 指令状态。 -- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing): 已准备就绪状态列表(他们没有执行REVERT/INVALID) -- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings):终止状态列表 +- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing):准备就绪(它们没有执行 REVERT/INVALID)的状态列表 +- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings):已终止状态的列表 - [m.all_states](https://manticore.readthedocs.io/en/latest/states.html#accessings):所有状态 ```python for state in m.all_states: - # do something with state + # 对状态执行某些操作 ``` 你可以访问状态信息。 例如: -- `state.platform.get_balance(account.address)`:帐户余额 +- `state.platform.get_balance(account.address)`:账户的余额 - `state.platform.transactions`:交易列表 - `state.platform.transactions[-1].return_data`:最后一笔交易返回的数据 -最后一笔交易返回的数据是一个数组,可以用ABI.deserialize转换为一个值,例如: +最后一笔交易返回的数据是一个数组,可以用 ABI.deserialize 转换为一个值,例如: ```python data = state.platform.transactions[0].return_data data = ABI.deserialize("uint", data) ``` -### 如何生成测试案例 {#how-to-generate-testcase} +### 如何生成测试用例 {#how-to-generate-testcase} -使用 [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase) 生成测试案例: +使用 [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase) 生成测试用例: ```python -m. generate_testcase(state, 'BugFound') +m.generate_testcase(state, 'BugFound') ``` -### 概览 {#summary-2} +### 总结 {#summary-2} -- 你可以使用m.all_states对状态进行迭代 -- `state.platform.get_balance(account.adds)`返回帐户余额 -- `state.platform.transactions`返回交易列表 -- `transaction.return_data`是返回的数据 -- `m.generate_testcase(state, name)`为状态生成输入 +- 你可以使用 m.all_states 迭代状态 +- `state.platform.get_balance(account.address)` 返回账户的余额 +- `state.platform.transactions` 返回交易列表 +- `transaction.return_data` 是返回的数据 +- `m.generate_testcase(state, name)` 为状态生成输入 ### 总结:获取抛出路径 {#summary-getting-throwing-path} @@ -395,7 +391,7 @@ contract_account = m.solidity_create_contract(source_code, owner=user_account) symbolic_var = m.make_symbolic_value() contract_account.f(symbolic_var) -## Check if an execution ends with a REVERT or INVALID +## 检查执行是否以 REVERT 或 INVALID 结束 for state in m.terminated_states: last_tx = state.platform.transactions[-1] if last_tx.result in ['REVERT', 'INVALID']: @@ -403,13 +399,13 @@ for state in m.terminated_states: m.generate_testcase(state, 'ThrowFound') ``` -以上所有代码都可以在[`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)中找到。 +以上所有代码都可以在 [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py) 中找到 -_注意我们可以生成一个更简单的脚本,因为所有由terminated_state返回的状态在其结果中都有REVERT或INVALID:这个例子只是为了演示如何操作API。_ +_请注意,我们本可以生成一个更简单的脚本,因为 terminated_state 返回的所有状态在其结果中都有 REVERT 或 INVALID:本示例仅用于演示如何操纵应用程序接口。_ -## 添加限制 {#adding-constraints} +## 添加约束 {#adding-constraints} -我们将看到如何对探索加以约束。 我们将作出这样的假设:`f()`的文档指出,该函数从未在`a == 65`的情况下被调用,因此任何`a == 65`的错误都不是真正的错误。 目标仍为以下智能合约[`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol): +我们将看到如何对探索加以约束。 我们将作出这样的假设:`f()` 的文档指出,该函数从未在 `a == 65` 的情况下被调用,因此任何 `a == 65` 的错误都不是真正的错误。 目标仍然是以下智能合约 [`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol): ```solidity pragma solidity >=0.4.24 <0.6.0; @@ -422,16 +418,16 @@ contract Simple { } ``` -### 运算符 {#operators} +### 操作符 {#operators} -[运算符](https://github.com/trailofbits/manticore/blob/master/manticore/core/smtlib/operators.py)模块使约束操作变得简便,除此之外,它还提供了其他功能: +[Operators](https://github.com/trailofbits/manticore/blob/master/manticore/core/smtlib/operators.py) 模块有助于操纵约束,它提供了以下操作符: -- Operators.AND, -- Operators.OR, -- Operators.UGT(无符号大小), -- Operators.UGE(无符号大于或等于), +- Operators.AND, +- Operators.OR, +- Operators.UGT(无符号大于), +- Operators.UGE(无符号大于等于), - Operators.ULT(无符号小于), -- Operators.ULE(无符号小于或等于)。 +- Operators.ULE(无符号小于等于)。 请使用以下代码导入模块: @@ -439,10 +435,10 @@ contract Simple { from manticore.core.smtlib import Operators ``` -`Operators.CONCAT`用于将一个数组与一个值级联。 例如,一个交易的return_data需要转变为一个值,以便与另一个值进行检查对比: +`Operators.CONCAT` 用于将一个数组与一个值级联。 例如,一个交易的 return_data 需要转变为一个值,以便与另一个值进行检查对比: ```python -last_return = operators.CONCAT(256,*last_return) +last_return = Operators.CONCAT(256, *last_return) ``` ### 约束 {#state-constraint} @@ -451,7 +447,8 @@ last_return = operators.CONCAT(256,*last_return) #### 全局约束 {#state-constraint} -使用 `m.constrain(constraint)` 添加全局约束。 例如,你可以从一个符号地址调用合约,并将这个地址约束为特定的值: +使用 `m.constrain(constraint)` 添加全局约束。 +例如,你可以从一个符号地址调用合约,并将这个地址约束为特定的值: ```python symbolic_address = m.make_symbolic_value() @@ -464,19 +461,21 @@ m.transaction(caller=user_account, #### 状态约束 {#state-constraint} -使用 [state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain) 为一个特定状态添加约束。 该约束可用来在探索状态后对其进行约束,以检查状态上的某些属性。 +使用 [state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain) 为特定状态添加约束。 +它可用于在探索状态后对其进行约束,以检查状态上的某些属性。 ### 检查约束 {#checking-constraint} -使用`solver.check(state.constracts)`来了解约束是否仍然可行。 例如,以下代码将symbolic_value限定为不等于65 ,并检查状态是否仍然可行。 +使用 `solver.check(state.constraints)` 来了解约束是否仍然可行。 +例如,以下代码将 `symbolic_value` 限定为不等于 65,并检查状态是否仍然可行: ```python state.constrain(symbolic_var != 65) if solver.check(state.constraints): - # state is feasible + # 状态可行 ``` -### 摘要:添加限制因素 {#summary-adding-constraints} +### 总结:添加约束 {#summary-adding-constraints} 通过在前面的代码中添加约束,我们获得: @@ -499,11 +498,11 @@ contract_account.f(symbolic_var) no_bug_found = True -## Check if an execution ends with a REVERT or INVALID +## 检查执行是否以 REVERT 或 INVALID 结束 for state in m.terminated_states: last_tx = state.platform.transactions[-1] if last_tx.result in ['REVERT', 'INVALID']: - # we do not consider the path were a == 65 + # 我们不考虑 a == 65 的路径 condition = symbolic_var != 65 if m.generate_testcase(state, name="BugFound", only_if=condition): print(f'Bug found, results are in {m.workspace}') @@ -513,4 +512,4 @@ if no_bug_found: print(f'No bug found') ``` -以上所有代码都可以在[`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)中找到。 +以上所有代码都可以在 [`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py) 中找到 From 62475793f92895b0d4a13d29bed5713131e647ee Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:47 -0800 Subject: [PATCH 151/581] update(i18n): public/content/translations/zh/developers/docs/smart-contracts/formal-verification/index.md --- .../formal-verification/index.md | 73 ++++++++++--------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/public/content/translations/zh/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/zh/developers/docs/smart-contracts/formal-verification/index.md index 642a316f529..e8bb37be0b7 100644 --- a/public/content/translations/zh/developers/docs/smart-contracts/formal-verification/index.md +++ b/public/content/translations/zh/developers/docs/smart-contracts/formal-verification/index.md @@ -26,7 +26,7 @@ lang: zh 高级模型侧重于智能合约和外部代理之间的关系,例如外部帐户 (EOA)、合约帐户和区块链环境。 这些模型有助于定义属性,这些属性规定了合约应该如何响应某些用户的交互行为。 -相反,其他一些形式化模型侧重于智能合约的低级行为。 虽然高级模型有助于论证合约的功能,但它们可能无法捕捉到实现的内部运作细节。 低级模型对程序分析应用了白盒视图并依赖于智能合约应用程序的低级表示,例如程序跟踪和[控制流程图](https://en.wikipedia.org/wiki/Control-flow_graph),来推理与合约执行相关的属性。 +相反,其他一些形式化模型侧重于智能合约的低级行为。 虽然高级模型有助于论证合约的功能,但它们可能无法捕捉到实现的内部运作细节。 低级模型对程序分析应用了白盒视图并依赖于智能合约应用程序的低级表示(例如程序跟踪和[控制流程图](https://en.wikipedia.org/wiki/Control-flow_graph)),来推理与合约执行相关的属性。 低级模型被视为理想模型,因为它们体现着智能合约在以太坊执行环境(即[以太坊虚拟机](/developers/docs/evm/))中的实际执行。 低级建模技术在确立智能合约的重要安全属性和检测潜在漏洞方面特别有用。 @@ -40,11 +40,11 @@ lang: zh 在开发安全的智能合约实现时,形式化规范非常重要。 无法实现不变量或者在执行过程中属性被违反的合约容易出现漏洞,可能会损害功能或者受到恶意的利用。 -## 智能合约形式化规范的类型 {#formal-specifications-for-smart-contracts} +## 智能合约的形式化规范类型 {#formal-specifications-for-smart-contracts} 形式化规范支持对程序执行的正确性进行数学推理。 与形式化模型一样,形式化规范能够详尽描述合约实现的高级属性或低级行为。 -形式化规范从[程序逻辑](https://en.wikipedia.org/wiki/Logic_programming)的元素中推导出来,可对程序的属性进行形式化推理。 程序逻辑具有形式化规则,它们使用数学语言表示程序的预期行为。 可以使用各种程序逻辑制定形式化规范,包括[可达性逻辑](https://en.wikipedia.org/wiki/Reachability_problem)、[时间逻辑](https://en.wikipedia.org/wiki/Temporal_logic)以及[霍尔逻辑](https://en.wikipedia.org/wiki/Hoare_logic)。 +形式化规范从[程序逻辑](https://en.wikipedia.org/wiki/Logic_programming)的元素中推导出来,可对程序的属性进行形式化推理。 程序逻辑具有形式化规则,它们使用数学语言表示程序的预期行为。 创建形式化规范时会使用各种程序逻辑,包括[可达性逻辑](https://en.wikipedia.org/wiki/Reachability_problem)、[时间逻辑](https://en.wikipedia.org/wiki/Temporal_logic)和[霍尔逻辑](https://en.wikipedia.org/wiki/Hoare_logic)。 智能合约的形式化规范可以大致分类为**高级**或**低级**规范。 无论属于哪一类,规范都必须充分明确地描述被分析系统的属性。 @@ -54,11 +54,11 @@ lang: zh [时间逻辑](https://en.wikipedia.org/wiki/Temporal_logic)是“用时间限定的命题的推理规则(例如,“我_总是_饿”或者“我_最终_会饿”)。” 当应用于形式化验证时,时间逻辑用来声明建模成状态机的系统的正确行为的断言。 具体而言,时间逻辑描述智能合约可以进入的未来状态以及它如何在不同状态之间转换。 -高级规范一般详述智能合约的两个关键时间属性:**安全性**和**活性**。 安全属性代表“任何坏事始终都不会发生”的想法,通常用来表示不变性。 安全属性可以定义常规软件要求(例如不发生[死锁](https://www.techtarget.com/whatis/definition/deadlock)),或者表达合约领域特定的属性(例如,函数访问控制的不变量、状态变量的容许值或代币转账的条件)。 +高级规范一般详述智能合约的两个关键时间属性:**安全**性和**活性**。 安全属性代表“任何坏事始终都不会发生”的想法,通常用来表示不变性。 安全属性可以定义常规软件要求(例如不发生[死锁](https://www.techtarget.com/whatis/definition/deadlock)),或者表达合约领域特定的属性(例如,函数访问控制的不变量、状态变量的容许值或代币转账的条件)。 以下面的安全要求为例,它描述了在 ERC-20 代币合约中使用 `transfer()` 或 `transferFrom()` 的条件:_“发送人的余额始终不能少于请求发送的代币金额。”_。 这种合约不变量的自然语言描述可以转化为形式化(数学)规范,以便随后能够进行严格的有效性检查。 -活性属性断言“好事终究会发生”,并涉及到合约通过不同状态的能力。 活性属性的一个例子是“流动性”,指的是合约在收到请求把余额转账给用户的能力。 如果违反了该属性,用户将不能提取存入合约的资产,就像在 [Parity 钱包事件](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html)中发生的情况一样。 +活性属性断言“好事终究会发生”,并涉及到合约通过不同状态的能力。 活性属性的一个例子是“流动性”,指的是合约在收到请求把余额转账给用户的能力。 如果该属性被违反,用户将无法提取存储在合约中的资产,就像在 [Parity 钱包事件](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html)中发生的那样。 ### 低级规范 {#low-level-specifications} @@ -70,7 +70,7 @@ lang: zh ### 霍尔式属性 {#hoare-style-properties} -[霍尔逻辑](https://en.wikipedia.org/wiki/Hoare_logic)提供了一套形式化规则来推理程序(包括智能合约)的正确性。 霍尔式属性使用霍尔三元组 \{_P_}_c_\{_Q_} 表示,其中 _c_ 代表程序,_P_ 和 _Q_ 是 _c_(即程序)状态的谓词,它们正式描述成_前置条件_和_后置条件_。 +[霍尔逻辑](https://en.wikipedia.org/wiki/Hoare_logic)提供了一套形式化规则来推理程序(包括智能合约)的正确性。 霍尔式属性使用霍尔三元组 {P}c{Q} 表示,其中 `c` 代表程序,`P` 和 `Q` 是 `c`(即程序)状态的谓词,二者分别正式描述成_前置条件_和_后置条件_。 前置条件是描述函数正确执行所需条件的谓词;用户调用合约必须满足该要求。 后置条件是描述函数在正确执行时所达成条件的谓词;用户在调用函数后可以期待该条件为真。 在霍尔逻辑中,_不变量_是一个在函数执行时保留的谓词(即它不改变)。 @@ -100,7 +100,7 @@ lang: zh - 如果用户未给提案投票,可以要求退款 -执行轨迹级属性的示例可以是_“没有存入资金的用户无法对提案投票”_或_“未对提案投票的用户始终应该可以要求退款”_。 这两个属性断言优先执行次序(在存入资金_之前_无法投票和给提案投票_之后_无法要求退款)。 +执行轨迹级属性的示例可以是_“没有存入资金的用户无法对提案投票”_或_“未对提案投票的用户始终应该可以要求退款”_。 这两个属性断言优先执行次序(在存入资金之前无法投票和给提案投票之后无法要求退款)。 ## 智能合约的形式化验证技术 {#formal-verification-techniques} @@ -110,7 +110,7 @@ lang: zh 模型检查要求创建系统(即合约)的抽象数学表示并使用根植于[命题逻辑](https://www.baeldung.com/cs/propositional-logic)的公式表示该系统的属性。 这简化了模型检查算法的任务,即证明一个数学模型满足给定的逻辑公式。 -形式化验证的模型检查主要用来评估时间属性,后者描述合约在一段时间内的行为。 如前所述,智能合约的时间属性包括_安全_和_活性_。 +形式化验证的模型检查主要用来评估时间属性,后者描述合约在一段时间内的行为。 如前所述,智能合约的时间属性包括安全性和活性。 例如,与访问控制有关的安全属性(例如,_只有合约的所有者才能调用 `selfdestruct`_)可以用形式化逻辑来编写。 此后,模型检查算法能验证合约是否满足此形式化规范。 @@ -120,7 +120,7 @@ lang: zh 定理证明是一种程序(包括智能合约)正确性的数学推理方法。 它涉及将合约系统的模型以及其规范转换成数学公式(逻辑语句)。 -定理证明的目的是验证这些语句之间的逻辑等价性。 “逻辑等价性”(又称为“逻辑双向蕴含”)是指两个语句之间的一种关系类型,即_当且仅当_语句二为真时,语句一才能为真。 +定理证明的目的是验证这些语句之间的逻辑等价性。 “逻辑等价性”(又称为“逻辑双向蕴含”)是指两个语句之间的一种关系类型,即当且仅当语句二为真时,语句一才能为真。 关于合约模型及其属性的语句之间的必要关系(逻辑等价性)被表述为一个可证明的语句(称为定理)。 使用形式化推理系统,自动化定理证明器可以验证该定理的有效性。 也就是说,定理证明器可以确证智能合约模型与其规范完全相符。 @@ -134,7 +134,7 @@ lang: zh 符号执行把执行轨迹表示成针对符号输入值的数学公式,也称为_路径谓词_。 [SMT 求解器](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories)用来检查路径谓词是否“可满足”(即存在一个满足公式的值)。 如果可以满足脆弱路径,SMT 求解器将产生一个具体值,将执行引向该路径。 -假设智能合约的函数把 `uint` 值 (`x`) 作为输入,并且当 `x` 大于 `5` 且小于 `10` 时回滚。 使用正常测试程序寻找一个触发错误的 `x` 值需要运行数十个测试用例(或者更多),而且不保证能实际找到一个触发错误的输入。 +假设智能合约的函数把 uint 值 (`x`) 作为输入,并且当 `x` 大于 `5` 且小于 `10` 时回滚。 使用正常测试程序寻找一个触发错误的 `x` 值需要运行数十个测试用例(或者更多),而且不保证能实际找到一个触发错误的输入。 相反,符号执行工具使用符号值来执行函数:`X > 5 ∧ X < 10`(即,`x` 大于 5 同时 `x` 小于 10)。 相关的路径谓词 `x = X > 5 ∧ X < 10` 将提供给 SMT 求解器来求解。 如果一个特定值满足公式 `x = X > 5 ∧ X < 10`,SMT 求解器将计算它 — 例如,求解器可能生成 `7` 作为 `x` 的值。 @@ -152,15 +152,16 @@ function safe_add(uint x, uint y) returns(uint z){ require(z>=y); return z; +} ``` -导致整数溢出的执行轨迹需要满足公式:`z = x + y AND (z >= x) AND (z=>y) AND (z < x OR z < y)`,不太可能对该公式求解,因此,它作为函数 `safe_add` 永远不会溢出的数学证明。 +导致整数溢出的执行轨迹需要满足公式:`z = x + y AND (z >= x) AND (z >= y) AND (z < x OR z < y)`。该公式不太可能被求解,因此,它可作为函数 `safe_add` 永远不会溢出的数学证明。 -### 为什么对智能合约进行形式化验证? {#benefits-of-formal-verification} +### 为什么对智能合约进行形式化验证? 形式化验证的好处 {#benefits-of-formal-verification} -#### 可靠性需要 {#need-for-reliability} +#### 对可靠性的需求 {#need-for-reliability} -形式化验证用来评估安全至上的系统的正确性,这类系统如果失败,将产生灾难性后果,例如死亡、受伤或者经济损失。 智能合约是具有高价值的应用程序,控制着大量价值,设计上的小错误将导致[用户蒙受难以挽回的损失](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/)。 然而,在部署前形式化验证合约,可以增加一些保障,确保合约在区块链上运行后表现如同预期一样。 +形式化验证用来评估安全至上的系统的正确性,这类系统如果失败,将产生灾难性后果,例如死亡、受伤或者经济损失。 智能合约是控制巨额价值的高价值应用程序,设计中的简单错误可能导致[用户的损失无法挽回](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/)。 然而,在部署前形式化验证合约,可以增加一些保障,确保合约在区块链上运行后表现如同预期一样。 可靠性是所有智能合约渴求的一种品质,尤其是因为部署在以太坊虚拟机 (EVM) 上的代码通常是不可更改的。 由于发布后的升级不容易获得,并且合约可靠性是需要保证的,因此形式化验证必不可少。 形式化验证能够发现棘手的问题,例如整数下溢和溢出、重入攻击和糟糕的燃料优化,审计人员和测试人员可能会漏掉这些问题。 @@ -170,7 +171,7 @@ function safe_add(uint x, uint y) returns(uint z){ 然而,这种方法无法证明不在样本里的输入值的正确执行。 因此,测试合约可能有助于检测到漏洞(即是否一些代码路径在执行过程中未能返回预期结果),但是**它无法确证没有漏洞存在**。 -相反,形式化验证可以形式化证明智能合约在无限执行范围内满足要求,而_无需_运行合约。 这需要制定精确描述正确合约行为的形式化规范并开发合约系统的形式化(数学)模型。 然后,我们可以按照形式化证明程序来检查合约模型与其规范是否一致。 +相反,形式化验证可以形式化证明智能合约在无限执行范围内满足要求,而无需运行合约。 这需要制定精确描述正确合约行为的形式化规范并开发合约系统的形式化(数学)模型。 然后,我们可以按照形式化证明程序来检查合约模型与其规范是否一致。 通过形式化验证,验证合约的业务逻辑是否满足要求的问题就变成一个能被证明或否定的数学命题。 通过形式化证明一个命题,我们可以使用有限的步骤验证无数个测试用例。 通过这种方式,形式化验证有更好的前景,可以证明依据规划合约的功能正确。 @@ -190,7 +191,7 @@ function safe_add(uint x, uint y) returns(uint z){ ## 形式化验证的缺点 {#drawbacks-of-formal-verification} -### 人工成本 {#cost-of-manual-labor} +### 手动劳动成本 {#cost-of-manual-labor} 形式化验证,尤其是需要人为引导证明器来推导出正确性证明的半自动化验证,需要大量人力。 此外,制定形式化规范是一项复杂的活动,需要高水平技能。 @@ -208,39 +209,39 @@ function safe_add(uint x, uint y) returns(uint z){ 而且,程序验证器并不是总能确定一个属性(描述成一个逻辑公式)是否能被满足(“[可判定性问题](https://en.wikipedia.org/wiki/Decision_problem)”),因为一个程序也许永远不会终止。 因此,即便合约的规范合理,也可能无法证明合约的一些属性。 -## 以太坊智能合约的形式化验证工具 {#formal-verification-tools} +## 用于以太坊智能合约的形式化验证工具 {#formal-verification-tools} ### 用于制定形式化规范的规范语言 {#specification-languages} -**Act**:_*Act 允许存储更新、前置条件/后置条件、合约不变量的规范。 其工具套件也具有证明后端,可通过 Coq、SMT 求解器或 hevm 证明许多属性。** +**Act**:__Act 允许指定存储更新、前置/后置条件和合约不变量。__ 其工具套件也具有证明后端,可通过 Coq、SMT 求解器或 hevm 证明许多属性。\*_ - [GitHub](https://github.com/ethereum/act) -- [相关文档](https://ethereum.github.io/act/) +- [相关文档](https://github.com/argotorg/act) -**Scribble** - _*Scribble 把 Scribble 规范语言中的代码注释转换为检查规范的具体断言。** +**Scribble** - __Scribble 把 Scribble 规范语言中的代码注释转换为检查规范的具体断言。__ - [相关文档](https://docs.scribble.codes/) -**Dafny** - _*Dafny 是一种可直接验证的编程语言,依赖于高层次注释来推理和验证代码的正确性。** +**Dafny** - __Dafny 是一种可直接验证的编程语言,依赖于高层次注释来推理和验证代码的正确性。__ - [GitHub](https://github.com/dafny-lang/dafny) ### 用于检查正确性的程序验证器 {#program-verifiers} -**Certora Prover** - _ Certora Prover 是一种检查智能合约代码正确性的自动形式化验证工具。 它使用 CVL(Certora 验证语言)编写规范,并组合使用静态分析和约束求解检测属性违反。_ +**Certora Prover** - _Certora Prover 是一种检查智能合约代码正确性的自动形式化验证工具。 它使用 CVL(Certora 验证语言)编写规范,并组合使用静态分析和约束求解检测属性违反。_ - [网站](https://www.certora.com/) - [相关文档](https://docs.certora.com/en/latest/index.html) -**Solidity SMTChecker** - _*Solidity 的SMTChecker 是一个基于 SMT(可满足性模理论)和 Horn 求解的内置模型检查器。 它在编译期间确认合约源代码是否符合规范并静态检查是否违反了安全属性。** +**Solidity SMTChecker** - __Solidity 的 SMTChecker 是一个基于 SMT(可满足性模理论)和 Horn 求解的内置模型检查器。 它在编译期间确认合约源代码是否符合规范并静态检查是否违反了安全属性。__ - [GitHub](https://github.com/ethereum/solidity) -**solc-verify** - _*solc-verify 是 Solidity 编译器的扩展版本,它可以使用注释和模块化程序验证对 Solidity 代码执行自动形式化验证。** +**solc-verify** - __solc-verify 是 Solidity 编译器的扩展版本,它可以使用注释和模块化程序验证对 Solidity 代码执行自动形式化验证。__ - [GitHub](https://github.com/SRI-CSL/solidity) -**KEVM** - _*KEVM 是以太坊虚拟机 (EVM) 的形式化语义,用 K 框架编写。 KEVM 是可执行的,并且能够使用可达性逻辑证明某些与属性相关的断言。** +**KEVM** - __KEVM 是以太坊虚拟机 (EVM) 的形式化语义,用 K 框架编写。 KEVM 是可执行的,并且能够使用可达性逻辑证明某些与属性相关的断言。__ - [GitHub](https://github.com/runtimeverification/evm-semantics) - [相关文档](https://jellopaper.org/) @@ -252,19 +253,19 @@ function safe_add(uint x, uint y) returns(uint z){ - [GitHub](https://github.com/isabelle-prover) - [相关文档](https://isabelle.in.tum.de/documentation.html) -**Coq** - _Coq 是一种交互式定理证明器,让你可以使用定理来定义程序并以交互方式产生经机器检查的正确性证明。_ +**Rocq** - _Rocq 是一个交互式定理证明器,可用于使用定理定义程序,并以交互方式生成机器检查的正确性证明。_ -- [GitHub](https://github.com/coq/coq) -- [相关文档](https://coq.github.io/doc/v8.13/refman/index.html) +- [GitHub](https://github.com/rocq-prover/rocq) +- [相关文档](https://rocq-prover.org/docs) ### 用于检测智能合约中易受攻击模式的基于符号执行的工具 {#symbolic-execution-tools} -**Manticore** - _*一种基于符号执行的工具,用于分析以太坊虚拟机的字节码分析工具*。* +**Manticore** - __一个基于符号执行的以太坊虚拟机字节码分析工具。__ - [GitHub](https://github.com/trailofbits/manticore) - [相关文档](https://github.com/trailofbits/manticore/wiki) -**hevm** - _*hevm 是一种面向以太坊虚拟机字节码的符号执行引擎和等价性检查器。** +**hevm** - __hevm 是一种面向以太坊虚拟机字节码的符号执行引擎和等价性检查器。__ - [GitHub](https://github.com/dapphub/dapptools/tree/master/src/hevm) @@ -273,11 +274,11 @@ function safe_add(uint x, uint y) returns(uint z){ - [GitHub](https://github.com/ConsenSys/mythril-classic) - [相关文档](https://mythril-classic.readthedocs.io/en/develop/) -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -- [智能合约的形式化验证是如何运作的](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/) -- [形式化验证如何确保智能合约无懈可击](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) -- [以太坊生态系统中的形式化验证项目概览](https://github.com/leonardoalt/ethereum_formal_verification_overview) -- [以太坊 2.0 存款智能合约的端对端形式化验证](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/) -- [形式化验证世界上最热门的智能合约](https://www.zellic.io/blog/formal-verification-weth) +- [智能合约形式化验证的工作原理](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/) +- [形式化验证如何确保智能合约完美无瑕](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) +- [以太坊生态系统中的形式化验证项目概述](https://github.com/leonardoalt/ethereum_formal_verification_overview) +- [以太坊 2.0 存款智能合约的端到端形式化验证](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/) +- [对全球最流行的智能合约进行形式化验证](https://www.zellic.io/blog/formal-verification-weth) - [SMTChecker 和形式化验证](https://docs.soliditylang.org/en/v0.8.15/smtchecker.html) From ebca0799425dfa4ca58d1f7e20a6c86d6f3d3797 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:49 -0800 Subject: [PATCH 152/581] update(i18n): public/content/translations/zh/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md --- .../pos/weak-subjectivity/index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md b/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md index fbc3b77473c..b81e466afa9 100644 --- a/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md +++ b/public/content/translations/zh/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md @@ -8,15 +8,15 @@ lang: zh ## 前提条件 {#prerequisites} -理解此页必须首先理解[权益证明](/developers/docs/consensus-mechanisms/pos/)的基础知识。 +要理解本页内容,首先需要了解[权益证明](/developers/docs/consensus-mechanisms/pos/)的基础知识。 -## 弱主观性解决了哪些问题? {#problems-ws-solves} +## 弱主观性解决了哪些问题? 弱主观性解决的问题 {#problems-ws-solves} 主观性是权益证明区块链所固有的,因为从多个分叉中选择正确的链是通过计算历史投票来完成的。 这使区块链暴露在多个攻击途径下,包括以下类型的长期攻击:很早就参与了区块链的节点维护一个替代分叉,并会在稍后因自己的利益释放此分叉。 另外,如果 33% 的验证者取出他们的质押物,但仍继续证明和生产区块,他们可能会生成一个与规范链相冲突的替代分叉。 新的节点或已经离线很长时间的节点可能不知道这些攻击验证者已经取出了他们的资金,所以攻击者可能会诱骗他们跟随不正确的链。 以太坊可以通过施加限制来解决这些攻击途径,因为这些限制可将机制的主观方面(也就是信任假设)降至最低。 ## 弱主观性检查点 {#ws-checkpoints} -在权益证明版以太坊中,弱主观性的实现要用到“弱主观性检查点”, 即网络上所有节点都同意加入规范链的状态根。 它们的作用与创世区块的"普遍事实"相同,只是它们不在区块链的创世块位置上。 分叉选择算法相信该检查点中确定的区块链状态是正确的,并且独立和客观地验证了从该点开始的区块链。 检查点起到了"回滚限制"的作用,因为位于弱主观性检查点之前的区块不能改变。 如此,只需将远程分叉作为机制设计的一部分界定为无效,就能破坏远程攻击。 确保弱主观性检查点之间相隔的距离小于验证者提款期,这样便可保证分叉链的验证者在提取质押前至少被罚没一些阈值量,且新验证者不能被已经提取质押的验证者骗到错误的分叉上。 +在权益证明版以太坊中,弱主观性的实现要用到“弱主观性检查点”, 即网络上所有节点都同意加入规范链的状态根。 与创世区块一样,它们起到相同的“普遍真理”作用,只是它们并不位于区块链的创世位置。 分叉选择算法相信该检查点中确定的区块链状态是正确的,并且独立和客观地验证了从该点开始的区块链。 检查点起到了"回滚限制"的作用,因为位于弱主观性检查点之前的区块不能改变。 如此,只需将远程分叉作为机制设计的一部分界定为无效,就能破坏远程攻击。 确保弱主观性检查点之间相隔的距离小于验证者提款期,这样便可保证分叉链的验证者在提取质押前至少被罚没一些阈值量,且新验证者不能被已经提取质押的验证者骗到错误的分叉上。 ## 弱主观性检查点和最终确定区块的区别 {#difference-between-ws-and-finalized-blocks} @@ -30,10 +30,10 @@ lang: zh 最终,可以从其他节点请求检查点;也许另一个运行完整节点的以太坊用户可以提供一个检查点,然后验证者可以根据区块浏览器的数据进行验证。 总的来说,信任弱主观性检查点的提供者和信任客户端开发人员可视为同样的问题, 即所需的整体信任度很低。 需要注意的是,这些考虑只有在大多数验证者密谋生成另一个区块链分叉这种不太可能的情况下才变得重要。 在任何其他情况下,只有一条以太坊链可以选择。 -## 延伸阅读 {#further-reading} +## 扩展阅读 {#further-reading} -- [以太坊 2 中的弱主观性](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2) -- [Vitalik:我如何爱上弱主观性](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) -- [弱主观性(Teku 文档)](https://docs.teku.consensys.net/en/latest/Concepts/Weak-Subjectivity/) -- [阶段 0 的弱主观性指南](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/weak-subjectivity.md) -- [以太坊 2.0 的弱主观性分析](https://github.com/runtimeverification/beacon-chain-verification/blob/master/weak-subjectivity/weak-subjectivity-analysis.pdf) +- [Eth2 中的弱主观性](https://notes.ethereum.org/@adiasg/weak-subjectvity-eth2) +- [Vitalik:我是如何爱上弱主观性的](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) +- [弱主观性 (Teku 文档)](https://docs.teku.consensys.io/concepts/weak-subjectivity) +- [Phase-0 弱主观性指南](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/weak-subjectivity.md) +- [以太坊 2.0 弱主观性分析](https://github.com/runtimeverification/beacon-chain-verification/blob/master/weak-subjectivity/weak-subjectivity-analysis.pdf) From bcc42c8215197baa9831ae0923ef639f4cc566c7 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:53 -0800 Subject: [PATCH 153/581] update(i18n): public/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md --- .../docs/scaling/optimistic-rollups/index.md | 110 +++++++++--------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/public/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md index 771c3795bff..ebdfc7c3963 100644 --- a/public/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md +++ b/public/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md @@ -4,21 +4,21 @@ description: 乐观卷叠简介 — 以太坊社区使用的一种扩容解决 lang: zh --- -乐观卷叠是二层网络 (L2) 协议,该协议旨在扩展以太坊基础层的吞吐量。 它们通过在链下处理交易来减少以太坊主链上的计算量,从而显著提高处理速度。 与其他扩容解决方案(例如[侧链](/developers/docs/scaling/sidechains/))不同,乐观卷叠从主网(通过在链上发布交易结果)或从 [Plasma 链](/developers/docs/scaling/plasma/)(该链还使用欺诈证明验证以太坊上的交易,但将交易数据存储在其他地方)获取安全性。 +乐观卷叠是二层网络 (L2) 协议,该协议旨在扩展以太坊基础层的吞吐量。 它们通过在链下处理交易来减少以太坊主链上的计算量,从而显著提高处理速度。 与其他扩容解决方案(例如 [sidechains](/developers/docs/scaling/sidechains/))不同,乐观卷叠通过在链上发布交易结果从主网获取安全性,或者从 [plasma chains](/developers/docs/scaling/plasma/) 获取安全性,后者也使用欺诈证明验证以太坊上的交易,但将交易数据存储在其他地方。 -由于计算是使用以太坊时缓慢而昂贵的部分,因此乐观卷叠可以提供高达 10-100 倍的可扩展性改进。 乐观卷叠还会将交易以 `calldata` 或 [blob](/roadmap/danksharding/) 的形式写入以太坊,从而降低用户的燃料成本。 +由于计算是使用以太坊时缓慢而昂贵的部分,因此乐观卷叠可以提供高达 10-100 倍的可扩展性改进。 乐观卷叠还会将交易以 `calldata` 或在 [blobs](/roadmap/danksharding/) 中的形式写入以太坊,从而为用户降低燃料成本。 ## 前提条件 {#prerequisites} -你应该已经阅读并理解关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2/)的页面。 +你应该已经阅读并理解我们的[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2/)页面。 ## 什么是乐观卷叠? {#what-is-an-optimistic-rollup} -乐观卷叠是一种扩容以太坊的方法,涉及将计算和状态存储移至链下。 乐观卷叠在以太坊之外执行交易,但将交易数据以 `calldata` 或[二进制大对象](/roadmap/danksharding/)的形式发布到主网。 +乐观卷叠是一种扩容以太坊的方法,涉及将计算和状态存储移至链下。 乐观卷叠在以太坊之外执行交易,但将交易数据以 `calldata` 或 [二进制大对象](/roadmap/danksharding/) 的形式发布到主网。 乐观卷叠运营商将多个链下交易大批量捆绑在一起,然后再提交到以太坊。 这种方法可以将固定成本分散到每批中的多笔交易中,从而降低最终用户的费用。 乐观卷叠还使用压缩技术来减少发布在以太坊上的数据量。 -乐观卷叠被认为是“乐观的”,因为它们假设链下交易是有效的,并且不发布推送到链上的交易批次的有效性证明。 这一点将乐观卷叠与[零知识卷叠](/developers/docs/scaling/zk-rollups)区分开来,后者会发布链下交易的加密[有效性证明](/glossary/#validity-proof)。 +乐观卷叠被认为是“乐观的”,因为它们假设链下交易是有效的,并且不发布推送到链上的交易批次的有效性证明。 这一点将乐观卷叠与发布链下交易的加密[有效性证明](/glossary/#validity-proof)的[零知识卷叠](/developers/docs/scaling/zk-rollups)区分开来。 相反,乐观卷叠依赖于欺诈证明方案来检测交易计算不正确的情况。 在以太坊上提交卷叠批次后,有一个时间窗口(称为挑战期),在此期间任何人都可以通过计算[欺诈证明](/glossary/#fraud-proof)来挑战卷叠交易的结果。 @@ -28,17 +28,17 @@ lang: zh ## 乐观卷叠如何与以太坊交互? {#optimistic-rollups-and-Ethereum} -乐观卷叠是为了在以太坊上运行而构建的[链下扩容解决方案](/developers/docs/scaling/#off-chain-scaling)。 每个乐观卷叠都由部署在以太坊网络上的一组智能合约管理。 乐观卷叠在以太坊主链之外处理交易,但将链下交易(批量)发布到链上的卷叠合约。 和以太坊区块链一样,此交易记录是不可变的,并形成了“乐观卷叠链”。 +乐观卷叠是为在以太坊上运行而构建的[链下扩容解决方案](/developers/docs/scaling/#offchain-scaling)。 每个乐观卷叠都由部署在以太坊网络上的一组智能合约管理。 乐观卷叠在以太坊主链之外处理交易,但将链下交易(批量)发布到链上的卷叠合约。 和以太坊区块链一样,此交易记录是不可变的,并形成了“乐观卷叠链”。 乐观卷叠的架构包括以下部分: **链上合约**:乐观卷叠的操作由在以太坊上运行的智能合约控制。 这包括存储卷叠区块、监控卷叠状态更新以及跟踪用户存款的合约。 在这个意义上,以太坊充当乐观卷叠的基础层或“一层网络”。 -**链下虚拟机 (VM)**:虽然管理乐观卷叠协议的合约在以太坊上运行,但卷叠协议在[以太坊虚拟机](/developers/docs/evm/)之外的另一个虚拟机上执行计算和状态存储。 应用程序在链下虚拟机上驻留并且状态更改在其上执行;链下虚拟机作为乐观卷叠的上层或“二层网络”。 +**链下虚拟机 (VM)**:虽然管理乐观卷叠协议的合约在以太坊上运行,但该卷叠协议在[以太坊虚拟机](/developers/docs/evm/)之外的另一个虚拟机上执行计算和状态存储。 应用程序在链下虚拟机上驻留并且状态更改在其上执行;链下虚拟机作为乐观卷叠的上层或“二层网络”。 由于乐观卷叠旨在运行为以太坊虚拟机编写或编译的程序,因此链下虚拟机包含许多以太坊虚拟机设计规范。 此外,链上计算的欺诈证明允许以太坊网络强制执行在链下虚拟机中计算的状态更改的有效性。 -乐观卷叠被描述为“混合扩容解决方案”,因为虽然它们作为单独的协议存在,但它们的安全属性源自以太坊。 除了其他方面,以太坊还能保证卷叠的链下计算的正确性以及计算所依据的数据的可用性。 这使得乐观卷叠比不依赖以太坊获取安全性的纯链下扩容协议(例如,[侧链](/developers/docs/scaling/sidechains/))更安全。 +乐观卷叠被描述为“混合扩容解决方案”,因为虽然它们作为单独的协议存在,但它们的安全属性源自以太坊。 除了其他方面,以太坊还能保证卷叠的链下计算的正确性以及计算所依据的数据的可用性。 这使得乐观卷叠比不依赖以太坊获取安全性的纯链下扩容协议(例如[侧链](/developers/docs/scaling/sidechains/))更安全。 乐观卷叠在以下方面依赖于以太坊的主要协议: @@ -46,9 +46,9 @@ lang: zh 如前所述,乐观卷叠将交易数据以 `calldata` 或[二进制大对象](/roadmap/danksharding/)的形式发布到以太坊。 由于卷叠链的执行基于提交的交易,任何人都可以使用此信息(锚定在以太坊的基础层)来执行卷叠的状态并验证状态转换的正确性。 -[数据可用性](/developers/docs/data-availability/)至关重要,因为如果不能访问状态数据,挑战者就不能构造欺诈证明来质疑无效的卷叠操作。 有了以太坊提供的数据可用性,就降低了卷叠运营商逃脱恶意行为(例如,提交无效区块)的风险。 +[数据可用性](/developers/docs/data-availability/)至关重要,因为如果无法访问状态数据,挑战者就无法构建欺诈证明来对无效的卷叠操作提出异议。 有了以太坊提供的数据可用性,就降低了卷叠运营商逃脱恶意行为(例如,提交无效区块)的风险。 -### 抗审查 {#censorship-resistance} +### 抗审查性 {#censorship-resistance} 乐观卷叠也依赖以太坊来抵抗审查。 在乐观卷叠中,中心化实体(运营商)负责处理交易并将卷叠区块提交给以太坊。 这其中有一些含义: @@ -76,7 +76,7 @@ lang: zh 用户向“运营商”提交交易,“运营商”则是乐观卷叠上负责处理交易的节点。 运营商也称为“验证者”或“聚合者”,负责聚合交易、压缩底层数据,并在以太坊上发布区块。 -尽管任何人都可以成为验证者,但乐观卷叠验证者就像[权益证明系统](/developers/docs/consensus-mechanisms/pos/)一样,必须在生成区块之前提供保证金。 如果验证者发布了无效的区块或扩建了原有但无效的区块(即使他们的区块是有效的),此保证金可能被罚没。 通过这种方式,乐观卷叠利用加密经济激励措施来确保验证者诚实行事。 +尽管任何人都可以成为验证者,但乐观卷叠验证者必须在生成区块之前提供保证金,就像[权益证明系统](/developers/docs/consensus-mechanisms/pos/)一样。 如果验证者发布了无效的区块或扩建了原有但无效的区块(即使他们的区块是有效的),此保证金可能被罚没。 通过这种方式,乐观卷叠利用加密经济激励措施来确保验证者诚实行事。 乐观卷叠链上的其他验证者应该使用他们的卷叠状态副本来执行提交的交易。 如果验证者的最终状态与运营商提议的状态不同,他们可以发起挑战并计算欺诈证明。 @@ -84,17 +84,17 @@ lang: zh 排序者与常规卷叠运营商不同,因为他们对交易的排序有更大的控制力。 此外,排序者具有卷叠链的优先访问权,并且是唯一被授权向链上合约提交交易的实体。 来自非排序者节点或普通用户的交易只是在一个单独的收件箱中排队,直到排序者将它们纳入一个新批次中。 -#### 提交卷叠区块到以太坊 {#submitting-blocks-to-ethereum} +#### 将卷叠区块提交至以太坊 {#submitting-blocks-to-ethereum} 如前所述,乐观卷叠的运营商将链下交易捆绑成一个批次,并将其发送到以太坊进行公证。 此过程涉及压缩与交易相关的数据并将其以 `calldata` 或二进制大对象的形式发布在以太坊上。 -`calldata` 是智能合约中不可修改、非持久的区域,其行为与[内存](/developers/docs/smart-contracts/anatomy/#memory)非常相似。 而 `calldata` 作为区块链的[历史日志](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)部分,不会存储为以太坊状态的一部分。 由于 `calldata` 不触及以太坊状态的任何部分,因此它比链上存储数据的状态更便宜。 +`calldata` 是智能合约中一个不可修改、非持久的区域,其行为与[内存](/developers/docs/smart-contracts/anatomy/#memory)非常相似。 虽然 `calldata` 作为区块链[历史日志](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)的一部分持久保存在链上,但它不作为以太坊状态的一部分进行存储。 由于 `calldata` 不触及以太坊状态的任何部分,因此它比链上存储数据的状态更便宜。 `calldata` 关键字也在 Solidity 中用于在执行时将参数传递给智能合约函数。 `calldata` 识别在交易期间被调用的函数,并以任意字节序列的形式保存函数的输入。 在乐观卷叠的上下文中,`calldata` 用于将压缩的交易数据发送到链上合约。 卷叠运营商通过调用卷叠合约中所需的函数并将压缩数据作为函数参数传递来添加新批次。 使用 `calldata` 可以降低用户费用,因为卷叠产生的大部分成本来自链上存储数据。 -以下是一个卷叠批量提交的[示例](https://etherscan.io/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591),以展示此概念的工作原理。 排序者调用 `appendSequencerBatch()` 方法并使用 `calldata` 将压缩的交易数据作为输入传递。 +以下是卷叠批次提交的[一个示例](https://eth.blockscout.com/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591),用于说明这个概念的工作原理。 排序者调用 `appendSequencerBatch()` 方法,并使用 `calldata` 将压缩的交易数据作为输入进行传递。 一些卷叠现在使用二进制大对象将批量交易发布到以太坊。 @@ -102,15 +102,15 @@ lang: zh ### 状态承诺 {#state-commitments} -在任何时间点,乐观卷叠状态(帐户、余额、合约代码等)都被组织为 [Merkle 树](/whitepaper/#merkle-trees),也称为“状态树”。 此 Merkle 树的根(状态根)引用卷叠的最新状态,经过哈希处理并存储在卷叠合约中。 链上的每个状态转换都会产生一个新的卷叠状态,运营商通过计算新的状态根来提交该状态。 +在任何时间点,乐观卷叠的状态(帐户、余额、合约代码等) 被组织成一个称为“状态树”的[默克尔树](/whitepaper/#merkle-trees)。 此 Merkle 树的根(状态根)引用卷叠的最新状态,经过哈希处理并存储在卷叠合约中。 链上的每个状态转换都会产生一个新的卷叠状态,运营商通过计算新的状态根来提交该状态。 运营商在发布批次时需要同时提交旧状态根和新状态根。 如果旧状态根与链上合约中的现有状态根匹配,则后者被丢弃并替换为新状态根。 -卷叠运营商还需要为交易批次本身提交 Merkle 根。 这允许任何人通过提供 [Merkle 证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)来证明交易包含在批次中(在 L1 上)。 +卷叠运营商还需要为交易批次本身提交 Merkle 根。 这允许任何人通过提供[默克尔证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)来证明交易包含在批次中(在 L1 上)。 状态承诺,尤其是状态根,对于证明乐观卷叠中的状态变化的正确性是必要的。 卷叠合约在发布后立即接受来自运营商的新状态根,但稍后可以删除无效的状态根以将卷叠恢复到正确的状态。 -### 欺诈证明 {#fraud-proving} +### 欺诈证明过程 {#fraud-proving} 如前所述,乐观卷叠允许任何人在不提供有效性证明的情况下发布区块。 然而,为了确保链保持安全,乐观卷叠指定了一个时间窗口,在此期间任何人都可以对状态转换提出异议。 因此,卷叠块被称为“断言”,因为任何人都可以挑战它们的有效性。 @@ -148,31 +148,31 @@ lang: zh ### L1/L2 互操作性 {#l1-l2-interoperability} -乐观卷叠旨在与以太坊主网互操作,并允许用户在 L1 和 L2 之间传递消息和任意数据。 它们还与以太坊虚拟机兼容,因此你可以将现有的[去中心化应用程序](/developers/docs/dapps/)移植到乐观卷叠或使用以太坊开发工具创建新的去中心化应用程序。 +乐观卷叠旨在与以太坊主网互操作,并允许用户在 L1 和 L2 之间传递消息和任意数据。 它们还与 EVM 兼容,因此你可以将现有的[去中心化应用程序](/developers/docs/dapps/)移植到乐观卷叠,或使用以太坊开发工具创建新的去中心化应用程序。 -#### 1. 资产转移 {#asset-movement} +#### 1. 资产移动 {#asset-movement} ##### 进入卷叠 -为了使用乐观卷叠,用户将以太币、ERC-20 代币和其他可接受的资产存入 L1 上卷叠的[链桥](/developers/docs/bridges/)合约中。 链桥合约会将交易中继到 L2,在那里铸造等量的资产并发送到用户在乐观卷叠中选择的地址。 +要使用乐观卷叠,用户需要将 ETH、ERC-20 代币和其他接受的资产存入 L1 上的卷叠[链桥](/developers/docs/bridges/)合约中。 链桥合约会将交易中继到 L2,在那里铸造等量的资产并发送到用户在乐观卷叠中选择的地址。 -用户生成的交易(如 L1 > L2 存款)通常会排队,直到排序者将它们重新提交到卷叠合约。 但是,为了保持抗审查能力,如果交易延迟超过允许的最大时间,乐观卷叠允许用户直接向链上卷叠合约提交交易。 +用户生成的交易(如 L1 > L2 存款)通常会排队,直到排序者将其重新提交到卷叠合约。 但是,为了保持抗审查能力,如果交易延迟超过允许的最大时间,乐观卷叠允许用户直接向链上卷叠合约提交交易。 一些乐观卷叠采用更直接的方法来防止排序者审查用户。 在这里,一个区块由自前一个区块以来提交给 L1 合约的所有交易(例如存款)以及卷叠链上已处理的交易共同定义。 如果排序者忽略 L1交易,它将发布(可证明)错误的状态根;因此,一旦用户生成的消息被发布在 L1 上,排序者就不能将其延迟。 ##### 退出卷叠 -由于欺诈证明方案,从乐观卷叠中取款到以太坊更加困难。 如果用户发起一个 L2 > L1 交易以提取在 L1 上托管的资金,他们必须等到挑战期(大约持续 7 天)过去。 然而,退出过程本身相当简单。 +由于欺诈证明方案,从乐观卷叠中取款到以太坊更加困难。 如果用户发起 L2 > L1 交易来提取在 L1 上托管的资金,他们必须等到大约七天的挑战期结束。 然而,退出过程本身相当简单。 在 L2 卷叠上发起取款请求后,该交易被纳入下一批,同时用户在卷叠上的资产被销毁。 一旦批次在以太坊上发布,用户就可以计算一个 Merkle 证明来验证他们的退出交易是否包含在区块中。 然后便是等待延迟期过后完成 L1 上的交易并将资金提取到主网的问题了。 -为了避免在向以太坊取款前等待一周,乐观卷叠用户可以聘请**流动性提供者** (LP)。 流动性提供者承担待处理的 L2 取款的所有权,并在 L1 上向用户付款(以换取费用)。 +为避免在向以太坊提取资金前等待一周,乐观卷叠用户可以采用**流动性提供者** (LP)。 流动性提供者承担待处理的 L2 取款的所有权,并在 L1 上向用户付款(以换取费用)。 流动性提供者可以在释放资金之前检查用户取款请求的有效性(通过自行执行链)。 这样他们就可以保证交易最终会得到确认(即,去信任确定性)。 -#### 2. 以太坊虚拟机兼容性 {#evm-compatibility} +#### 2. EVM 兼容性 {#evm-compatibility} -对于开发者而言,乐观卷叠的优势在于它们与[以太坊虚拟机 (EVM)](/developers/docs/evm/) 的兼容性(或者更好的是,等效性)。 与以太坊虚拟机兼容的卷叠符合[以太坊黄皮书](https://ethereum.github.io/yellowpaper/paper.pdf)中的规范,并在字节码级别支持以太坊虚拟机。 +对于开发者而言,乐观卷叠的优势在于它们与[以太坊虚拟机 (EVM)](/developers/docs/evm/) 的兼容性,或者更确切地说,等效性。 与 EVM 兼容的卷叠符合[以太坊黄皮书](https://ethereum.github.io/yellowpaper/paper.pdf)中的规范,并在字节码级别支持 EVM。 乐观卷叠中的以太坊虚拟机兼容性具有以下好处: @@ -190,50 +190,50 @@ ii. 使用乐观卷叠的开发者和项目团队可以利用以太坊的基础 一个跨链合约调用的例子是前文所述的代币存款。 L1 上的合约托管用户的代币,并向配对的 L2 合约发送消息,以在卷叠中铸造等量的代币。 -由于跨链消息调用会导致合约执行,因此发送者通常需要支付用于计算的[燃料成本](/developers/docs/gas/)。 建议设置较高的燃料限制,以防止交易在目标链上失败。 代币桥梁场景就是一个很好的例子;如果交易的 L1 端(存入代币)有效,但 L2 端(铸造新代币)由于燃料不足而失败,则存款将无法收回。 +由于跨链消息调用会导致合约执行,因此发送方通常需要支付计算的[燃料成本](/developers/docs/gas/)。 建议设置较高的燃料限制,以防止交易在目标链上失败。 代币桥梁场景就是一个很好的例子;如果交易的 L1 端(存入代币)有效,但 L2 端(铸造新代币)由于燃料不足而失败,则存款将无法收回。 -最后,我们应该注意到,合约之间的 L2 > L1 消息调用需要考虑延迟(L1 > L2 调用通常在几分钟后执行)。 这是因为从乐观卷叠发送到主网的消息在挑战窗口到期之前无法执行。 +最后,我们应该注意,合约之间的 L2 > L1 消息调用需要考虑延迟(L1 > L2 调用通常在几分钟后执行)。 这是因为从乐观卷叠发送到主网的消息在挑战窗口到期之前无法执行。 ## 乐观卷叠费用如何运作? {#how-do-optimistic-rollup-fees-work} -乐观卷叠使用类似于以太坊的燃料费方案来表示用户为每笔交易支付的费用。 乐观卷叠收取的费用取决于以下组成部分: +乐观卷叠使用类似于以太坊的燃料费方案来表示用户为每笔交易支付的费用。 乐观卷叠收取的费用取决于以下几个部分: -1. **状态写入**:乐观卷叠将交易数据和区块头(由前一个区块头哈希、状态根、批处理根组成)作为 `blob`,即二进制大对象,发布到以太坊。 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) 引入了在链上纳入数据的高成本效益解决方案。 `blob` 是一个允许卷叠将压缩状态的转换数据发布到以太坊一层网络的新交易字段。 与永驻链上的 `calldata` 不同,二进制大对象的生命周期很短,在 [4096 个时段](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147)(大约 18 天)后即可从客户端删除。 通过使用二进制大对象发布批量压缩交易,乐观卷叠可以大幅降低向一层网络写入交易的成本。 +1. **状态写入**:乐观卷叠将交易数据和区块头(由前一个区块头的哈希、状态根、批处理根组成)作为 `blob`(即“二进制大对象”)发布到以太坊。 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) 引入了一种在链上包含数据且经济高效的解决方案。 `blob` 是一个新的交易字段,允许卷叠将压缩的状态转换数据发布到以太坊 L1。 与永久保留在链上的 `calldata` 不同,blob 是短暂存在的,并且可以在 [4096 个时段](https://github.com/ethereum/consensus-specs/blob/81f3ea8322aff6b9fb15132d050f8f98b16bdba4/configs/mainnet.yaml#L147)(约 18 天)后从客户端中修剪。 通过使用二进制大对象发布批量压缩交易,乐观卷叠可以大幅降低向一层网络写入交易的成本。 -2. **使用的二进制大对象燃料**:二进制大对象携带的交易采用类似于 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 中引入的动态费用机制。 第三类型交易的燃料费考虑了二进制大对象的基础费,后者由网络根据二进制大对象空间需求和所发送交易的二进制大对象空间使用情况来决定。 +2. **使用的二进制大对象燃料**:携带二进制大对象的交易采用一种类似于 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 引入的动态费用机制。 第三类型交易的燃料费考虑了二进制大对象的基础费,后者由网络根据二进制大对象空间需求和所发送交易的二进制大对象空间使用情况来决定。 -3. **二层网络运营商费用**:这是支付给卷叠节点的金额,用来补偿处理交易时产生的计算成本,很像以太坊上的燃料费用。 由于二层网络处理能力更强,并且不会出现网络拥塞迫使以太坊上的验证者优先处理费用更高的交易,卷叠节点收取的交易费更低。 +3. **L2 运营商费用**:这是支付给卷叠节点的金额,作为处理交易所产生计算成本的补偿,与以太坊上的燃料费非常相似。 由于二层网络处理能力更强,并且不会出现网络拥塞迫使以太坊上的验证者优先处理费用更高的交易,卷叠节点收取的交易费更低。 -乐观卷叠应用了多种机制来降低用户的费用,包括批量交易和压缩 `calldata` 以降低数据发布成本。 你可以查看 [L2 费用跟踪器](https://l2fees.info/),实时了解使用基于以太坊的乐观卷叠的成本。 +乐观卷叠采用多种机制为用户降低费用,包括对交易进行批处理和压缩 `calldata` 来降低数据发布成本。 你可以查看 [L2 费用跟踪器](https://l2fees.info/),实时了解使用基于以太坊的乐观卷叠需要多少成本。 ## 乐观卷叠如何扩容以太坊? {#scaling-ethereum-with-optimistic-rollups} 如前所述,乐观卷叠在以太坊上发布压缩的交易数据以保证数据可用性。 压缩链上发布的数据的能力对于通过乐观卷叠扩容以太坊的吞吐量至关重要。 -以太坊主链限制了区块可以容纳的数据量,以燃料单位计量([平均区块大小](/developers/docs/blocks/#block-size)为 1500 万燃料)。 虽然这限制了每笔交易可以使用多少燃料,但也意味着我们可以通过减少与交易相关的数据来增加每个区块处理的交易,直接提高了可扩展性。 +以太坊主链对区块可容纳的数据量设置了限制,以燃料为单位([平均区块大小](/developers/docs/blocks/#block-size)为 1500 万燃料)。 虽然这限制了每笔交易可以使用多少燃料,但也意味着我们可以通过减少与交易相关的数据来增加每个区块处理的交易,直接提高了可扩展性。 -乐观卷叠使用多种技术来实现交易数据压缩并提高每秒交易量速率。 例如,这篇[文章](https://vitalik.eth.limo/general/2021/01/05/rollup.html)将基本用户交易(发送以太币)在主网上生成的数据量与相同交易在卷叠上生成的数据量进行了比较: +乐观卷叠使用多种技术来实现交易数据压缩并提高每秒交易量速率。 例如,这篇[文章](https://vitalik.eth.limo/general/2021/01/05/rollup.html)比较了一笔基本用户交易(发送以太币)在主网上生成的数据与同一笔交易在卷叠上生成的数据: -| 参数 | 以太坊 (L1) | 卷叠 (L2) | -| --------- | ----------------- | ---------- | -| Nonce | ~3 | 0 | -| Gasprice | ~8 | 0-0.5 | -| Gas | 3 | 0-0.5 | -| To | 21 | 4 | -| Value | 9 | ~3 | -| Signature | ~68 (2 + 33 + 33) | ~0.5 | -| From | 0(从签名中恢复) | 4 | -| **总计** | **~112 字节** | **~12 字节** | +| 参数 | 以太坊 (L1) | 卷叠 (L2) | +| -------- | ---------------------------------------------------- | ------------------------------------ | +| Nonce | ~3 | 0 | +| Gasprice | ~8 | 0-0.5 | +| 燃料 | 3 | 0-0.5 | +| To | 21 | 4 | +| Value | 9 | ~3 | +| 签名 | ~68 (2 + 33 + 33) | ~0.5 | +| From | 0(从签名中恢复) | 4 | +| **总计** | **~112 字节** | **~12 字节** | 对这些数字进行一些粗略的计算有助于显示乐观卷叠提供的可扩展性改进: -1. 每个区块的目标大小是 1500 万燃料,验证一个字节的数据需要 16 个燃料。 将平均区块大小除以 16 燃料(15,000,000/16),表明一般区块可以容纳 **937,500 字节的数据**。 -2. 如果一个基本卷叠交易使用 12 个字节,那么以太坊区块平均可以处理 **78,125 个卷叠交易** (937,5000/12) 或 **39 个卷叠批次**(如果每个批次平均包含 2,000 个交易)。 -3. 如果每 15 秒在以太坊上产生一个新区块,那么卷叠的处理速度将大致达到**每秒 5,208 次交易**。 这是通过将以太坊区块可以容纳的基本卷叠交易数量 (**78,125**) 除以平均区块时间 (**15 秒**) 得出的。 +1. 每个区块的目标大小是 1500 万燃料,验证一个字节的数据需要 16 个燃料。 将平均区块大小除以 16 燃料 (15,000,000/16),结果表明平均一个区块可以容纳 **937,500 字节的数据**。 +2. 如果一笔基本的卷叠交易使用 12 字节,那么一个普通的以太坊区块可以处理 **78,125 笔卷叠交易** (937,500/12) 或 **39 个卷叠批次**(如果每个批次平均包含 2,000 笔交易)。 +3. 如果以太坊每 15 秒产生一个新区块,那么该卷叠的处理速度大约为**每秒 5,208 笔交易**。 这是通过将一个以太坊区块可以容纳的基本卷叠交易数量(**78,125**)除以平均出块时间(**15 秒**)计算得出的。 -这是一个比较乐观的估计,因为乐观卷叠交易不可能包含以太坊上的整个区块。 但是,它可以大致了解乐观卷叠可以为以太坊用户提供多少可扩展性收益(当前实现可提供高达 2,000 交易每秒的速率)。 +这是一个比较乐观的估计,因为乐观卷叠交易不可能包含以太坊上的整个区块。 然而,这可以让我们大致了解乐观卷叠能为以太坊用户带来多大的可扩展性收益(目前的实现方案最高可达 2,000 TPS)。 -在以太坊上引入[数据分片](/roadmap/danksharding/)有望提高乐观卷叠的可扩展性。 由于卷叠交易必须与其他非卷叠交易共享区块空间,因此它们的处理能力受到以太坊主链上的数据吞吐量的限制。 Danksharding 使用更经济的非永久型“二进制大对象”存储,而弃用昂贵的永久型 `CALLDATA`,这将增加二层网络链上用于发布每个区块中数据的空间。 +在以太坊上引入[数据分片](/roadmap/danksharding/)有望提高乐观卷叠的可扩展性。 由于卷叠交易必须与其他非卷叠交易共享区块空间,因此它们的处理能力受到以太坊主链上的数据吞吐量的限制。 Danksharding 将增加 L2 链每个区块可用于发布数据的空间,它使用更便宜、非永久性的“blob”存储,而不是昂贵、永久性的 `CALLDATA`。 ### 乐观卷叠的优缺点 {#optimistic-rollups-pros-and-cons} @@ -247,7 +247,7 @@ ii. 使用乐观卷叠的开发者和项目团队可以利用以太坊的基础 | 乐观卷叠依赖于精心设计的加密经济激励措施来提高链上的安全性。 | 卷叠必须在链上发布所有交易数据,这会增加成本。 | | 与以太坊虚拟机和 Solidity 的兼容性允许开发者将以太坊原生智能合约移植到卷叠或使用现有工具来创建新的去中心化应用程序。 | | -### 乐观卷叠的直观解释 {#optimistic-video} +### 乐观卷叠的视频解说 {#optimistic-video} 更愿意通过视频学习? 观看 Finematics 解说乐观卷叠: @@ -255,9 +255,11 @@ ii. 使用乐观卷叠的开发者和项目团队可以利用以太坊的基础 ## 阅读关于乐观卷叠的更多信息 -- [乐观卷叠如何工作(完整指南)](https://www.alchemy.com/overviews/optimistic-rollups) +- [乐观卷叠如何运作(完整指南)](https://www.alchemy.com/overviews/optimistic-rollups) - [什么是区块链卷叠? 技术介绍](https://www.ethereum-ecosystem.com/blog/what-is-a-blockchain-rollup-a-technical-introduction) -- [Arbitrum 基本指南](https://www.bankless.com/the-essential-guide-to-arbitrum) -- [乐观卷叠究竟如何工作?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work) -- [深入研究乐观虚拟机](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) +- [Arbitrum 基础指南](https://www.bankless.com/the-essential-guide-to-arbitrum) +- [以太坊卷叠实用指南](https://web.archive.org/web/20241108192208/https://research.2077.xyz/the-practical-guide-to-ethereum-rollups) +- [以太坊 L2 欺诈证明的现状](https://web.archive.org/web/20241124154627/https://research.2077.xyz/the-state-of-fraud-proofs-in-ethereum-l2s) +- [Optimism 的卷叠到底是如何运作的?](https://www.paradigm.xyz/2021/01/how-does-optimism-s-rollup-really-work) +- [OVM 深度解析](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) - [什么是乐观虚拟机?](https://www.alchemy.com/overviews/optimistic-virtual-machine) From 77f2887272856ae6da073c293b1dd85347c83d5c Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:55 -0800 Subject: [PATCH 154/581] update(i18n): public/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md --- .../dagger-hashimoto/index.md | 112 +++++++++--------- 1 file changed, 54 insertions(+), 58 deletions(-) diff --git a/public/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md b/public/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md index faa0ed58c54..bf9d546324c 100644 --- a/public/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md +++ b/public/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto/index.md @@ -4,32 +4,32 @@ description: 详细了解 Dagger-Hashimoto 算法。 lang: zh --- -Dagger-Hashimoto 是以太坊挖矿算法的原始研究实现和规范。 但是,Dagger-Hashimoto 已被 [Ethash](#ethash) 取代。 在 2022 年 9 月 15 日实施[合并](/roadmap/merge/)后,挖矿完全关闭。 此后,以太坊采用[权益证明](/developers/docs/consensus-mechanisms/pos)机制保护安全。 本页面展示与历史有关的内容,其中的信息不再与合并后的以太坊相关。 +Dagger-Hashimoto 是以太坊挖矿算法的原始研究实现和规范。 Dagger-Hashimoto 已被 [Ethash](#ethash) 取代。 2022 年 9 月 15 日[合并](/roadmap/merge/)后,挖矿已完全停止。 此后,以太坊转而使用[权益证明](/developers/docs/consensus-mechanisms/pos)机制来保障安全。 本页面展示与历史有关的内容,其中的信息不再与合并后的以太坊相关。 ## 前提条件 {#prerequisites} -为了更好地了解此页面,建议提前阅读[工作量证明共识](/developers/docs/consensus-mechanisms/pow)、[挖矿](/developers/docs/consensus-mechanisms/pow/mining)和[挖矿算法](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms)。 +为了更好地理解本页内容,我们建议您首先阅读有关[工作量证明共识](/developers/docs/consensus-mechanisms/pow)、[挖矿](/developers/docs/consensus-mechanisms/pow/mining)和[挖矿算法](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms)的资料。 -## Dagger-Hashimoto 算法 {#dagger-hashimoto} +## Dagger-Hashimoto {#dagger-hashimoto} Dagger-Hashimoto 旨在实现两个目标: -1. **ASIC 抗性**:为算法打造专用硬件的益处应尽可能小。 -2. **轻量级客户端可验证性**:区块应能被轻量级客户端高效验证。 +1. **抗 ASIC 性**:为该算法创建专用硬件的好处应尽可能小 +2. **轻客户端可验证性**:区块应能由轻客户端高效验证。 在作出进一步修改后,我们还要具体说明如何在必要时实现第三个目标,但要以增加复杂性为代价: -**完整链存储**:挖矿需要存储完整的区块链状态(因为以太坊状态子树的不规则结构,我们预计将有可能进行一些修改,特别是一些经常用到的合约,但我们希望尽量减少这种情况)。 +**全链存储**:挖矿应要求存储完整的区块链状态(由于以太坊状态树的结构不规则,我们预计可以进行一些修剪,特别是一些常用合约,但我们希望将其最小化)。 -## 有向无环图世代 {#dag-generation} +## DAG 生成 {#dag-generation} -以下算法代码将在 Python 中定义。 首先,我们定义了 `encode_int`,用于将指定精度的无符号整数封送为字符串。 同时还定义了它的逆函数。 +以下算法代码将在 Python 中定义。 首先,我们给出 `encode_int`,用于将指定精度的无符号整数封送为字符串。 同时还定义了它的逆函数。 ```python NUM_BITS = 512 def encode_int(x): - "Encode an integer x as a string of 64 characters using a big-endian scheme" + "使用大端方案将整数 x 编码为 64 个字符的字符串" o = '' for _ in range(NUM_BITS / 8): o = chr(x % 256) + o @@ -37,7 +37,7 @@ def encode_int(x): return o def decode_int(s): - "Unencode an integer x from a string using a big-endian scheme" + "使用大端方案从字符串中解码整数 x" x = 0 for c in s: x *= 256 @@ -45,7 +45,7 @@ def decode_int(s): return x ``` -接下来我们假设 `sha3` 是一个需要输入整数,然后输出整数的函数,而 `dbl_sha3` 是一个 double-sha3 函数;如果将此引用代码转换为实现,使用以下代码: +接下来我们假设 `sha3` 是一个接收整数并输出整数的函数,而 `dbl_sha3` 是一个 double-sha3 函数;如果要将此参考代码转换为实现,请使用: ```python from pyethereum import utils @@ -65,26 +65,26 @@ def dbl_sha3(x): 该算法使用的参数有: ```python -SAFE_PRIME_512 = 2**512 - 38117 # Largest Safe Prime less than 2**512 +SAFE_PRIME_512 = 2**512 - 38117 # 小于 2**512 的最大安全素数 params = { - "n": 4000055296 * 8 // NUM_BITS, # Size of the dataset (4 Gigabytes); MUST BE MULTIPLE OF 65536 - "n_inc": 65536, # Increment in value of n per period; MUST BE MULTIPLE OF 65536 - # with epochtime=20000 gives 882 MB growth per year - "cache_size": 2500, # Size of the light client's cache (can be chosen by light - # client; not part of the algo spec) - "diff": 2**14, # Difficulty (adjusted during block evaluation) - "epochtime": 100000, # Length of an epoch in blocks (how often the dataset is updated) - "k": 1, # Number of parents of a node - "w": w, # Used for modular exponentiation hashing - "accesses": 200, # Number of dataset accesses during hashimoto - "P": SAFE_PRIME_512 # Safe Prime for hashing and random number generation + "n": 4000055296 * 8 // NUM_BITS, # 数据集的大小(4 GB);必须是 65536 的倍数 + "n_inc": 65536, # 每个时段的 n 值增量;必须是 65536 的倍数 + # epochtime=20000 时,每年增长 882 MB + "cache_size": 2500, # 轻客户端的缓存大小(可由轻客户端选择; + # 不属于算法规范) + "diff": 2**14, # 难度(在区块评估期间调整) + "epochtime": 100000, # 一个时段的区块长度(数据集的更新频率) + "k": 1, # 节点的父节点数量 + "w": w, # 用于模幂哈希 + "accesses": 200, # hashimoto 期间的数据集访问次数 + "P": SAFE_PRIME_512 # 用于哈希和随机数生成的安全素数 } ``` -`P` 在这种情况下为优先选择,因此 `log₂(P)` 仅略小于 512。512 对应于我们用来代表我们数目的 512 字节。 请注意,实际上只需要存储有向无环图的后半部分,因此,实际内存要求最初为 1 GB,每年增长 441 MB。 +在这种情况下,`P` 是一个质数,其选择要使 `log₂(P)` 略小于 512,这对应于我们一直用来表示数字的 512 位。 请注意,实际上只需要存储有向无环图的后半部分,因此,实际内存要求最初为 1 GB,每年增长 441 MB。 -### Dagger 建图 {#dagger-graph-building} +### Dagger 图构建 {#dagger-graph-building} Dagger 建图基本式的定义如下: @@ -101,11 +101,11 @@ def produce_dag(params, seed, length): return o ``` -基本上,建图从单个节点 `sha3(seed)` 开始,然后根据随机的先前节点按顺序添加到其他节点上。 创建一个新的节点后,将计算种子的模块化能力,以随机选择一些小于 `i` 的索引(使用上述 `x % i`),并且使用这些索引上的节点值进行计算,以产生新的 `x` 值,随后该值被提供给一个小的工作量证明函数(基于 XOR),最终在索引 `i` 生成图值。 这种特殊设计背后的基本原理是强制按顺序访问有向无环图。如果当前值未知,则无法确定要访问的下一个有向无环图的值。 最后,模幂运算会使结果更加恶化。 +本质上,它以单个节点 `sha3(seed)` 启动一个图,然后从那里开始,根据随机的先前节点顺序添加其他节点。 当创建一个新节点时,会计算种子的模幂,以随机选择一些小于 `i` 的索引(使用上面的 `x % i`),然后使用这些索引处节点的值进行计算,以生成新的 `x` 值,该值再被送入一个小的(基于 XOR 的)工作量证明函数,最终生成索引为 `i` 的图值。 这种特殊设计背后的基本原理是强制按顺序访问有向无环图。如果当前值未知,则无法确定要访问的下一个有向无环图的值。 最后,模幂运算会使结果更加恶化。 这种算法依赖于数字理论的若干结果。 讨论情况见下文附录。 -## 轻量级客户端评估 {#light-client-evaluation} +## 轻客户端评估 {#light-client-evaluation} 上述构图旨在实现图中每个节点的重构,只计算少量节点的子树,并且仅需少量的辅助内存。 请注意,当 k=1 时,子树只是一个上升到有向无环图第一个元素的值链。 @@ -131,11 +131,11 @@ def quick_calc(params, seed, p): return quick_calc_cached(p) ``` -本质上,它只是对上述算法的重写,删除了计算整个有向无环图值的循环,并用递归调用或缓存查找替换了早期的节点查找。 请注意,对于 `k=1` 的情况,缓存是不必要的,尽管进一步的优化实际上预先计算了有向无环图的前几千个值,并将其作为静态缓存进行计算;有关此代码实现,请参见附录。 +本质上,它只是对上述算法的重写,删除了计算整个有向无环图值的循环,并用递归调用或缓存查找替换了早期的节点查找。 请注意,对于 `k=1` 的情况,缓存是不必要的,尽管进一步的优化实际上预先计算了 DAG 的前几千个值,并将其作为静态缓存进行计算;有关此代码的实现,请参见附录。 -## 有向无环图的双倍缓冲 {#double-buffer} +## DAG 的双缓冲 {#double-buffer} -在完整客户端中,使用了上述公式生成的 2 个有向无环图的[_双倍缓冲_](https://wikipedia.org/wiki/Multiple_buffering)。 具体概念是,根据上述参数,每个 `epochtime` 生成一个有向无环图。 但客户端使用的并非是最新生成的有向无环图,而是前一个。 这样做的好处是,有向无环图可以随着时间的推移而被替换掉,无需包含矿工必须突然重新计算所有数据的步骤。 否则,定期的链处理可能会突然暂时放缓,并大幅提高中心化程度。 因此,在重新计算所有数据之前的几分钟时间内,存在 51% 的攻击风险。 +在全客户端中,会使用由上述公式生成的 2 个 DAG 的[_双缓冲_](https://wikipedia.org/wiki/Multiple_buffering)。 其思想是,根据上述参数,每隔 `epochtime` 个区块就会生成一个 DAG。 但客户端使用的并非是最新生成的有向无环图,而是前一个。 这样做的好处是,有向无环图可以随着时间的推移而被替换掉,无需包含矿工必须突然重新计算所有数据的步骤。 否则,定期的链处理可能会突然暂时放缓,并大幅提高中心化程度。 因此,在重新计算所有数据之前的几分钟时间内,存在 51% 的攻击风险。 要生成用于块工作计算的有向无环图集,算法如下: @@ -164,7 +164,7 @@ def get_daggerset(params, block): dagsz = get_dagsize(params, block) seedset = get_seedset(params, block) if seedset["front_hash"] <= 0: - # No back buffer is possible, just make front buffer + # 无法使用后向缓冲,仅创建前向缓冲 return {"front": {"dag": produce_dag(params, seedset["front_hash"], dagsz), "block_number": 0}} else: @@ -211,7 +211,7 @@ def quick_hashimoto(seed, dagsize, params, header, nonce): return dbl_sha3(mix) ``` -## 挖矿与验证 {#mining-and-verifying} +## 挖矿和验证 {#mining-and-verifying} 现在,将它们全部整合到挖矿算法中: @@ -254,56 +254,52 @@ def light_verify(params, header, nonce): - 为了使双层验证起效,区块头必须同时具有随机数和中间值 pre-sha3 - 在某处,区块头必须存储当前种子集的 sha3 -## 延伸阅读 {#further-reading} +## 扩展阅读{#further-reading} -_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_ +_你还知道哪些对你有帮助的社区资源? 请编辑本页面并添加进来!_ ## 附录 {#appendix} -如前所述,用于生成有向无环图的随机数生成依赖于数论的一些结果。 Lehmer 随机数生成程序是 `picker` 变量的基础,因此我们首先确保它具有很宽的周期。 其次,只要一开始 `x ∈ [2,P-2]`,我们便能证明 `pow(x,3,P)` 不会将 `x` 映射到 `1` 或 `P-1`。 最后,我们证明 `pow(x,3,P)` 在被视为散列函数时具有较低的冲突率。 +如前所述,用于生成有向无环图的随机数生成依赖于数论的一些结果。 首先,我们保证作为 `picker` 变量基础的 Lehmer RNG 具有很长的周期。 其次,我们证明只要 `x ∈ [2,P-2]`,`pow(x,3,P)` 就不会将 `x` 映射到 `1` 或 `P-1`。 最后,我们证明当 `pow(x,3,P)` 被当作哈希函数时,其冲突率很低。 -### Lehmer 随机数生成程序 {#lehmer-random-number} +### Lehmer 随机数生成器 {#lehmer-random-number} -虽然 `produce_dag` 函数不需要生成无偏随机数,但潜在的威胁是 `seed**i % P` 只取少数几个值。 这可以为矿工识别模式提供优势。 +虽然 `produce_dag` 函数不需要生成无偏随机数,但一个潜在的威胁是 `seed**i % P` 只会取少数几个值。 这可以为矿工识别模式提供优势。 -为了避免这种情况,可采用数论结果。 [_安全素数_](https://en.wikipedia.org/wiki/Safe_prime)定义为素数 `P`,从而 `(P-1)/2` 也是素数。 [乘数组](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n)中 `x` 的_顺序_ (乘数组 `ℤ/nℤ`)定义为最小 `m`,以使
                                xᵐ mod P ≡ 1
                                -鉴于这些定义,我们得到: +为了避免这种情况,可采用数论结果。 [_安全素数_](https://en.wikipedia.org/wiki/Safe_prime) 定义为素数 `P`,其中 `(P-1)/2` 也是素数。 [乘法群](https://en.wikipedia.org/wiki/Multiplicative_group_of_integers_modulo_n) `ℤ/nℤ` 的成员 `x` 的_阶_定义为最小的 `m`,使得
                                xᵐ mod P ≡ 1
                                +根据这些定义,我们有: -> 观察 1。 令 `x` 成为乘法组 `ℤ/Pℤ` 的一员,以获得安全素数 `P`。 如果 `x mod P ≠ 1 mod P` 和 `x mod P ≠ P-1 mod P`,那么 `x` 的顺序是 ` P-1` 或 `(P-1)/2`。 +> 观察 1。 设 `x` 是乘法群 `ℤ/Pℤ` 的一个成员,其中 `P` 是一个安全素数。 如果 `x mod P ≠ 1 mod P` 且 `x mod P ≠ P-1 mod P`,那么 `x` 的阶是 `P-1` 或 `(P-1)/2`。 -_证明_。 由于 `P` 是一个安全素数,那么根据 \[Lagrange's Theorem\]\[lagrange\],我们得到 `x` 的顺序为 `1`、`2`、`(P-1)/2` 或 `P-1`。 +_证明_。 由于 `P` 是一个安全素数,那么根据[拉格朗日定理][lagrange],我们可知 `x` 的阶是 `1`、`2`、`(P-1)/2` 或 `P-1`。 -`x` 的顺序不能是 `1`,因为根据费马小定理,我们得出: +`x` 的阶不可能是 `1`,因为根据费马小定理,我们有:
                                xP-1 mod P ≡ 1
                                -因此,`x` 必须是 `ℤ/nℤ` 的乘法单位,并且是唯一的乘法单位。 由于我们假设 `x ≠ 1`,所以这是不可能的。 +因此,`x` 必须是 `ℤ/nℤ` 的乘法单位元,而乘法单位元是唯一的。 由于我们已经假设 `x ≠ 1`,所以这是不可能的。 -`x` 的顺序不能是 `2`,除非 `x = P-1`,因为这将违反 `P` 是素数的事实。 +`x` 的阶不可能是 `2`,除非 `x = P-1`,因为这将违背 `P` 是素数这一事实。 -从以上命题中,我们可以知道,迭代 `(picker * init) % P` 的循环长度至少为 `(P-1)/2`。 这是因为我们选择 `P` 作为安全素数,强度几乎翻倍,且 `init` 处于 `[2,2**256+1]` 区间内。 考虑到 `P` 的量级,我们不应期待模幂运算具有周期性。 +从以上命题中,我们可以认识到,迭代 `(picker * init) % P` 的循环长度至少为 `(P-1)/2`。 这是因为我们选择的 `P` 是一个安全素数,约等于 2 的一个较高次幂,并且 `init` 在区间 `[2,2**256+1]` 内。 考虑到 `P` 的数量级,我们不应该期望模幂运算会出现循环。 -在有向无环图中分配第一个单元时(变量标签为 `init`),我们会计算 `pow(sha3(seed) + 2, 3, P)`。 初看起来,这并不能保证结果既不是 `1` 也不是 `P-1`。 然而,既然 `P-1` 是一个安全素数,我们还提供以下额外保证,这是观察 1 的必然结果: +在分配 DAG 中的第一个单元格(标记为 `init` 的变量)时,我们计算 `pow(sha3(seed) + 2, 3, P)`。 乍一看,这并不能保证结果既不是 `1` 也不是 `P-1`。 然而,由于 `P-1` 是一个安全素数,我们有以下额外的保证,这是观察 1 的一个推论: -> 观察 2。 令 `x` 成为乘法组 `ℤ/Pℤ` 的一员,以获得安全素数 `P`,并让 `w` 成为自然数。 如果 `x mod P ≠ 1 mod P`、`x mod P ≠ P-1 mod P`,且 `w mod P ≠ P-1 mod P`、`w mod P ≠ 0 mod P`,那么 `xʷ mod P ≠ 1 mod P` 且 `xʷ mod P ≠ P-1 mod P` +> 观察 2。 设 `x` 是乘法群 `ℤ/Pℤ` 的一个成员(其中 `P` 是一个安全素数),并设 `w` 是一个自然数。 如果 `x mod P ≠ 1 mod P` 且 `x mod P ≠ P-1 mod P`,并且 `w mod P ≠ P-1 mod P` 且 `w mod P ≠ 0 mod P`,那么 `xʷ mod P ≠ 1 mod P` 且 `xʷ mod P ≠ P-1 mod P` -### 模幂运算用作散列函数 {#modular-exponentiation} +### 作为哈希函数的模幂运算 {#modular-exponentiation} -对于特定的 `P` 值和 `w` 值,函数 `pow(x, w, P)` 可能存在许多冲突。 例如,`pow(x,9,19)` 的值只能接受 `{1,18}`。 +对于 `P` 和 `w` 的某些值,函数 `pow(x, w, P)` 可能会有很多冲突。 例如,`pow(x,9,19)` 只取 `{1,18}` 这几个值。 -鉴于 `P` 为素数,可以使用以下结果,选择一个用于模幂运算哈希函数的适当 `w` 值: +鉴于 `P` 是素数,可以使用以下结果为模幂哈希函数选择一个合适的 `w`: -> 观察 3。 令 `P` 为素数;当且仅当用于 `ℤ/Pℤ` 中所有 `a` 和 `b` 满足以下条件时,`w` 和 `P-1` 才能为互素。 -> ->
                                -> `aʷ mod P ≡ bʷ mod P`,当且仅当 `a mod P ≡ b mod P` ->
                                +> 观察 3。 设 `P` 是一个素数;`w` 和 `P-1` 互素,当且仅当对于 `ℤ/Pℤ` 中的所有 `a` 和 `b`:
                                `aʷ mod P ≡ bʷ mod P` 当且仅当 `a mod P ≡ b mod P`
                                -因此,鉴于 `P` 为素数,且 `w` 与 `P-1` 为互素,我们得出 `|{pow(x, w, P) : x ∈ ℤ}| = P`,表示散列函数具有尽可能小的冲突率。 +因此,鉴于 `P` 是素数且 `w` 与 `P-1` 互素,我们有 `|{pow(x, w, P) : x ∈ ℤ}| = P`,这意味着该哈希函数具有最小的可能冲突率。 -在特殊情况下,`P` 是我们选择的安全素数,那么 `P-1` 仅有系数 1、2、`(P-1)/2` 和 `P-1`。 由于 `P` > 7,我们知道 3 与 `P-1` 互素,因此 `w=3` 满足上述命题。 +在我们所选的 `P` 是安全素数的特殊情况下,`P-1` 仅有因子 1、2、`(P-1)/2` 和 `P-1`。 由于 `P` > 7,我们知道 3 与 `P-1` 互素,因此 `w=3` 满足上述命题。 -## 更有效的缓存评估算法 {#cache-based-evaluation} +## 更高效的基于缓存的评估算法 {#cache-based-evaluation} ```python def quick_calc(params, seed, p): From c94a771035e47365fd801cb961b851ff03743884 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:14:59 -0800 Subject: [PATCH 155/581] update(i18n): public/content/translations/zh/developers/docs/smart-contracts/security/index.md --- .../docs/smart-contracts/security/index.md | 274 +++++++++--------- 1 file changed, 137 insertions(+), 137 deletions(-) diff --git a/public/content/translations/zh/developers/docs/smart-contracts/security/index.md b/public/content/translations/zh/developers/docs/smart-contracts/security/index.md index e058ab091bd..5ceadc46151 100644 --- a/public/content/translations/zh/developers/docs/smart-contracts/security/index.md +++ b/public/content/translations/zh/developers/docs/smart-contracts/security/index.md @@ -6,49 +6,49 @@ lang: zh 智能合约极为灵活,能够控制大量的价值和数据,并在区块链上运行基于代码的不可改变逻辑。 因而,一个由去信任的去中心化应用程序构成的生态系统应运而生且充满活力,它具备了许多传统系统所没有的优势。 同时,这也给攻击者提供了利用智能合约中的漏洞来获利的机会。 -公共区块链(比如以太坊)使智能合约的安全性问题变的更加复杂。 已部署的合约代码_通常_无法更改因而不能给安全问题打补丁,并且由于这种不可变性,从智能合约中盗取的资产极难追踪并且绝大多数无法挽回。 +公共区块链(比如以太坊)使智能合约的安全性问题变的更加复杂。 已部署的合约代码_通常_无法更改以修补安全漏洞,而由于其不可变性,从智能合约中盗取的资产极难追踪且基本上无法追回。 -虽然统计数据有所差异,但据估计,由于智能合约的安全缺陷而被盗窃或丢失的资产总额肯定超过了 10 亿美元。 其中包括几次著名事件,比如 [DAO 攻击事件](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/)(360 万个以太币被盗,按照当前价格计算总金额超过 10 亿美元)、[Parity 多重签名钱包攻击事件](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach)(黑客窃取了 3000 万美元)以及 [Parity 钱包冻结问题](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether)(价值超过 3 亿美元的以太币遭到永久锁定)。 +虽然统计数据有所差异,但据估计,由于智能合约的安全缺陷而被盗窃或丢失的资产总额肯定超过了 10 亿美元。 其中包括一些备受瞩目的事件,例如 [DAO 黑客攻击](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/)(360 万 ETH 被盗,按当前价格计算价值超过 10 亿美元)、[Parity 多签钱包遭黑客攻击](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach)(黑客窃取了 3000 万美元),以及 [Parity 钱包冻结问题](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether)(价值超过 3 亿美元的 ETH 被永久锁定)。 上述几个事件迫使开发者必须付诸努力,构建安全、稳健、恢复力强的智能合约。 智能合约安全性是每个开发者都需要学习和研究的严肃问题。 本指南将介绍针对以太坊开发者的安全性注意事项,并研究增强智能合约安全性的资源。 -## 前言 {#prerequisites} +## 前提条件 {#prerequisites} -在开始研究安全性问题之前,请确保自己已经熟悉[智能合约开发的基础知识](/developers/docs/smart-contracts/)。 +在着手处理安全问题之前,请确保您熟悉[智能合约开发的基础知识](/developers/docs/smart-contracts/)。 -## 安全以太坊智能合约的构建准则 {#smart-contract-security-guidelines} +## 构建安全的以太坊智能合约指南 {#smart-contract-security-guidelines} -### 1. 设计合理的访问控制 {#design-proper-access-controls} +### 1. 设计适当的访问控制 {#design-proper-access-controls} -在智能合约中,带有 `public` 或 `external` 标记的函数可以被任何外部帐户 (EOA) 或者合约帐户调用。 如果你希望他人与你的合约交互,就必须为函数指定公共可见性。 然而,标记为 `private` 的函数只能被智能合约内部的函数调用,外部帐户无法调用。 为每个网络用户提供合约函数的访问权限会造成问题,尤其是当这种访问意味着任何人都能执行敏感操作(比如铸币)的情况。 +在智能合约中,标记为 `public` 或 `external` 的函数可由任何外部持有账户 (EOA) 或合约账户调用。 如果你希望他人与你的合约交互,就必须为函数指定公共可见性。 然而,标记为 `private` 的函数只能被智能合约内部的函数调用,外部帐户无法调用。 为每个网络用户提供合约函数的访问权限会造成问题,尤其是当这种访问意味着任何人都能执行敏感操作(比如铸币)的情况。 -为了防止未经授权使用智能合约函数,有必要实现安全访问控制。 访问控制机制将使用智能合约中某些特定函数的能力限定给经过核准的实体,例如负责管理合约的帐户。 两种模式有助于在智能合约中实现访问控制,**所有权模式**和**基于角色的控制**: +为了防止未经授权使用智能合约函数,有必要实现安全访问控制。 访问控制机制将使用智能合约中某些特定函数的能力限定给经过核准的实体,例如负责管理合约的帐户。 **所有权模式**和**基于角色的控制**是在智能合约中实现访问控制的两种有用模式: #### 所有权模式 {#ownable-pattern} -在所有权模式中,在合约创建过程中将地址设置为合约的“所有者”。 受保护的函数都分配有 `OnlyOwner` 修改器,这样可以确保合约在执行函数之前验证调用地址的身份。 从合约所有者以外的其他地址调用受保护的函数,始终会被回滚,阻止不必要的访问。 +在所有权模式中,在合约创建过程中将地址设置为合约的“所有者”。 受保护的函数被分配了一个 `OnlyOwner` 修饰符,这能确保合约在执行函数前验证调用地址的身份。 从合约所有者以外的其他地址调用受保护的函数,始终会被回滚,阻止不必要的访问。 #### 基于角色的访问控制 {#role-based-access-control} -在智能合约中将一个地址注册成 `Owner` 会引入中心化风险,并代表一种单点故障。 如果所有者的帐户密钥已泄露,攻击者就可以攻击其拥有的合约。 这就是采用基于角色的访问控制模式及多个管理帐户可能是更好方案的原因。 +在智能合约中将单个地址注册为 `Owner` 会引入中心化风险,并构成单点故障。 如果所有者的帐户密钥已泄露,攻击者就可以攻击其拥有的合约。 这就是采用基于角色的访问控制模式及多个管理帐户可能是更好方案的原因。 在基于角色的访问控制中,对敏感函数的访问分布在一组受信任的参与者之间。 例如,一个帐户可能负责铸造代币,而另一个帐户进行升级或暂停合约。 以这种方式分散访问控制,消除了单点故障并减少了对用户的信任假设。 ##### 使用多重签名钱包 -实施安全访问控制的另一种方法是使用[多重签名帐户](/developers/docs/smart-contracts/#multisig)来管理合约。 与常规外部帐户不同,多重签名帐户由多个实体拥有,需要最低数量的帐户签名(比如 5 个中的 3 个)才能执行交易。 +实现安全访问控制的另一种方法是使用[多签账户](/developers/docs/smart-contracts/#multisig)来管理合约。 与常规外部帐户不同,多重签名帐户由多个实体拥有,需要最低数量的帐户签名(比如 5 个中的 3 个)才能执行交易。 使用多重签名进行访问控制增加了额外一层安全性保障,因为需要多方同意才能对目标合约执行操作。 如果有必要使用所有权模式,这种方法尤其有用,因为攻击者或内部作恶者操控敏感的合约函数以达到恶毒目的会更加困难。 -### 2. 使用 require()、assert() 和 revert() 语句保护合约操作 {#use-require-assert-revert} +### 2. 使用 require()、assert() 和 revert() 语句来保护合约操作 {#use-require-assert-revert} -如上所述,一旦智能合约部署到区块链上,任何人都可以调用其中的公共函数。 由于无法事先知道外部帐户将如何与合约交互,因此最好在部署之前实施内部安全措施以防出现有问题的操作。 可以通过使用 `require()`、`assert()` 和 `revert()` 语句强制执行智能合约中的正确行为,在执行不满足某些要求时触发异常并回滚状态变化。 +如上所述,一旦智能合约部署到区块链上,任何人都可以调用其中的公共函数。 由于无法事先知道外部帐户将如何与合约交互,因此最好在部署之前实施内部安全措施以防出现有问题的操作。 您可以通过使用 `require()`、`assert()` 和 `revert()` 语句在智能合约中强制执行正确的行为,以便在执行未能满足某些要求时触发异常并回滚状态变更。 -**`require()`**:`require` 在函数开始时定义并确保在被调用函数执行之前满足预定义的条件。 `require` 语句可用于在处理函数之前验证用户输入、检查状态变量或验证调用帐户的身份。 +**`require()`**:`require` 在函数开头定义,确保在执行被调用的函数前满足预定义的条件。 `require` 语句可用于验证用户输入、检查状态变量或在函数继续执行前验证调用账户的身份。 -**`assert()`**:`assert()` 用于检测内部错误,并检查代码中是否有违反“不变量”的情况。 不变量是关于合约状态的逻辑断言,对于函数的所有执行都应该为真。 举个例子,代币合约的最大总供应量或余额就是一个不变量。 使用 `assert()` 可确保合约永远不会达到易受攻击的状态,如果达到,对状态变量的所有更改都会回滚。 +**`assert()`**:`assert()` 用于检测内部错误和检查代码中是否违反“不变量”。 不变量是关于合约状态的逻辑断言,对于函数的所有执行都应该为真。 举个例子,代币合约的最大总供应量或余额就是一个不变量。 使用 `assert()` 可以确保您的合约永远不会进入易受攻击的状态,如果进入了,对状态变量的所有更改都会被回滚。 -**`revert()`**:`revert()` 可用于 if-else 语句,可在要求的条件未满足时触发异常。 下面的示例合约使用 `revert()` 来保护函数的执行: +**`revert()`**:`revert()` 可用于 if-else 语句,在不满足所需条件时触发异常。 下面的示例合约使用 `revert()` 来保护函数的执行: ``` pragma solidity ^0.8.4; @@ -58,8 +58,8 @@ contract VendingMachine { error Unauthorized(); function buy(uint amount) public payable { if (amount > msg.value / 2 ether) - revert("Not enough Ether provided."); - // Perform the purchase. + revert("提供的以太币不足。"); + // 执行购买操作。 } function withdraw() public { if (msg.sender != owner) @@ -72,17 +72,17 @@ contract VendingMachine { ### 3. 测试智能合约并验证代码正确性 {#test-smart-contracts-and-verify-code-correctness} -鉴于在[以太坊虚拟机](/developers/docs/evm/)中运行的代码的不可变性,智能合约在开发阶段需要更高水平的质量评估。 对合约进行大量测试并观察是否存在任何意外结果,将显著增强合约的安全性并为用户提供长远保护。 +在[以太坊虚拟机](/developers/docs/evm/)中运行的代码具有不可变性,这意味着智能合约在开发阶段需要更高水平的质量评估。 对合约进行大量测试并观察是否存在任何意外结果,将显著增强合约的安全性并为用户提供长远保护。 -常用办法编写小单元测试,这些测试使用预计合约从用户处接收的模拟数据。 [单元测试](/developers/docs/smart-contracts/testing/#unit-testing)能够测试某些函数的功能并确保智能合约按预期运行。 +常用办法编写小单元测试,这些测试使用预计合约从用户处接收的模拟数据。 [单元测试](/developers/docs/smart-contracts/testing/#unit-testing)有助于测试特定函数的功能,并确保智能合约按预期工作。 遗憾的是,单独使用单元测试对提高智能合约的安全性效果甚微。 单元测试也许可以证明函数对于模拟数据正确执行,但单元测试的有效性受限于编写的测试。 这就意味着很难检测到威胁智能合约安全性的边缘情况和漏洞。 -更好的方法是将单元测试与基于属性的测试相结合,后者是通过[静态和动态分析](/developers/docs/smart-contracts/testing/#static-dynamic-analysis)进行的。 静态分析依赖于底层的表示(例如[控制流程图](https://en.wikipedia.org/wiki/Control-flow_graph)和[抽象语法树](https://deepsource.io/glossary/ast/))分析可达到的程序状态和执行路径。 同时,动态分析技术([例如智能合约模糊测试](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry))使用随机输入值执行合约代码,以检测违反安全属性的操作。 +更好的方法是将单元测试与使用[静态和动态分析](/developers/docs/smart-contracts/testing/#static-dynamic-analysis)执行的基于属性的测试相结合。 静态分析依赖于低级别表示(例如[控制流图](https://en.wikipedia.org/wiki/Control-flow_graph)和[抽象语法树](https://deepsource.io/glossary/ast/)) 来分析可达的程序状态和执行路径。 同时,动态分析技术(例如[智能合约模糊测试](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry))通过使用随机输入值执行合约代码来检测违反安全属性的操作。 -[形式化验证](/developers/docs/smart-contracts/formal-verification)是另一项验证智能合约安全属性的技术。 与常规测试不同,形式化验证能够确证智能合约中没有错误。 这是通过制定细致描述安全属性的形式化规范并证明智能合约的形式化模型符合这一规范来实现的。 +[形式化验证](/developers/docs/smart-contracts/formal-verification)是验证智能合约安全属性的另一种技术。 与常规测试不同,形式化验证能够确证智能合约中没有错误。 这是通过制定细致描述安全属性的形式化规范并证明智能合约的形式化模型符合这一规范来实现的。 -### 4. 申请代码独立审核 {#get-independent-code-reviews} +### 4. 请求对您的代码进行独立审查 {#get-independent-code-reviews} 在测试智能合约后,最好请其他人检查源代码是否存在安全问题。 虽然测试无法发现智能合约中的所有缺陷,但进行独立审核能增加发现漏洞的可能性。 @@ -92,18 +92,18 @@ contract VendingMachine { 尽管如此,你也不应将审计看作终极方案。 智能合约审计无法发现所有漏洞并且主要是为了额外增加一轮审核,这有助于检测到开发者在最初的开发和测试中遗漏的问题。 你还应遵循与审计员合作的最佳做法(例如正确记录代码并添加行内注释),让智能合约审计发挥最大作用。 -- [智能合约审计提示和技巧](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_ -- [充分利用你的审计](https://inference.ag/blog/2023-08-14-tips/) - _推理_ +- [智能合约审计技巧和诀窍](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_ +- [充分利用您的审计](https://inference.ag/blog/2023-08-14-tips/) - _Inference_ -#### 漏洞奖励 {#bug-bounties} +#### 漏洞赏金 {#bug-bounties} 执行外部代码审查的另一种方法是设立漏洞奖励计划。 漏洞奖励是一种经济奖励,提供给发现应用程序中漏洞的个人(通常是白帽黑客)。 -应用得当,漏洞奖励可以激励黑客群体中的成员检查你的代码是否存在重大缺陷。 一个真实的示例是“无限复制倾向漏洞”,它可以让攻击者在以太坊上运行的[二层网络](/layer-2/)协议 [Optimism](https://www.optimism.io/) 上创建无限量的以太币。 幸运的是,一位白帽黑客[发现了这一漏洞](https://www.saurik.com/optimism.html)并告知了以太坊团队,[并获得了一大笔报酬](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/)。 +应用得当,漏洞奖励可以激励黑客群体中的成员检查你的代码是否存在重大缺陷。 一个真实的例子是“无限金钱漏洞”,该漏洞可能让攻击者在 [Optimism](https://www.optimism.io/)(一个在以太坊上运行的[第 2 层](/layer-2/)协议)上创建无限量的以太币。 幸运的是,一位白帽黑客[发现了这个漏洞](https://www.saurik.com/optimism.html)并通知了团队,[在此过程中获得了一大笔奖金](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/)。 -一种实用策略是按有风险资金数额的比例设置漏洞奖励计划的报酬金额。 这种方法被描述成“[比例漏洞奖励](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)”,通过提供经济激励让大家负责任地披露而非利用漏洞。 +一种实用策略是按有风险资金数额的比例设置漏洞奖励计划的报酬金额。 这种方法被称为“[分级漏洞赏金](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)”,它为个人提供经济激励,鼓励他们负责任地披露漏洞,而不是利用漏洞。 -### 5. 智能合约开发过程中遵循最佳做法 {#follow-smart-contract-development-best-practices} +### 5. 在智能合约开发过程中遵循最佳实践 {#follow-smart-contract-development-best-practices} 即使审计和漏洞奖励存在,你也有责任编写高质量的代码。 遵循正确的设计和开发流程是良好的智能合约安全性的开端: @@ -113,15 +113,15 @@ contract VendingMachine { - 确保拉取请求至少有一位独立审核者 — 如果只有你一人完成项目,考虑和其他开发者相互进行代码审核 -- 在[开发环境](/developers/docs/frameworks/)下测试、编译、和部署智能合约 +- 使用[开发环境](/developers/docs/frameworks/)来测试、编译、部署智能合约 -- 通过基本代码分析工具运行代码,例如 [Cyfrin Aderyn](https://github.com/Cyfrin/aderyn) 、Mythril 和 Slither。 理想情况下,应在合并每个拉取请求前进行这一操作,并比较输出中的不同之处 +- 使用基础代码分析工具(例如 [Cyfrin Aderyn](https://github.com/Cyfrin/aderyn)、Mythril 和 Slither)运行您的代码。 理想情况下,应在合并每个拉取请求前进行这一操作,并比较输出中的不同之处 - 确保代码在编译时没有错误,并且 Solidity 编译器没有发出警告 -- 正确记录代码(使用 [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)),并用易于理解的语言描述合约架构的细节。 这将使其他人更容易审计和审核你的代码。 +- (使用 [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html))妥善地为代码编写文档,并用通俗易懂的语言描述合约架构的细节。 这将使其他人更容易审计和审核你的代码。 -### 6. 实施可靠的灾难恢复计划 {#implement-disaster-recovery-plans} +### 6. 实施稳健的灾难恢复计划 {#implement-disaster-recovery-plans} 设计安全的访问控制、使用函数修改器以及其他建议能够提高智能合约的安全性,但这些并不能排除恶意利用的可能性。 构建安全的智能合约需要“做好失败准备”,并制定好应变计划有效地应对攻击。 适当的灾难恢复计划应包括以下部分或全部内容: @@ -129,13 +129,13 @@ contract VendingMachine { 虽然以太坊智能合约默认是不可变的,但通过使用升级模式可以实现一定程度的可变性。 如果重大缺陷导致合约不可用并且部署新逻辑是最可行的选择,有必要升级合约。 -合约升级机制的原理有所不同,但“代理模式”是智能合约升级最常见的方法之一。 [代理模式](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern)将应用程序的状态和逻辑划分为_两个_合约。 第一个合约(称为“代理合约”)存储状态变量(如用户余额),而第二个合约(称为"逻辑合约")存放执行合约函数的代码。 +合约升级机制的原理有所不同,但“代理模式”是智能合约升级最常见的方法之一。 [代理模式](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern)将应用程序的状态和逻辑拆分到_两个_合约中。 第一个合约(称为“代理合约”)存储状态变量(如用户余额),而第二个合约(称为"逻辑合约")存放执行合约函数的代码。 -帐户与代理合约互动,代理合约通过[`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries)的低级调用将所有功能调用分发给逻辑合约。 与普通的消息调用不同,`delegatecall()` 确保在逻辑的合约地址上运行的代码是在调用合约的语境下执行。 这意味着逻辑合约将始终写入代理的存储空间(而非自身存储空间),并且 `msg.sender` 和 `msg.value` 的原始值保持不变。 +账户与代理合约交互,代理合约使用 [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries) 低层级调用将所有函数调用分派到逻辑合约。 与常规消息调用不同,`delegatecall()` 确保在逻辑合约地址运行的代码在调用合约的上下文中执行。 这意味着逻辑合约将始终写入代理的存储(而不是它自己的存储),并且 `msg.sender` 和 `msg.value` 的原始值会被保留。 将调用委托给逻辑合约需要将其地址存储在代理合约的存储空间。 因此,升级合约的逻辑就相当于部署另一个逻辑合约并在代理合约中存储新的地址。 由于对代理合约的后续调用会自动传送到新的逻辑合约,因此你“升级”了合约,但实际上并未修改代码。 -[更多关于升级合约的信息](/developers/docs/smart-contracts/upgrading/)。 +[关于升级合约的更多信息](/developers/docs/smart-contracts/upgrading/)。 #### 紧急停止 {#emergency-stops} @@ -143,16 +143,16 @@ contract VendingMachine { 这种情况下,核心方案是实施一种“紧急停止”功能,阻止对合约中有漏洞的函数的调用。 紧急停止通常由以下几部分组成: -1. 表明智能合约是否处在停止状态的全局布尔变量。 在设置合约时该变量设为 `false`,但在合约停止后将回滚为 `true`。 +1. 表明智能合约是否处在停止状态的全局布尔变量。 设置合约时,此变量被设置为 `false`,但一旦合约停止,它将恢复为 `true`。 2. 执行过程中引用该布尔变量的函数。 此类函数在智能合约没有停止时可以访问,而当紧急停止功能触发后则无法访问。 -3. 可以访问紧急停止功能的实体,可将布尔变量设置为 `true`。 为防止恶意行为,对此功能的调用可以限制给一个可信地址(如合约所有者)。 +3. 有权访问紧急停止功能的实体,可将布尔变量设置为 `true`。 为防止恶意行为,对此功能的调用可以限制给一个可信地址(如合约所有者)。 -一旦合约操作触发紧急停止,某些函数将无法调用。 这是通过把一些函数包装在引用该全局变量的修改器中实现的。 以下[示例](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol)描述了该模式在合约中的实现: +一旦合约操作触发紧急停止,某些函数将无法调用。 这是通过把一些函数包装在引用该全局变量的修改器中实现的。 下文是描述在合约中实现此模式的[一个示例](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol): ```solidity -// 本代码未经专业审计,对安全性和正确性不做任何承诺。 如需使用,风险自负。 +// 此代码未经专业审计,不保证其安全性或正确性。使用风险自负。 contract EmergencyStop { @@ -169,7 +169,7 @@ contract EmergencyStop { } modifier onlyAuthorized { - // Check for authorization of msg.sender here + // 在此处检查 msg.sender 的授权 _; } @@ -182,28 +182,28 @@ contract EmergencyStop { } function deposit() public payable stoppedInEmergency { - // Deposit logic happening here + // 此处是存款逻辑 } function emergencyWithdraw() public onlyWhenStopped { - // Emergency withdraw happening here + // 此处是紧急取款逻辑 } } ``` 以上示例展示了紧急停止的基本特点: -- 布尔值 `isStopped` 开始时求值为 `false`,但当合约进入紧急模式时求值为 `true`。 +- `isStopped` 是一个布尔值,开始时为 `false`,当合约进入紧急模式时为 `true`。 -- 函数修改器 `onlyWhenStopped` 和 `stoppedInEmergency` 检查 `isStopped` 变量。 `stoppedInEmergency` 用于控制在合约有漏洞时应该无法访问的函数(如 `deposit()`)。 对这些函数的调用将仅仅进行回滚而已。 +- 函数修饰符 `onlyWhenStopped` 和 `stoppedInEmergency` 会检查 `isStopped` 变量。 `stoppedInEmergency` 用于控制在合约易受攻击时应无法访问的函数(例如,`deposit()`)。 对这些函数的调用将仅仅进行回滚而已。 -`onlyWhenStopped` 用于在紧急情况下应该可调用的函数(如 `emergencyWithdraw()`)。 此类函数可以帮助解决问题,因此它们不在“受限制函数”之列。 +`onlyWhenStopped` 用于在紧急情况下应可调用的函数(例如 `emergencyWithdraw()`)。 此类函数可以帮助解决问题,因此它们不在“受限制函数”之列。 紧急停止功能的应用,为处理智能合约中的严重漏洞提供了一种有效的权宜之计。 然而,这也意味着用户更需要相信开发者不会为自身利益激活这一功能。 为此,将紧急停止的控制权去中心化,使其受到链上投票机制、时间锁的约束或者需要来自多重签名钱包的批准,都是潜在的解决方案。 -#### 事件监测 {#event-monitoring} +#### 事件监控 {#event-monitoring} -[事件](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events)允许用户跟踪对智能合约函数的调用并监测状态变量的变化。 最理想的做法是将智能合约编写为能够在某一方采取对安全至关重要的操作(如提取资金)时发出一个事件。 +[事件](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events)允许您跟踪对智能合约函数的调用并监控状态变量的变更。 最理想的做法是将智能合约编写为能够在某一方采取对安全至关重要的操作(如提取资金)时发出一个事件。 记录事件并进行链下监测,可以深入了解合同的运作情况,有助于更快地发现恶意行为。 这意味着你的团队可以更快地应对黑客攻击并采取行动减轻对用户的影响,如暂停函数或进行升级。 @@ -213,32 +213,32 @@ contract EmergencyStop { 你可能想要通过将核心智能合约的控制权转交给社区成员来去中心化你的应用。 在这种情况下,智能合约系统将包括一个治理模块 — 一种允许社区成员通过链上治理系统批准管理行为的机制。 例如,将代理合约升级为新实现的提案可能由代币持有人投票。 -去中心化治理可能是有益的,特别是因为它符合开发者和最终用户的利益。 然而如果实现不当,智能合约治理机制可能会带来新的风险。 一种可能的场景是,攻击者通过取得[闪电贷](/defi/#flash-loans)获得了很大的投票权(以持有的代币数量衡量)并通过一条恶意提案。 +去中心化治理可能是有益的,特别是因为它符合开发者和最终用户的利益。 然而如果实现不当,智能合约治理机制可能会带来新的风险。 一个可能的情景是,攻击者通过[闪电贷](/defi/#flash-loans)获取巨大的投票权(以持有的代币数量衡量),并推动通过一项恶意提案。 -防止与链上治理有关的问题的一种方法是[使用时间锁](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/)。 时间锁阻止智能合约执行某些操作,直到经过特定的时间长度。 其他策略包括根据每个代币锁定的时间长短为其分配“投票权重”,或者检测一个地址在历史时期(例如,过去的 2-3 个区块)而不是当前区块的投票权。 这两种方法都减少了快速累积投票权以影响链上投票的可能性。 +防止与链上治理相关问题的一种方法是[使用时间锁](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/)。 时间锁阻止智能合约执行某些操作,直到经过特定的时间长度。 其他策略包括根据每个代币锁定的时间长短为其分配“投票权重”,或者检测一个地址在历史时期(例如,过去的 2-3 个区块)而不是当前区块的投票权。 这两种方法都减少了快速累积投票权以影响链上投票的可能性。 -在分享的链接中查看更多关于[设计安全的治理系统](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/)、[去中心化自治组织中不同的投票机制](https://hackernoon.com/governance-is-the-holy-grail-for-daos)和[利用去中心化金融的常见去中心化自治组织攻击向量](https://dacian.me/dao-governance-defi-attacks)的信息 +关于[设计安全的治理系统](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/)、[DAO 中的不同投票机制](https://hackernoon.com/governance-is-the-holy-grail-for-daos)以及[利用 DeFi 的常见 DAO 攻击媒介](https://dacian.me/dao-governance-defi-attacks)的更多信息,请参阅分享的链接。 -### 8. 将代码的复杂性降到最低 {#reduce-code-complexity} +### 8. 将代码复杂性降至最低 {#reduce-code-complexity} 传统的软件开发者熟悉 KISS(“保持简单、保持愚蠢”)原则,该原则建议不要将不必要的复杂性带入到软件设计中。 这与长期以来的见解“复杂的系统有着复杂的失败方式”不谋而合,而且复杂系统更容易出现代价高昂的错误。 -编写智能合约时简洁化尤其重要,因为智能合约有可能控制大量的价值。 实现简洁化的一个窍门是,编写智能合约时在允许的情况下重用已存在的库,例如 [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)。 因为开发者对这些库已经进行了广泛的审计和测试,使用它们会减少从零开始编写新功能时引入漏洞的几率。 +编写智能合约时简洁化尤其重要,因为智能合约有可能控制大量的价值。 编写智能合约时,实现简洁的一个技巧是尽可能重用现有库,例如 [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)。 因为开发者对这些库已经进行了广泛的审计和测试,使用它们会减少从零开始编写新功能时引入漏洞的几率。 另一个常见的建议是通过将业务逻辑拆分到多个合约中,编写小型函数并保持合约模块化。 编写更简单的代码不仅仅会减少智能合约中的攻击面,还让推理整个系统的正确性并及早发现可能的设计错误变得更加容易。 ### 9. 防范常见的智能合约漏洞 {#mitigate-common-smart-contract-vulnerabilities} -#### 重入攻击 {#reentrancy} +#### 重入 {#reentrancy} -以太坊虚拟机不允许并发,这意味着消息调用中涉及的两个合约不能同时运行。 外部调用暂停调用合约的执行和内存,直到调用返回,此时执行正常进行。 该过程可以正式描述为将[控制流](https://www.computerhope.com/jargon/c/contflow.htm)转向另一个合约。 +以太坊虚拟机不允许并发,这意味着消息调用中涉及的两个合约不能同时运行。 外部调用暂停调用合约的执行和内存,直到调用返回,此时执行正常进行。 此过程可以正式描述为将[控制流](https://www.computerhope.com/jargon/c/contflow.htm)转移到另一个合约。 尽管这种转向大多数情况下没有危害,但将控制流转向不受信任的合约可能引起问题,例如重入攻击。 当恶意合约在初始函数调用完成之前回调有漏洞的合约时,就会发生重入攻击。 这类攻击最好用一个例子来解释。 考虑一个简单的智能合约(“Victim”),它允许任何人存入和提取以太币: ```solidity -// This contract is vulnerable. Do not use in production +// 此合约存在漏洞。请勿在生产环境中使用 contract Victim { mapping (address => uint256) public balances; @@ -256,15 +256,15 @@ contract Victim { } ``` -该合约公开了 `withdraw()` 函数,允许用户提取先前存入合约的以太币。 当处理提款时,合约执行以下操作: +此合约公开了一个 `withdraw()` 函数,允许用户提取先前存入合约的 ETH。 当处理提款时,合约执行以下操作: 1. 检查用户的以太币余额 2. 将资金发送给调用地址 3. 将其余额重置为 0,防止用户再提取 -`Victim` 合约中的 `withdraw()` 函数遵循“检查-交互-效果”模式。 它_检查_执行所需的条件是否满足(例如,用户的以太币余额是否为正值)并通过向调用者的地址发送以太币来执行_交互_,然后再应用交易的_效果_(例如减少用户的余额)。 +`Victim` 合约中的 `withdraw()` 函数遵循“检查-交互-影响”模式。 它会_检查_执行所需条件是否满足(即用户有正的 ETH 余额),并在应用交易_影响_(即减少用户余额)之前,通过向调用者地址发送 ETH 来执行_交互_。 -如果从外部帐户调用 `withdraw()`,该函数将按预期执行:`msg.sender.call.value()` 向调用方发送以太币。 然而,如果 `msg.sender` 是智能合约帐户调用 `withdraw()`,使用 `msg.sender.call.value()` 发送资金还将使存储在该地址的代码运行。 +如果从外部持有账户 (EOA) 调用 `withdraw()`,该函数会按预期执行:`msg.sender.call.value()` 会将 ETH 发送给调用者。 但是,如果 `msg.sender` 是一个调用 `withdraw()` 的智能合约账户,使用 `msg.sender.call.value()` 发送资金也会触发存储在该地址的代码运行。 假设以下是部署在合约地址的代码: @@ -289,7 +289,7 @@ contract Victim { 2. 将 1 个以太币存入 Victim 合约 3. 提取存储在该智能合约中的 1 个以太币 -这里没有什么问题,只是 `Attacker` 有另一个函数,如果传入的 `msg.sender.call.value` 调用剩余的燃料超过 40000,它就再次调用 `Victim` 中的 `withdraw()` 函数。 这使得 `Attacker` 能够重入 `Victim` 合约并在第一次调用 `withdraw` 函数结束_之前_提取更多资金。 这个循环如下所示: +这本身没有问题,但如果传入的 `msg.sender.call.value` 剩余的燃料超过 40,000,`Attacker` 合约中的另一个函数会再次调用 `Victim` 合约中的 `withdraw()` 函数。 这使得 `Attacker` 能够在 `withdraw` 的第一次调用完成_之前_重入 `Victim` 并提取更多资金。 这个循环如下所示: ```solidity - Attacker 的外部帐户使用 1 个以太币调用 `Attacker.beginAttack()` @@ -304,13 +304,13 @@ contract Victim { - 最后 `Victim` 将第一笔交易(和后续交易)的结果应用于其状态,所以 `Attacker` 的余额被设置为 0 ``` -总结起来就是,由于调用者的余额在函数执行完成之前没有设置为 0,所以后续的调用会成功,让调用者可以多次提取他们的余额。 这种攻击可以用来提空智能合约中的资金,就像 [2016 DAO 黑客攻击](https://www.coindesk.com/learn/understanding-the-dao-attack)中发生情况的那样。 正如[公开的重入攻击列表](https://github.com/pcaversaccio/reentrancy-attacks)所示,当前重入攻击仍是智能合约所面临的一个严重问题。 +总结起来就是,由于调用者的余额在函数执行完成之前没有设置为 0,所以后续的调用会成功,让调用者可以多次提取他们的余额。 这种攻击可用于耗尽智能合约的资金,就像在 [2016 年 DAO 黑客事件](https://www.coindesk.com/learn/understanding-the-dao-attack)中发生的那样。 正如[公开的重入攻击列表](https://github.com/pcaversaccio/reentrancy-attacks)所示,重入攻击至今仍然是智能合约的一个关键问题。 ##### 如何防止重入攻击 -应对重入攻击一种方法是遵循[检查-效果-交互模式](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern)。 这种模式要求按照以下方式执行函数:最先执行在继续执行函数前执行必要检查的代码,再执行操作合约状态的代码,最后执行与其他合约或外部帐户交互的代码。 +处理重入的一种方法是遵循[检查-影响-交互模式](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern)。 这种模式要求按照以下方式执行函数:最先执行在继续执行函数前执行必要检查的代码,再执行操作合约状态的代码,最后执行与其他合约或外部帐户交互的代码。 -检查-效果-交互模式在 `Victim` 合约的修订版中采用,如下所示: +下所示的 `Victim` 合约修订版中使用了检查-影响-交互模式: ```solidity contract NoLongerAVictim { @@ -323,9 +323,9 @@ contract NoLongerAVictim { } ``` -该合约对用户的余额执行_检查_,应用 `withdraw()` 函数的_效果_(将用户的余额重置为 0)并继续执行_交互_(将以太币发送到用户的地址)。 这确保了合约在外部调用之前更新其存储空间,消除了导致第一次攻击的重入攻击的条件。 `Attacker` 合约可能仍然可以回调 `NoLongerAVictim`,但由于 `balances[msg.sender]` 已设置为 0,额外的提取将引发错误。 +该合约对用户的余额执行_检查_,应用 `withdraw()` 函数的_影响_(将用户余额重置为 0),然后继续执行_交互_(将 ETH 发送至用户地址)。 这确保了合约在外部调用之前更新其存储空间,消除了导致第一次攻击的重入攻击的条件。 `Attacker` 合约仍然可以回调 `NoLongerAVictim`,但由于 `balances[msg.sender]` 已被设为 0,额外的提款将引发错误。 -另一种方案是使用互斥锁(通常称为“mutex”),它锁定一部分合约状态直到函数调用完成。 互斥锁是通过布尔变量实现的,该变量在函数执行之前设置为 `true`,在调用完成后回滚为 `false`。 如下面的例子所示,使用互斥锁可以防止函数在初始调用仍在进行时不受到递归调用,从而有效地阻止重入攻击。 +另一种方案是使用互斥锁(通常称为“mutex”),它锁定一部分合约状态直到函数调用完成。 这是通过一个布尔变量实现的,该变量在函数执行前设置为 `true`,在调用完成后恢复为 `false`。 如下面的例子所示,使用互斥锁可以防止函数在初始调用仍在进行时不受到递归调用,从而有效地阻止重入攻击。 ```solidity pragma solidity ^0.7.0; @@ -335,15 +335,15 @@ contract MutexPattern { mapping(address => uint256) public balances; modifier noReentrancy() { - require(!locked, "Blocked from reentrancy."); + require(!locked, "重入被阻止。"); locked = true; _; locked = false; } - // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again. - // The `return` statement evaluates to `true` but still evaluates the `locked = false` statement in the modifier + // 此函数受互斥锁保护,因此来自 `msg.sender.call` 内部的重入调用无法再次调用 `withdraw`。 + // `return` 语句的计算结果为 `true`,但仍会计算修饰符中的 `locked = false` 语句 function withdraw(uint _amount) public payable noReentrancy returns(bool) { - require(balances[msg.sender] >= _amount, "No balance to withdraw."); + require(balances[msg.sender] >= _amount, "没有可供提取的余额。"); balances[msg.sender] -= _amount; (bool success, ) = msg.sender.call{value: _amount}(""); @@ -354,32 +354,32 @@ contract MutexPattern { } ``` -还可以使用[拉取支付](https://docs.openzeppelin.com/contracts/5.x/api/security#PullPayment) 系统,该系统要求用户从智能合约中提取资金,而不是使用将资金发送到帐户的“推送支付”系统。 这样就消除了意外触发未知地址中代码的可能性(还可以防止某些拒绝服务攻击)。 +你也可以使用[拉取支付](https://docs.openzeppelin.com/contracts/5.x/api/security#PullPayment)系统,该系统要求用户从智能合约中提取资金,而不是将资金发送到账户的“推送支付”系统。 这样就消除了意外触发未知地址中代码的可能性(还可以防止某些拒绝服务攻击)。 -#### 整数下溢和溢出 {#integer-underflows-and-overflows} +#### 整数下溢和上溢 {#integer-underflows-and-overflows} -当算术运算的结果超出可接受的值范围,导致其“滚动”到可表示的最小值,整数溢出发生。 例如,`uint8` 只能存储最大为 2^-1=255 的值。 算术运算的结果如果大于 `255`,即溢出并重置 `Uint` 为`0`,这类似于汽车里程表,一旦达到最大里程 (999999) 示数就重置为 0。 +当算术运算的结果超出可接受的值范围,导致其“滚动”到可表示的最小值,整数溢出发生。 例如,一个 `uint8` 类型只能存储最大为 2^8-1=255 的值。 导致值高于 `255` 的算术运算将上溢,并将 `uint` 重置为 `0`,这与汽车里程表达到最大里程 (999999) 时重置为 0 的方式类似。 -整数下溢发生的原因类似:算术运算的结果小于可接受的范围。 比方说,你尝试减少 `uint8` 中的一个`0`,结果将只会滚动到最大的可表示值 (`255`)。 +整数下溢的发生原因类似:算术运算的结果低于可接受的范围。 假设您尝试在 `uint8` 中对 `0` 进行递减,结果将直接回绕到最大可表示值 (`255`)。 整数溢出和下溢都会导致合约的状态变量出现意外变化,引发意外的执行。 以下例子说明了攻击者如何利用智能合约的算数溢出执行无效操作: ``` pragma solidity ^0.7.6; -// This contract is designed to act as a time vault. -//用户可以向合约里存款但至少在一周内无法提款。 -//用户还可以延长 1 周的等待期。 +// 此合约旨在充当时间金库。 +// 用户可以向此合约存入资金,但至少一周内不能提取。 +// 用户还可以将等待时间延长至超过 1 周的等待期。 /* 1. 部署 TimeLock -2. 使用 TimeLock 地址部署 Attack -3. 调用 Attack.attack,发送 1 个以太币。 你将能够立即 - 提取你的以太币。 +2. 用 TimeLock 的地址部署 Attack +3. 调用 Attack.attack 并发送 1 个以太币。您将能够立即 + 提取您的以太币。 发生了什么? -攻击造成了 TimeLock 溢出,并且能够在 1 周的等待期之 -前提款。 +Attack 导致 TimeLock.lockTime 上溢,从而能够在 1 周的等待期之前 +提取资金。 */ contract TimeLock { @@ -396,14 +396,14 @@ contract TimeLock { } function withdraw() public { - require(balances[msg.sender] > 0, "Insufficient funds"); - require(block.timestamp > lockTime[msg.sender], "Lock time not expired"); + require(balances[msg.sender] > 0, "资金不足"); + require(block.timestamp > lockTime[msg.sender], "锁仓时间未到"); uint amount = balances[msg.sender]; balances[msg.sender] = 0; (bool sent, ) = msg.sender.call{value: amount}(""); - require(sent, "Failed to send Ether"); + require(sent, "以太币发送失败"); } } @@ -419,11 +419,11 @@ contract Attack { function attack() public payable { timeLock.deposit{value: msg.value}(); /* - if t = current lock time then we need to find x such that + 如果 t = 当前锁仓时间,那么我们需要找到 x,使得 x + t = 2**256 = 0 - so x = -t + 所以 x = -t 2**256 = type(uint).max + 1 - so x = type(uint).max + 1 - t + 所以 x = type(uint).max + 1 - t */ timeLock.increaseLockTime( type(uint).max + 1 - timeLock.lockTime(address(this)) @@ -435,15 +435,15 @@ contract Attack { ##### 如何防止整数溢出和下溢 -从 0.8.0 版开始,Solidity 编译器禁用导致整数下溢和溢出的代码。 然而,用较低编译器版本编译的合约应当对涉及算术运算的函数执行检查,或者使用检查是否发生下溢/溢出的库(例如 [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math))。 +从 0.8.0 版开始,Solidity 编译器禁用导致整数下溢和溢出的代码。 但是,使用较低编译器版本编译的合约,应在涉及算术运算的函数上执行检查,或使用检查下溢/上溢的库(例如,[SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math))。 #### 预言机操纵 {#oracle-manipulation} -[预言机](/developers/docs/oracles/)获取链下信息并将这些信息发送到链上供智能合约使用。 通过预言机,你可以设计出和链下系统(例如资本市场)交互的智能合约,极大地拓展它们的应用。 +[预言机](/developers/docs/oracles/)从链下获取信息并将其发送到链上供智能合约使用。 通过预言机,你可以设计出和链下系统(例如资本市场)交互的智能合约,极大地拓展它们的应用。 但如果预言机损坏并向链上发送错误信息,智能合约将基于错误的输入执行,这会造成问题。 这就是“预言机问题”的根源,它涉及确保区块链预言机提供准确、最新、即时的信息。 -相关的安全问题就是利用链上预言机(例如去中心化交易所)获取一种资产的现货价格。 [去中心化金融 (DeFi)](/defi/) 行业中的借贷平台经常利用这种方法确定用户抵押品的价值,进而确定他们能借入多少。 +相关的安全问题就是利用链上预言机(例如去中心化交易所)获取一种资产的现货价格。 [去中心化金融 (DeFi)](/defi/) 行业的借贷平台通常会这样做,以确定用户抵押品的价值,从而决定他们可以借入多少资金。 去中心化交易所 (DEX) 的价格往往是准确的,很大程度上源于套利者的套利行为帮助市场恢复平价。 然而,这样容易受到操纵,尤其当链上预言机根据历史交易模式计算资产价格时(通常是这种情况)。 @@ -451,49 +451,49 @@ contract Attack { ##### 如何防止预言机操纵 -[避免预言机操纵](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples)的最低要求是使用从多个来源查询信息的去中心化预言机网络,以避免单点故障。 在大多数情况下,去中心化预言机有內置的加密经济学激励机制,鼓励预言机节点报告正确的信息,使它们比中心化预言机更安全。 +[避免预言机操纵](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples)的最低要求是使用去中心化的预言机网络,该网络从多个来源查询信息,以避免单点故障。 在大多数情况下,去中心化预言机有內置的加密经济学激励机制,鼓励预言机节点报告正确的信息,使它们比中心化预言机更安全。 -如果你打算通过查询链上预言机获得资产价格,考虑使用实施了时间加权平均价格 (TWAP) 机制的预言机。 [时间加权平均价格预言机](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles)查询资产在两个不同时间点(可以修改)的价格,并计算出基于所得平均值的现货价格。 选择较长的时间段可以保护协议免受价格操纵,因为最近执行的大宗订单无法影响资产价格。 +如果你打算通过查询链上预言机获得资产价格,考虑使用实施了时间加权平均价格 (TWAP) 机制的预言机。 [时间加权平均价格 (TWAP) 预言机](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles)在两个不同的时间点(您可以修改)查询资产的价格,并根据获得的平均值计算现货价格。 选择较长的时间段可以保护协议免受价格操纵,因为最近执行的大宗订单无法影响资产价格。 -## 面向开发者的智能合约安全性资源 {#smart-contract-security-resources-for-developers} +## 面向开发者的智能合约安全资源 {#smart-contract-security-resources-for-developers} ### 用于分析智能合约和验证代码正确性的工具 {#code-analysis-tools} -- **[测试工具和程序库](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _为智能合约进行单元测试、静态分析和动态分析的行业标准工具和程序库集合。_ +- **[测试工具和库](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _用于对智能合约执行单元测试、静态分析和动态分析的行业标准工具和库的集合。_ -- **[形式化验证工具](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _用于验证智能合约中的函数正确性和检查不变量的工具。_ +- **[形式化验证工具](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _用于验证智能合约功能正确性和检查不变量的工具。_ -- **[智能合约审计服务](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _为以太坊开发项目提供智能合约审计服务的组织的列表。_ +- **[智能合约审计服务](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _为以太坊开发项目提供智能合约审计服务的组织列表。_ -- **[漏洞奖励平台](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _协调漏洞奖励并对发现智能合约中重大漏洞的负责人进行奖励的平台。_ +- **[漏洞赏金平台](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _用于协调漏洞赏金和奖励负责任地披露智能合约中关键漏洞的平台。_ -- **[Fork Checker](https://forkchecker.hashex.org/)** - _免费的在线工具,用于检查所有关于分叉合同的现有信息。_ +- **[Fork Checker](https://forkchecker.hashex.org/)** - _一个免费的在线工具,用于检查有关分叉合约的所有可用信息。_ -- **[ABI 编码器](https://abi.hashex.org/)** - _免费在线服务,用于编码你的 Solidity 合约函数和构造函数参数。_ +- **[ABI 编码器](https://abi.hashex.org/)** - _一项免费的在线服务,用于对您的 Solidity 合约函数和构造函数参数进行编码。_ -- **[Aderyn](https://github.com/Cyfrin/aderyn)** - _Solidity 静态分析器,遍历抽象语法树 (AST) 来找出可疑漏洞,并以易于使用的 Mardown 格式打印输出问题。_ +- **[Aderyn](https://github.com/Cyfrin/aderyn)** - _Solidity 静态分析器,遍历抽象语法树 (AST) 以查明可疑漏洞,并以易于使用的 Markdown 格式打印问题。_ -### 智能合约监测工具 {#smart-contract-monitoring-tools}_ +### 智能合约监控工具 {#smart-contract-monitoring-tools} -- **[Tenderly Real-Time Alerting](https://tenderly.co/alerting/)** - _一种在智能合约或钱包发生异常或意外事件时,为你获取实时通知的工具。_ +- **[Tenderly 实时警报](https://tenderly.co/monitoring)** - _一个用于在您的智能合约或钱包上发生异常或意外事件时获取实时通知的工具。_ -### 智能合约的安全管理工具 {#smart-contract-administration-tools} +### 安全管理智能合约的工具 {#smart-contract-administration-tools} -- **[Safe](https://safe.global/)** - _在以太坊上运行的智能合约钱包,需要最少人数批准交易后交易才能进行 (M-of-N)。_ +- **[Safe](https://safe.global/)** - _在以太坊上运行的智能合约钱包,需要至少 N 人中的 M 人批准才能执行交易 (M-of-N)。_ -- **[OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)** - _用于实现管理功能的合约库,包括管理合约所有权、升级、访问限制、治理、可暂停等功能。_ +- **[OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)** - _用于实现管理功能的合约库,包括合约所有权、升级、访问控制、治理、暂停功能等。_ ### 智能合约审计服务 {#smart-contract-auditing-services} -- **[ConsenSys Diligence](https://consensys.net/diligence/)** - _为整个区块链生态系统中的项目提供帮助的智能合约审计服务,确保其协议可直接发布并为保护用户而构建。_ +- **[ConsenSys Diligence](https://diligence.consensys.io/)** - _智能合约审计服务,帮助整个区块链生态系统中的项目确保其协议已准备好启动并为保护用户而构建。_ -- **[CertiK](https://www.certik.com/)** - _区块链安全公司,率先在智能合约和区块链网络上采用尖端的形式化验证技术。_ +- **[CertiK](https://www.certik.com/)** - _区块链安全公司,率先在智能合约和区块链网络上使用尖端的形式化验证技术。_ -- **[Trail of Bits](https://www.trailofbits.com/)** - _网络安全公司,将安全研究与攻击者心态结合起来以降低风险并强化代码。_ +- **[Trail of Bits](https://www.trailofbits.com/)** - _网络安全公司,将安全研究与攻击者思维相结合,以降低风险并加固代码。_ -- **[PeckShield](https://peckshield.com/)** - _区块链安全公司,为整个区块链生态系统的安全、隐私和可用性提供产品和服务。_ +- **[PeckShield](https://peckshield.com/)** - _区块链安全公司,为整个区块链生态系统的安全性、隐私性和可用性提供产品和服务。_ -- **[QuantStamp ](https://quantstamp.com/)** - _审计服务,通过安全和风险评估服务促进主流区块链技术的采用。_ +- **[QuantStamp](https://quantstamp.com/)** - _通过安全和风险评估服务促进区块链技术成为主流的审计服务。_ - **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _智能合约安全公司,为分布式系统提供安全审计。_ @@ -501,67 +501,67 @@ contract Attack { - **[Hacken](https://hacken.io)** - _Web3 网络安全审计公司,为区块链安全提供全方位解决方案。_ -- **[Nethermind](https://www.nethermind.io/smart-contract-audits)** - _Solidity 和 Cairo 审计服务,确保智能合约的完整性和跨以太坊和 Starknet 的用户安全_ +- **[Nethermind](https://www.nethermind.io/smart-contract-audits)** - _Solidity 和 Cairo 审计服务,确保智能合约的完整性以及以太坊和 Starknet 上用户的安全。_ -- **[HashEx](https://hashex.org/)** - _HashEx 专注于区块链和智能合约审计,确保加密货币安全,提供智能合约开发、渗透测试、区块链咨询等服务。_ +- **[HashEx](https://hashex.org/)** - _HashEx 专注于区块链和智能合约审计,以确保加密货币的安全,提供智能合约开发、渗透测试、区块链咨询等服务。_ - **[Code4rena](https://code4rena.com/)** - _竞争性审计平台,激励智能合约安全专家查找漏洞,帮助提高 web3 的安全性。_ - **[CodeHawks](https://codehawks.com/)** - _竞争性审计平台,为安全研究者举行智能合约审计比赛。_ -- **[Cyfrin](https://cyfrin.io)** - _Web3 安全发电站,通过产品和智能合约审计服务提高加密货币安全性。_ +- **[Cyfrin](https://cyfrin.io)** - _Web3 安全巨头,通过产品和智能合约审计服务孵化加密货币安全。_ - **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)** - _Web3 安全公司,通过经验丰富的审计员团队和一流的工具,为区块链系统提供安全审计。_ -- **[Oxorio](https://oxor.io/)** - _智能合约审计和区块链安全服务,为加密货币公司和去中心化金融项目提供以太坊虚拟机、Solidity、零知识、跨链技术方面的专业知识。_ +- **[Oxorio](https://oxor.io/)** - _智能合约审计和区块链安全服务,为加密货币公司和 DeFi 项目提供以太坊虚拟机、Solidity、零知识证明、跨链技术方面的专业知识。_ -- **[Inference](https://inference.ag/)** - _安全审计公司,专注于为基于以太坊虚拟机的区块链进行智能合约审计。 多亏他们的审计专家,他们发现了潜在问题并提出了可行的解决方案,在部署之前进行修复_ +- **[Inference](https://inference.ag/)** - _安全审计公司,专注于为基于以太坊虚拟机的区块链进行智能合约审计。 多亏他们的审计专家,他们发现了潜在问题并提出了可行的解决方案,在部署之前进行修复。_ -### 漏洞奖励平台 {#bug-bounty-platforms} +### 漏洞赏金平台 {#bug-bounty-platforms} -- **[Immunefi](https://immunefi.com/)** - _智能合约和去中心化金融项目的漏洞奖励平台,安全研究人员在该平台上审查代码、披露漏洞、获得报酬并使加密应用更加安全。_ +- **[Immunefi](https://immunefi.com/)** - _智能合约和 DeFi 项目的漏洞赏金平台,安全研究人员在该平台上审查代码、披露漏洞、获得报酬并使加密货币更加安全。_ -- **[HackerOne](https://www.hackerone.com/)** - _漏洞协调和漏洞奖励平台,将企业与渗透测试人员和网络安全研究人员连接在一起。_ +- **[HackerOne](https://www.hackerone.com/)** - _漏洞协调和漏洞赏金平台,将企业与渗透测试人员和网络安全研究人员连接在一起。_ -- **[HackenProof](https://hackenproof.com/)** - _针对加密项目(去中心化金融、智能合约、钱包、中心化交易所等)的专业级漏洞奖励平台,借助这一平台,安全专家可提供漏洞诊断服务,研究人员会因为提供经过验证的相关漏洞报告获得报酬。_ +- **[HackenProof](https://hackenproof.com/)** - _针对加密货币项目(DeFi、智能合约、钱包、中心化交易所等)的专业级漏洞赏金平台,借助这一平台,安全专家可提供漏洞诊断服务,研究人员会因为提供经过验证的相关漏洞报告获得报酬。_ -- **[Sherlock](https://www.sherlock.xyz/)** - _Web3 中的智能合约安全性承销商,通过智能合约管理审计人员的报酬,以确保相关漏洞得到公平的支付。_ +- **[Sherlock](https://www.sherlock.xyz/)** - _Web3 中的智能合约安全性承销商,通过智能合约管理审计人员的报酬,以确保相关漏洞得到公平的支付。_ -- **[CodeHawks](https://www.codehawks.com/)** - _竞争性漏洞奖金平台,供审计人员参与安全竞赛和挑战,并且(很快)能够参与他们自己的私人审计。_ +- **[CodeHawks](https://www.codehawks.com/)** - _竞争性漏洞奖金平台,供审计人员参与安全竞赛和挑战,并且(很快)能够参与他们自己的私人审计。_ -### 已知智能合约漏洞及利用情况的刊物 {#common-smart-contract-vulnerabilities-and-exploits} +### 关于已知智能合约漏洞和利用的出版物{#common-smart-contract-vulnerabilities-and-exploits} -- **[ConsenSys:已知的智能合约攻击](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** - _针对最重要的合约漏洞提供适合初学者的解释,多数案例提供了代码示例。_ +- **[ConsenSys:智能合约已知攻击](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** - _针对最重要的合约漏洞提供适合初学者的解释,多数案例提供了代码示例。_ - **[SWC 注册表](https://swcregistry.io/)** - _适用于以太坊智能合约的常见缺陷枚举 (CWE) 的精选项目列表。_ -- **[Rekt](https://rekt.news/)** - _定期更新的著名加密领域黑客攻击和漏洞利用范例刊物,不提供详细的事后分析报告。_ +- **[Rekt](https://rekt.news/)** - _定期更新的著名加密货币领域黑客攻击和漏洞利用刊物,并提供详细的事后分析报告。_ -### 智能合约安全学习难点 {#challenges-for-learning-smart-contract-security} +### 学习智能合约安全的挑战 {#challenges-for-learning-smart-contract-security} -- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _精选区块链安全攻防、实战、[夺旗](https://www.webopedia.com/definitions/ctf-event/amp/)竞赛和解决方案的文章列表。_ +- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _精选的区块链安全“战争游戏”、挑战、[夺旗赛](https://www.webopedia.com/definitions/ctf-event/amp/)以及解题报告列表。_ -- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _通过实战演练学习去中心化金融智能合约的攻击性安全,并培养漏洞搜查和安全审计方面的技能。_ +- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _通过实战演练学习 DeFi 智能合约的攻击性安全,并培养漏洞搜查和安全审计方面的技能。_ -- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _基于 Web3 和 Solidity 的实战演练,其中每个等级都是一个需要“攻破”的智能合约。_ +- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _基于 Web3 和 Solidity 的“战争游戏”,其中每个级别都是一个需要“攻破”的智能合约。_ -- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)** - _以奇幻冒险作为背景的智能合约黑客挑战。 成功完成挑战还有机会参与私人漏洞奖金项目。_ +- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)** - _以奇幻冒险为背景的智能合约黑客挑战。 成功完成挑战还有机会参与私人漏洞奖金项目。_ -### 确保智能合约安全的最佳做法 {#smart-contract-security-best-practices} +### 保护智能合约的最佳实践 {#smart-contract-security-best-practices} - **[ConsenSys:以太坊智能合约安全最佳实践](https://consensys.github.io/smart-contract-best-practices/)** - _保护以太坊智能合约安全的完整指南列表。_ -- **[Nascent:简单的安全工具箱](https://github.com/nascentxyz/simple-security-toolkit)** - _智能合约开发的实用安全指南和检查清单的集合。_ +- **[Nascent:简单安全工具箱](https://github.com/nascentxyz/simple-security-toolkit)** - _智能合约开发的实用安全指南和检查清单的集合。_ - **[Solidity 模式](https://fravoll.github.io/solidity-patterns/)** - _面向智能合约编程语言 Solidity 的安全模式和最佳实践实用合集。_ -- **[Solidity文档:安全性注意事项](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _用Solidity编写安全智能合约的准则。_ +- **[Solidity 文档:安全注意事项](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _使用 Solidity 编写安全智能合约的指南。_ -- **[智能合约安全验证标准](https://github.com/securing/SCSVS)** - _旨在确立智能合约安全性标准的第十四部分检查清单,面向开发者、架构师、安全审核者和供应商。_ +- **[智能合约安全验证标准](https://github.com/securing/SCSVS)** - _为开发者、架构师、安全审核者和供应商创建的、由十四部分组成的检查清单,旨在确立智能合约的安全性标准。_ -- **[学习智能合约安全与审计](https://updraft.cyfrin.io/courses/security)** - _智能合约安全与审计终极课程,专为寻求提升其安全性最佳做法和希望成为安全研究者的智能合约开发者创建。_ +- **[学习智能合约安全与审计](https://updraft.cyfrin.io/courses/security)** - _智能合约安全与审计终极课程,专为寻求提升其安全性最佳做法和希望成为安全研究者的智能合约开发者创建。_ -### 智能合约安全性教程 {#tutorials-on-smart-contract-security} +### 关于智能合约安全的教程 {#tutorials-on-smart-contract-security} - [如何编写安全的智能合约](/developers/tutorials/secure-development-workflow/) @@ -569,8 +569,8 @@ contract Attack { - [如何使用 Manticore 查找智能合约漏洞](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) -- [智能合约安全性准则](/developers/tutorials/smart-contract-security-guidelines/) +- [智能合约安全指南](/developers/tutorials/smart-contract-security-guidelines/) -- [如何安全整合代币合约与任意代币](/developers/tutorials/token-integration-checklist/) +- [如何安全地将您的代币合约与任意代币集成](/developers/tutorials/token-integration-checklist/) - [Cyfrin Updraft - 智能合约安全与审计完整课程](https://updraft.cyfrin.io/courses/security) From 476aa5624d7d97750cc6f58232fa837c92471446 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:15:04 -0800 Subject: [PATCH 156/581] update(i18n): public/content/translations/zh/developers/tutorials/uniswap-v2-annotated-code/index.md --- .../uniswap-v2-annotated-code/index.md | 1077 ++++++----------- 1 file changed, 370 insertions(+), 707 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/zh/developers/tutorials/uniswap-v2-annotated-code/index.md index b1ddffd1ded..b773be2e0a3 100644 --- a/public/content/translations/zh/developers/tutorials/uniswap-v2-annotated-code/index.md +++ b/public/content/translations/zh/developers/tutorials/uniswap-v2-annotated-code/index.md @@ -2,44 +2,43 @@ title: "Uniswap-v2 合约概览" description: Uniswap-v2 合约是如何工作的? 为什么要如此编写? author: Ori Pomerantz -tags: - - "solidity" +tags: [ "Solidity" ] skill: intermediate published: 2021-05-01 lang: zh --- -## 介绍 {#introduction} +## 简介 {#introduction} -[Uniswap v2](https://uniswap.org/whitepaper.pdf) 可以在任何两个 ERC-20 代币之间创建一个兑换市场。 在本文中,我们将深入探讨实现此协议的合约的源代码,了解为何要如此编写协议。 +[Uniswap v2](https://app.uniswap.org/whitepaper.pdf) 可以在任何两个 ERC-20 代币之间创建一个兑换市场。 在本文中,我们将深入探讨实现此协议的合约的源代码,了解为何要如此编写协议。 ### Uniswap 是做什么的? {#what-does-uniswap-do} -一般来说有两类用户:流动资金提供者和交易者。 +一般来说有两类用户:流动性提供者和交易者。 -_流动性提供者_为资金池提供两种可以兑换的代币(称为 **Token0** 和 **Token1**)。 作为回报,他们会收到第三种叫做_流动性代币_的代币,代表他们对资金池的部分所有权。 +“流动性提供者”为资金池提供两种可以兑换的代币(称为 **Token0** 和 **Token1**)。 作为回报,他们会收到第三种叫做“流动性代币”的代币,代表他们对资金池的部分所有权。 -_交易者_将一种代币发送到资金池,并从资金池中接收流动性提供者提供的另一种代币(例如,发送 **Token0** 并获得 **Token1**)。 兑换汇率由资金池中 **Token0** 和 **Token1** 的相对数量决定。 此外,资金池将收取汇率的一小部分作为流动性资金池的奖励。 +“交易者”将一种代币发送到资金池,并从流动性提供者提供的资金池中接收另一种代币(例如,发送 **Token0** 并获得 **Token1**)。 兑换汇率由资金池中 **Token0** 和 **Token1** 的相对数量决定。 此外,资金池将收取一小部分百分比作为流动性资金池的奖励。 -当流动性提供者想要收回他们的代币资产时,他们可以销毁资金池代币并收回他们的代币,其中包括属于他们的奖励。 +当流动性提供者想要收回他们的代币资产时,他们可以销毁资金池代币并收回他们的代币,其中包括他们应得的奖励份额。 -[点击此处查看更完整的描述](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/swaps/)。 +[点击此处查看更完整的说明](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/swaps/)。 -### 为什么选择 v2? 而不是 v3? {#why-v2} +### 为什么选择 v2? 为什么不是 v3? {#why-v2} -[Uniswap v3](https://uniswap.org/whitepaper-v3.pdf) 是 v2 的升级,远比 v2 复杂得多。 比较容易的方法是先学习 v2,然后再学习 v3。 +[Uniswap v3](https://app.uniswap.org/whitepaper-v3.pdf) 是一次升级,比 v2 复杂得多。 先学习 v2,然后再学习 v3 会更容易。 ### 核心合约与外围合约 {#contract-types} -Uniswap v2 可以分为两个部分,一个为核心部分,另一个为外围部分。 核心合约存放着资产,因而_必须_确保安全,这种分法就使核心合约更加简洁且更便于审核。 而所有交易者需要的其它功能可以通过外围合约提供。 +Uniswap v2 分为两个部分:核心和外围。 这种划分使得持有资产并因此_必须_安全的核心合约更简单、更易于审计。 交易者所需的所有额外功能都可以通过外围合约提供。 -## 数据和控制流程 {#flows} +## 数据和控制流 {#flows} -执行 Uniswap 的三个主要操作时,会出现以下数据和控制流程: +当您执行 Uniswap 的三个主要操作时,会发生以下数据和控制流: -1. 兑换不同代币 -2. 将资金添加到市场中提供流动性,并获得兑换中奖励的流动池 ERC-20 代币 -3. 消耗流动池 ERC-20 代币并收回交易所允许交易者兑换的 ERC-20 代币 +1. 在不同代币之间进行兑换 +2. 向市场添加流动性,并获得交易对 ERC-20 流动性代币奖励 +3. 销毁 ERC-20 流动性代币,并取回交易对允许交易者兑换的 ERC-20 代币 ### 兑换 {#swap-flow} @@ -47,102 +46,97 @@ Uniswap v2 可以分为两个部分,一个为核心部分,另一个为外围 #### 调用者 {#caller} -1. 向外围帐户提供兑换额度。 -2. 调用外围合约中的一个兑换函数。外围合约有多种兑换函数,调用哪一个取决于是否涉及以太币、交易者是指定了存入的代币金额还是提取的代币金额等。 每个兑换函数都接受一个 `path`,即要执行的一系列兑换。 +1. 为外围帐户提供要兑换金额的授权额度。 +2. 调用外围合约的其中一个兑换函数(调用哪个函数取决于是否涉及 ETH、交易者是指定要存入的代币数量还是指定要取回的代币数量等)。 + 每个兑换函数都接受一个 `path`,即要经过的交易所数组。 #### 在外围合约 (UniswapV2Router02.sol) 中 {#in-the-periphery-contract-uniswapv2router02-sol} -3. 确定兑换路径中,每次兑换所需交易的代币数额。 -4. 沿路径迭代。 对于路径上的每次兑换,首先发送输入代币,然后调用交易所的 `swap` 函数。 在大多数情况下,代币输出的目的地址是路径中下一个配对交易。 在最后一个交易所中,该地址是交易者提供的地址。 +3. 确定路径上每个交易所需要交易的金额。 +4. 遍历路径。 对于路径上的每个交易所,它会发送输入代币,然后调用交易所的 `swap` 函数。 + 在大多数情况下,代币的目标地址是路径中的下一个交易对。 在最终的交易所中,该地址是交易者提供的地址。 #### 在核心合约 (UniswapV2Pair.sol) 中 {#in-the-core-contract-uniswapv2pairsol-2} -5. 验证核心合约没有被欺骗,可在兑换后保持足够的流动资金。 -6. 检查除了现有的储备金额外,还有多少额外的代币。 此数额是我们收到的要用于兑换的输入代币数量。 -7. 将输出代币发送到目的地址。 -8. 调用 `_update` 来更新储备金额 +5. 验证核心合约没有被欺骗,并且在兑换后可以保持足够的流动性。 +6. 查看除了已知的储备金之外,我们还有多少额外的代币。 该金额是我们收到的用于兑换的输入代币数量。 +7. 将输出代币发送到目标地址。 +8. 调用 `_update` 来更新储备金金额 #### 回到外围合约 (UniswapV2Router02.sol) {#back-in-the-periphery-contract-uniswapv2router02-sol} -9. 执行所需的必要清理工作(例如,消耗包装以太币代币以返回以太币给交易者) +9. 执行任何必要的清理工作(例如,销毁 WETH 代币以取回 ETH 发送给交易者) -### 增加流动资金 {#add-liquidity-flow} +### 添加流动性 {#add-liquidity-flow} #### 调用者 {#caller-2} -1. 向外围帐户提交准备加入流动资金池的资金额度。 +1. 为外围帐户提供要添加到流动性资金池的金额的授权额度。 2. 调用外围合约的其中一个 `addLiquidity` 函数。 #### 在外围合约 (UniswapV2Router02.sol) 中 {#in-the-periphery-contract-uniswapv2router02sol-2} -3. 必要时创建一个新的配对交易 -4. 如果有现有的币对交易所,请计算要增加的代币金额。 该金额对于两种代币应该是相同的,因此新代币对现有代币的比率是相同的。 -5. 检查金额是否可接受(调用者可以指定一个最低金额,低于此金额他们就不增加流动性) +3. 如有必要,创建一个新的交易对 +4. 如果存在现有的交易对,计算要添加的代币数量。 两种代币的价值应该相同,因此新代币与现有代币的比率也相同。 +5. 检查金额是否可接受(调用者可以指定一个最低金额,低于此金额他们宁愿不添加流动性) 6. 调用核心合约。 #### 在核心合约 (UniswapV2Pair.sol) 中 {#in-the-core-contract-uniswapv2pairsol-2} -7. 生成流动池代币并将其发送给调用者 -8. 调用 `_update` 来更新储备金额 +7. 铸造流动性代币并将其发送给调用者 +8. 调用 `_update` 来更新储备金金额 -### 撤回流动资金 {#remove-liquidity-flow} +### 移除流动性 {#remove-liquidity-flow} #### 调用者 {#caller-3} -1. 向外围帐户提供一个流动池代币的额度,作为兑换底层代币所需的消耗。 +1. 为外围帐户提供流动性代币的授权额度,以便销毁这些代币来换取标的代币。 2. 调用外围合约的其中一个 `removeLiquidity` 函数。 #### 在外围合约 (UniswapV2Router02.sol) 中 {#in-the-periphery-contract-uniswapv2router02sol-3} -3. 将流动池代币发送到该配对交易 +3. 将流动性代币发送到交易对 #### 在核心合约 (UniswapV2Pair.sol) 中 {#in-the-core-contract-uniswapv2pairsol-3} -4. 向目的地址发送底层代币,金额与销毁的代币成比例。 例如,如果资金池里有 1000 个 A 代币,500 个 B 代币和 90 个流动性代币,而我们收到请求销毁 9 个流动性代币,那么,我们将销毁 10% 的流动性代币,然后将返还用户 100 个 A 代币和 50 个 B 代币。 +4. 按与销毁代币成比例的标的代币数量发送到目标地址。 例如,如果资金池中有 1000 个 A 代币、500 个 B 代币和 90 个流动性代币,而我们收到 9 个代币进行销毁,我们销毁了 10% 的流动性代币,因此返还给用户 100 个 A 代币和 50 个 B 代币。 5. 销毁流动性代币 -6. 调用`_update`来更新储备金额 +6. 调用 `_update` 来更新储备金金额 ## 核心合约 {#core-contracts} -这些是持有流动资金的安全合约。 +这些是持有流动性的安全合约。 ### UniswapV2Pair.sol {#UniswapV2Pair} -[本合约](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol)实现用于交易代币的实际资金池。 这是 Uniswap 的核心功能。 +[此合约](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol) 实现了用于兑换代币的实际资金池。 这是 Uniswap 的核心功能。 ```solidity -pragma solidity =0.5.16; - -import './interfaces/IUniswapV2Pair.sol'; -import './UniswapV2ERC20.sol'; -import './libraries/Math.sol'; -import './libraries/UQ112x112.sol'; -import './interfaces/IERC20.sol'; -import './interfaces/IUniswapV2Factory.sol'; -import './interfaces/IUniswapV2Callee.sol'; +pragma solidity =0.5.16;\n\nimport './interfaces/IUniswapV2Pair.sol';\nimport './UniswapV2ERC20.sol';\nimport './libraries/Math.sol';\nimport './libraries/UQ112x112.sol';\nimport './interfaces/IERC20.sol';\nimport './interfaces/IUniswapV2Factory.sol';\nimport './interfaces/IUniswapV2Callee.sol'; ``` -这些都是该合约需要知道的接口,因为该合约实现了它们(`IUniswapV2Pair` 和 `UniswapV2ERC20`),或因为该合约调用了实现它们的合约。 +这些是该合约需要了解的所有接口,因为该合约实现了它们(`IUniswapV2Pair` 和 `UniswapV2ERC20`)或者调用了实现它们的合约。 ```solidity contract UniswapV2Pair is IUniswapV2Pair, UniswapV2ERC20 { ``` -此合约继承自 `UniswapV2ERC20`,为流动池代币提供 ERC-20 代币功能。 +此合约继承自 `UniswapV2ERC20`,为流动性代币提供 ERC-20 功能。 ```solidity using SafeMath for uint; ``` -[SafeMath 库](https://docs.openzeppelin.com/contracts/2.x/api/math)用于避免整数上溢和下溢。 这很重要,否则最终可能会出现这样的情况:本该是 `-1` 的值,结果却成了 `2^256-1`。 +[SafeMath 库](https://docs.openzeppelin.com/contracts/2.x/api/math) 用于避免溢出和下溢。 这很重要,否则我们最终可能会遇到这样的情况:一个值本应是 `-1`,但却变成了 `2^256-1`。 ```solidity using UQ112x112 for uint224; ``` -流动池合约中的许多计算都需要分数。 但是,以太坊虚拟机本身不支持分数。 Uniswap 找到的解决方案是使用 224 位数值,整数部分为 112 位,小数部分为 112 位。 因此,`1.0` 用 `2^112` 表示,`1.5` 用 `2^112 + 2^111` 表示,以此类推。 +资金池合约中的许多计算都需要分数。 然而,EVM 不支持分数。 +Uniswap 找到的解决方案是使用 224 位的值,其中 112 位用于整数部分,112 位用于小数部分。 所以 `1.0` 表示为 `2^112`,`1.5` 表示为 `2^112 + 2^111`,等等。 -关于这个函数库的更详细内容在[文档的稍后部分](#FixedPoint)。 +关于此库的更多详细信息,请参阅[本文档的后面部分](#FixedPoint)。 #### 变量 {#pair-vars} @@ -150,67 +144,64 @@ contract UniswapV2Pair is IUniswapV2Pair, UniswapV2ERC20 { uint public constant MINIMUM_LIQUIDITY = 10**3; ``` -为了避免分母为零的情况,始终存在最低数量的流动性代币(但为帐户零所拥有)。 该数字,即 **MINIMUM_LIQUIDITY**,为 1000。 +为避免除以零的情况,始终存在一个最小数量的流动性代币(但归属于零地址帐户)。 该数字是 **MINIMUM_LIQUIDITY**,即 1000。 ```solidity bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)'))); ``` -这是 ERC-20 传输函数的应用程序二进制接口选择程序。 它用于在两个代币帐户中转移 ERC-20 代币。 +这是 ERC-20 转账函数的 ABI 选择器。 它用于在两个代币帐户中转移 ERC-20 代币。 ```solidity address public factory; ``` -这就是由工厂合约创造的资金池地址。 每个资金池都是两种 ERC-20 代币之间的交易所,工厂是连接所有这些资金池的中心点。 +这是创建此资金池的工厂合约。 每个资金池都是两个 ERC-20 代币之间的交易所,工厂是连接所有这些资金池的中心点。 ```solidity - address public token0; - address public token1; + address public token0;\n address public token1; ``` -这两个地址是该资金池可以交易的两种 ERC-20 代币的合约地址。 +这些是该资金池可以兑换的两种 ERC-20 代币的合约地址。 ```solidity - uint112 private reserve0; // uses single storage slot, accessible via getReserves - uint112 private reserve1; // uses single storage slot, accessible via getReserves + uint112 private reserve0; // 使用单个存储槽,可通过 getReserves 访问\n uint112 private reserve1; // 使用单个存储槽,可通过 getReserves 访问 ``` -每个代币类型都有储备的资源库。 我们假定两者代表相同数量的值,因此每个 token0 的价值都等同于 reserve1/reserve0 token1。 +资金池为每种代币类型持有的储备金。 我们假定两者代表相同数量的价值,因此每个 token0 的价值等同于 reserve1/reserve0 个 token1。 ```solidity - uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves + uint32 private blockTimestampLast; // 使用单个存储槽,可通过 getReserves 访问 ``` -发生兑换的最后一个区块的时间戳,用来追踪一段时间内的汇率。 +发生兑换的最后一个区块的时间戳,用于追踪一段时间内的汇率。 -以太坊合约中燃料消耗量最大的一项是存储,这种燃料消耗从一次合约调用持续到下一次调用。 每个存储单元长度为 256 位。 因此,`reserve0`、`reserve1` 和 `blockTimestampLast` 三个变量的分配方式让单个存储值可以包含全部这三个变量 (112+112+32=256)。 +以太坊合约中最大的燃料开销之一是存储,它会在合约的每次调用之间持续存在。 每个存储单元的长度为 256 位。 因此,`reserve0`、`reserve1` 和 `blockTimestampLast` 这三个变量的分配方式使得单个存储值可以包含所有这三个变量 (112+112+32=256)。 ```solidity - uint public price0CumulativeLast; - uint public price1CumulativeLast; + uint public price0CumulativeLast;\n uint public price1CumulativeLast; ``` -这些变量存放每种代币的累计成本(每种代币在另一种代币的基础上计算)。 可以用来计算一段时间内的平均汇率。 +这些变量持有每种代币的累计价格(以另一种代币计价)。 它们可用于计算一段时间内的平均汇率。 ```solidity - uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event + uint public kLast; // reserve0 * reserve1,截至最近一次流动性事件发生后 ``` -币对交易所决定 token0 和 token1 之间汇率的方式是在交易中保持两种储备金的乘数恒定不变。 即 `kLast` 这个值。 当流动性提供者存入或提取代币时,该乘数就会变化,由于兑换市场的费用为 0.3%,它会略有增加。 +交易对决定 token0 和 token1 之间汇率的方式是在交易期间保持两种储备金的乘积恒定。 `kLast` 就是这个值。 当流动性提供者存入或提取代币时,该值会发生变化,并且由于 0.3% 的市场费用,它会略有增加。 -下面是一个示例。 请注意,为了简单起见,表格中的数字仅保留了小数点后三位,我们忽略了 0.3% 交易费,因此数字并不准确。 +下面是一个简单的例子。 请注意,为简单起见,该表只保留小数点后三位,并且我们忽略了 0.3% 的交易费,因此数字并不准确。 -| 事件 | reserve0 | reserve1 | reserve0 \* reserve1 | 平均汇率 (token1 / token0) | -| --------------------------------------- | ---------:| ---------:| ----------------------:| ---------------------- | -| 初始设置 | 1,000.000 | 1,000.000 | 1,000,000 | | -| 交易者 A 用 50 个 token0 兑换 47.619 个 token1 | 1,050.000 | 952.381 | 1,000,000 | 0.952 | -| 交易者 B 用 10 个 token0 兑换 8.984 个 token1 | 1,060.000 | 943.396 | 1,000,000 | 0.898 | -| 交易者 C 用 40 个 token0 兑换 34.305 个 token1 | 1,100.000 | 909.090 | 1,000,000 | 0.858 | -| 交易者 D 用 100 个 token1 兑换 109.01 个 token0 | 990.990 | 1,009.090 | 1,000,000 | 0.917 | -| 交易者 E 用 10 个 token0 兑换 10.079 个 token1 | 1,000.990 | 999.010 | 1,000,000 | 1.008 | +| 事件 | reserve0 | reserve1 | reserve0 \* reserve1 | 平均汇率 (token1 / token0) | +| ------------------------------------------------------- | ------------------------: | ------------------------: | -------------------: | ----------------------------------------- | +| 初始设置 | 1,000.000 | 1,000.000 | 1,000,000 | | +| 交易者 A 用 50 个 token0 兑换 47.619 个 token1 | 1,050.000 | 952.381 | 1,000,000 | 0.952 | +| 交易者 B 用 10 个 token0 兑换 8.984 个 token1 | 1,060.000 | 943.396 | 1,000,000 | 0.898 | +| 交易者 C 用 40 个 token0 兑换 34.305 个 token1 | 1,100.000 | 909.090 | 1,000,000 | 0.858 | +| 交易者 D 用 100 个 token1 兑换 109.01 个 token0 | 990.990 | 1,009.090 | 1,000,000 | 0.917 | +| 交易者 E 用 10 个 token0 兑换 10.079 个 token1 | 1,000.990 | 999.010 | 1,000,000 | 1.008 | -由于交易者提供了更多 token0,token1 的相对价值增加了,反之亦然,这取决于供求。 +随着交易者提供更多的 token0,token1 的相对价值会增加,反之亦然,这取决于供需关系。 #### 锁定 {#pair-lock} @@ -218,30 +209,29 @@ contract UniswapV2Pair is IUniswapV2Pair, UniswapV2ERC20 { uint private unlocked = 1; ``` -有一类基于[重入攻击](https://medium.com/coinmonks/ethernaut-lvl-10-re-entrancy-walkthrough-how-to-abuse-execution-ordering-and-reproduce-the-dao-7ec88b912c14)的安全漏洞。 Uniswap 需要转让不同数值的 ERC-20 代币,这意味着调用的 ERC-20 合约可能会导致调用合约的 Uniswap 市场遭受攻击。 通过在合约中使用 ` unlocked ` 变量,我们可以防止函数在运行时被调用(同一笔交易中)。 +有一类安全漏洞是基于[重入攻击滥用](https://medium.com/coinmonks/ethernaut-lvl-10-re-entrancy-walkthrough-how-to-abuse-execution-ordering-and-reproduce-the-dao-7ec88b912c14)的。 Uniswap 需要转移任意 ERC-20 代币,这意味着调用 ERC-20 合约可能会试图滥用调用它们的 Uniswap 市场。 +通过在合约中包含 `unlocked` 变量,我们可以防止函数在运行时被再次调用(在同一笔交易中)。 ```solidity modifier lock() { ``` -此函数是一个[修改器](https://docs.soliditylang.org/en/v0.8.3/contracts.html#function-modifiers),它对正常函数进行包装数,以便以某种方式改变其行为。 +此函数是一个[修改器](https://docs.soliditylang.org/en/v0.8.3/contracts.html#function-modifiers),它是一个包装在普通函数周围以某种方式改变其行为的函数。 ```solidity - require(unlocked == 1, 'UniswapV2: LOCKED'); - unlocked = 0; + require(unlocked == 1, 'UniswapV2: LOCKED');\n unlocked = 0; ``` -如果 `unlocked` 变量值为 1,将其设置为 0。 如果已经是 0,则撤销调用,返回失败。 +如果 `unlocked` 等于 1,则将其设置为 0。 如果它已经是 0,则回滚调用,使其失败。 ```solidity _; ``` -在修改器中,`_;` 是原始函数调用(含所有参数)。 此处,这意味着仅在 `unlocked` 变量值为 1 时调用函数,该函数调用才有效;而当函数运行时,`unlocked` 值为 0。 +在修改器中,`_;` 是原始函数调用(包含所有参数)。 此处,这意味着仅在 unlocked 变量值为 1 时调用函数,该函数调用才有效;而当函数运行时,unlocked 值为 0。 ```solidity - unlocked = 1; - } + unlocked = 1;\n } ``` 当主函数返回后,释放锁定。 @@ -249,27 +239,21 @@ contract UniswapV2Pair is IUniswapV2Pair, UniswapV2ERC20 { #### 其他 函数 {#pair-misc} ```solidity - function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) { - _reserve0 = reserve0; - _reserve1 = reserve1; - _blockTimestampLast = blockTimestampLast; - } + function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {\n _reserve0 = reserve0;\n _reserve1 = reserve1;\n _blockTimestampLast = blockTimestampLast;\n } ``` 此函数返回给调用者当前的兑换状态。 请注意,Solidity 函数[可以返回多个值](https://docs.soliditylang.org/en/v0.8.3/contracts.html#returning-multiple-values)。 ```solidity - function _safeTransfer(address token, address to, uint value) private { - (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value)); + function _safeTransfer(address token, address to, uint value) private {\n (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value)); ``` -此内部函数可以从交易所转账一定数额的 ERC20 代币给其他帐户。 `SELECTOR` 指定我们调用的函数是 `transfer(address,uint)`(参见上面的定义)。 +此内部函数可以从交易所转账一定数额的 ERC20 代币给其他帐户。 SELECTOR 指定我们调用的函数是 `transfer(address,uint)`(参见上面的定义)。 -为了避免必须为代币函数导入接口,我们需要使用其中一个[应用程序二进制接口函数](https://docs.soliditylang.org/en/v0.8.3/units-and-global-variables.html#abi-encoding-and-decoding-functions)来“手动”创建调用。 +为了避免必须为代币函数导入接口,我们使用[ABI 函数](https://docs.soliditylang.org/en/v0.8.3/units-and-global-variables.html#abi-encoding-and-decoding-functions)“手动”创建调用。 ```solidity - require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED'); - } + require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');\n } ``` ERC-20 的转移调用有两种方式可能失败: @@ -282,50 +266,36 @@ ERC-20 的转移调用有两种方式可能失败: #### 事件 {#pair-events} ```solidity - event Mint(address indexed sender, uint amount0, uint amount1); - event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); + event Mint(address indexed sender, uint amount0, uint amount1);\n event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); ``` -当流动资金提供者存入流动资金 (`Mint`) 或提取流动资金 (`Burn`) 时,会发出这两个事件。 在这两种情况下,存入或提取的 token0 和 token1 金额是事件的一部分,以及调用合约的帐户身份 (`Sender`) 也是事件的一部分。 在提取资金时,事件中还包括获得代币的目的地址 (`to`),这个地址可能与发送人不同。 +当流动资金提供者存入流动资金 (Mint) 或提取流动资金 (Burn) 时,会发出这两个事件。 在这两种情况下,存入或提取的 token0 和 token1 金额是事件的一部分,以及调用合约的帐户身份 (sender) 也是事件的一部分。 在提取资金时,事件中还包括获得代币的目的地址 (to),这个地址可能与发送人不同。 ```solidity - event Swap( - address indexed sender, - uint amount0In, - uint amount1In, - uint amount0Out, - uint amount1Out, - address indexed to - ); + event Swap(\n address indexed sender,\n uint amount0In,\n uint amount1In,\n uint amount0Out,\n uint amount1Out,\n address indexed to\n ); ``` -当交易者用一种代币交换另一种代币时,会激发此事件。 同样,代币发送者和兑换后代币的存入目的帐户可能不一样。 每种代币都可以发送到交易所,或者从交易所接收。 +当交易者用一种代币交换另一种代币时,会激发此事件。 同样,代币发送者和兑换后代币的存入目的帐户可能不一样。 +每种代币都可以发送到交易所,或者从交易所接收。 ```solidity event Sync(uint112 reserve0, uint112 reserve1); ``` -最后,无论出于何种原因,每次存入或提取代币时都会触发 `Sync` 事件,以提供最新的储备金信息(从而提供汇率)。 +最后,无论出于何种原因,每次存入或提取代币时都会触发 Sync 事件,以提供最新的储备金信息(从而提供汇率)。 #### 设置函数 {#pair-setup} 这些函数应在建立新的配对交易时调用。 ```solidity - constructor() public { - factory = msg.sender; - } + constructor() public {\n factory = msg.sender;\n } ``` -构造函数确保我们能够跟踪产生配对的工厂合约的地址。 `initialize` 函数和工厂交易费(如果有)需要此信息 +构造函数确保我们能够跟踪产生配对的工厂合约的地址。 initialize 函数和工厂交易费(如果有)需要此信息 ```solidity - // called once by the factory at time of deployment - function initialize(address _token0, address _token1) external { - require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check - token0 = _token0; - token1 = _token1; - } + // 在部署时由工厂调用一次\n function initialize(address _token0, address _token1) external {\n require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // 检查是否充分\n token0 = _token0;\n token1 = _token1;\n } ``` 这个函数允许工厂(而且只允许工厂)指定配对中进行兑换的两种 ERC-20 代币。 @@ -335,8 +305,7 @@ ERC-20 的转移调用有两种方式可能失败: ##### \_update ```solidity - // update reserves and, on the first call per block, price accumulators - function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private { + // 更新储备金,并在每个区块的第一次调用时更新价格累加器\n function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private { ``` 每次存入或提取代币时,会调用此函数。 @@ -348,240 +317,189 @@ ERC-20 的转移调用有两种方式可能失败: 如果 balance0 或 balance1 (uint256) 大于 uint112(-1) (=2^112-1)(因此当转换为 uint112 时会溢出并返回 0),拒绝继续执行 \_update 以防止溢出。 一般的代币可以细分成 10^18 个单元,这意味在每个交易所,每种代币的限额为 5.1\*10^15 个。 迄今为止,这并不是一个问题。 ```solidity - uint32 blockTimestamp = uint32(block.timestamp % 2**32); - uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired - if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { + uint32 blockTimestamp = uint32(block.timestamp % 2**32);\n uint32 timeElapsed = blockTimestamp - blockTimestampLast; // 期望溢出\n if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { ``` 如果流逝的时间值不是零,这意味着本交易是此区块上的第一笔兑换交易。 在这种情况下,我们需要更新累积成本值。 ```solidity - // * never overflows, and + overflow is desired - price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; - price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; - } + // * 从不溢出,+ 期望溢出\n price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;\n price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;\n } ``` 每个累积成本值都用最新成本值(另一个代币的储备金额/本代币的储备金额)与以秒为单位的流逝时间的乘积加以更新。 要获得平均价格,需要读取两个时间点的累计价格,并除以两个时间点之间的时间差。 例如,假设下面这些事件序列: -| 事件 | reserve0 | reserve1 | 时间戳 | 边际汇率 (reserve1 / reserve0) | price0CumulativeLast | -| ---------------------------------- | ---------:| ---------:| ----- | --------------------------:| ----------------------------:| -| 初始设置 | 1,000.000 | 1,000.000 | 5,000 | 1.000 | 0 | -| 交易者 A 存入 50 个代币 0 获得 47.619 个代币 1 | 1,050.000 | 952.381 | 5,020 | 0.907 | 20 | -| 交易者 B 存入 10 个代币 0 获得 8.984 个代币 1 | 1,060.000 | 943.396 | 5,030 | 0.89 | 20+10\*0.907 = 29.07 | -| 交易者 C 存入 40 个代币 0 获得 34.305 个代币 1 | 1,100.000 | 909.090 | 5,100 | 0.826 | 29.07+70\*0.890 = 91.37 | -| 交易者 D 存入 100 个代币 0 获得 109.01 个代币 1 | 990.990 | 1,009.090 | 5,110 | 1.018 | 91.37+10\*0.826 = 99.63 | -| 交易者 E 存入 10 个代币 0 获得 10.079 个代币 1 | 1,000.990 | 999.010 | 5,150 | 0.998 | 99.63+40\*1.1018 = 143.702 | +| 事件 | reserve0 | reserve1 | 时间戳 | 边际汇率 (reserve1 / reserve0) | price0CumulativeLast | +| -------------------------------------------------- | ------------------------: | ------------------------: | ----- | --------------------------------------------: | -------------------------------------------------------------------------: | +| 初始设置 | 1,000.000 | 1,000.000 | 5,000 | 1.000 | 0 | +| 交易者 A 存入 50 个代币 0 获得 47.619 个代币 1 | 1,050.000 | 952.381 | 5,020 | 0.907 | 20 | +| 交易者 B 存入 10 个代币 0 获得 8.984 个代币 1 | 1,060.000 | 943.396 | 5,030 | 0.890 | 20+10\*0.907 = 29.07 | +| 交易者 C 存入 40 个代币 0 获得 34.305 个代币 1 | 1,100.000 | 909.090 | 5,100 | 0.826 | 29.07+70\*0.890 = 91.37 | +| 交易者 D 存入 100 个代币 1 获得 109.01 个代币 0 | 990.990 | 1,009.090 | 5,110 | 1.018 | 91.37+10\*0.826 = 99.63 | +| 交易者 E 存入 10 个代币 0 获得 10.079 个代币 1 | 1,000.990 | 999.010 | 5,150 | 0.998 | 99.63+40\*1.1018 = 143.702 | -比如说我们想要计算时间戳 5,030 到 5,150 之间**代币 0** 的平均价格。 `price0Cumulative` 的差值为 143.702-29.07=114.632。 此为两分钟(120 秒)间的平均值。 因此,平均价格为 114.632/120 = 0.955。 +比如说我们想要计算时间戳 5,030 到 5,150 之间 **Token0** 的平均价格。 `price0Cumulative` 的差值为 143.702-29.07=114.632。 此为两分钟(120 秒)间的平均值。 因此,平均价格为 114.632/120 = 0.955。 此价格计算是我们需要知道原有资金储备规模的原因。 ```solidity - reserve0 = uint112(balance0); - reserve1 = uint112(balance1); - blockTimestampLast = blockTimestamp; - emit Sync(reserve0, reserve1); - } + reserve0 = uint112(balance0);\n reserve1 = uint112(balance1);\n blockTimestampLast = blockTimestamp;\n emit Sync(reserve0, reserve1);\n } ``` -最后,更新全局变量并发布一个 `Sync` 事件。 +最后,更新全局变量并发布一个 Sync 事件。 ##### \_mintFee ```solidity - // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k) - function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { + // 如果开启了费用,则铸造相当于 sqrt(k) 增长的 1/6 的流动性\n function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { ``` -在 Uniswap 2.0 的合约中规定交易者为使用兑换市场支付 0.30% 的费用。 这笔费用的大部分(交易的 0.25%)支付给流动性提供者。 余下的 0.05% 可以支付给流动性提供者或支付给工厂指定的地址作为协议费,用于支付 Uniswap 团队的开发费用。 +在 Uniswap 2.0 的合约中规定交易者为使用兑换市场支付 0.30% 的费用。 这笔费用的大部分(交易的 0.25%)支付给流动性提供者。 剩余的 0.05% 可以给流动性提供者,也可以给工厂指定的地址作为协议费,用于支付 Uniswap 的开发工作。 为了减少计算次数(因此减少燃料费用),仅在向资金池中增加或减少流动性时才计算该费用,而不是在每次兑换交易时都计算。 ```solidity - address feeTo = IUniswapV2Factory(factory).feeTo(); - feeOn = feeTo != address(0); + address feeTo = IUniswapV2Factory(factory).feeTo();\n feeOn = feeTo != address(0); ``` 读取工厂的费用支付地址。 如果返回值为零,则代表没有协议费,也不需要计算这笔费用。 ```solidity - uint _kLast = kLast; // gas savings + uint _kLast = kLast; // 节省燃料 ``` -`kLast` 状态变量位于内存中,所以在合约的不同调用中都有一个值。 虽然易失性内存每次在函数调用合约结束后都会清空,但由于访问存储的费用比访问内存高得多,所以我们使用内部变量,以降低燃料费用。 +`kLast` 状态变量位于存储中,因此在对合约的不同调用之间它会有一个值。 +访问存储比访问当对合约的函数调用结束时释放的易失性内存要昂贵得多,因此我们使用内部变量来节省燃料。 ```solidity - if (feeOn) { - if (_kLast != 0) { + if (feeOn) {\n if (_kLast != 0) { ``` -流动资金提供者仅仅因为提供流动性代币而得到所属的费用。 但是协议费用要求铸造新的流动性代币,并提供给 `feeTo` 地址。 +流动性提供者通过其流动性代币的增值来获得他们的分成。 但是协议费用要求铸造新的流动性代币,并提供给 `feeTo` 地址。 ```solidity - uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1)); - uint rootKLast = Math.sqrt(_kLast); - if (rootK > rootKLast) { + uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));\n uint rootKLast = Math.sqrt(_kLast);\n if (rootK > rootKLast) { ``` -如果有新的流动性变化需要收取协议费。 你可以在[本文后面部分](#Math)看到平方根函数。 +如果有新的流动性可以收取协议费。 您可以在[本文后面](#Math)看到平方根函数 ```solidity - uint numerator = totalSupply.mul(rootK.sub(rootKLast)); - uint denominator = rootK.mul(5).add(rootKLast); - uint liquidity = numerator / denominator; + uint numerator = totalSupply.mul(rootK.sub(rootKLast));\n uint denominator = rootK.mul(5).add(rootKLast);\n uint liquidity = numerator / denominator; ``` -这种复杂的费用计算方法在[白皮书](https://uniswap.org/whitepaper.pdf)第 5 页中作了解释。 从计算 `kLast` 的时间到当前为止,流动性没有增加或减少(因为每次计算都是在流动性增加或减少并发生实际变化之前进行),所以 `reserve0 * reserve1` 的任何变化一定是从交易费用中产生(如果没有交易费,`reserve0 * reserve1` 值为常量)。 +这种复杂的费用计算方法在[白皮书](https://app.uniswap.org/whitepaper.pdf)第 5 页中作了解释。 我们知道,从计算 `kLast` 的时间到当前时间,没有添加或移除流动性(因为我们在每次添加或移除流动性之前都会运行此计算),因此 `reserve0 * reserve1` 的任何变化都必须来自交易费(没有交易费,我们会保持 `reserve0 * reserve1` 不变)。 ```solidity - if (liquidity > 0) _mint(feeTo, liquidity); - } - } + if (liquidity > 0) _mint(feeTo, liquidity);\n }\n } ``` -使用 `UniswapV2ERC20._mint` 函数产生更多的流动池代币并发送到 `feeTo` 地址。 +使用 `UniswapV2ERC20._mint` 函数实际创建额外的流动性代币并将其分配给 `feeTo`。 ```solidity - } else if (_kLast != 0) { - kLast = 0; - } - } + } else if (_kLast != 0) {\n kLast = 0;\n }\n } ``` -如果不需收费则将 `klast` 设为 0(如果 klast 不为 0)。 编写该合约时,有一个[燃料返还功能](https://eips.ethereum.org/EIPS/eip-3298),用于鼓励合约将其不需要的存储释放,从而减少以太坊上状态的整体存储大小。 此段代码在可行时返还。 +如果没有费用,则将 `kLast` 设置为零(如果它还不是零)。 在编写此合约时,有一个[燃料返还功能](https://eips.ethereum.org/EIPS/eip-3298),它鼓励合约通过清零不需要的存储来减小以太坊状态的总体大小。 +此代码在可能的情况下获得该退款。 #### 外部可访问函数 {#pair-external} -请注意,虽然任何交易或合约都_可以_调用这些函数,但这些函数在设计上是从外围合约调用。 如果直接调用,你无法欺骗币对交易所,但可能因为错误而丢失价值。 +请注意,虽然任何交易或合约都_可以_调用这些函数,但它们被设计为从外围合约调用。 如果您直接调用它们,您将无法欺骗交易对,但可能会因错误而遭受价值损失。 -##### 铸币 +##### mint ```solidity - // this low-level function should be called from a contract which performs important safety checks - function mint(address to) external lock returns (uint liquidity) { + // 这个底层函数应该从一个执行重要安全检查的合约中调用\n function mint(address to) external lock returns (uint liquidity) { ``` -当流动资金提供者为资金池增加流动资金时,将会调用此函数。 它铸造额外的流动性代币作为奖励。 应从[外围合约](#UniswapV2Router02)中调用该函数,在同一笔交易中增加流动性后外围合约就调用该函数(因此其他人都不能在合法所有者之前提交要求新增加流动性的交易)。 +当流动性提供者向资金池添加流动性时,会调用此函数。 它铸造额外的流动性代币作为奖励。 它应该从[一个外围合约](#UniswapV2Router02)中调用,该合约在同一笔交易中添加流动性后调用它(这样其他任何人都无法在合法所有者之前提交一笔交易来认领新的流动性)。 ```solidity - (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings + (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // 节省燃料 ``` -这是 Solidity 函数中读取多个返回值的方式。 我们丢弃了最后返回的值区块时间戳,因为不需要它。 +这是读取返回多个值的 Solidity 函数结果的方法。 我们丢弃了最后返回的值——区块时间戳,因为我们不需要它。 ```solidity - uint balance0 = IERC20(token0).balanceOf(address(this)); - uint balance1 = IERC20(token1).balanceOf(address(this)); - uint amount0 = balance0.sub(_reserve0); - uint amount1 = balance1.sub(_reserve1); + uint balance0 = IERC20(token0).balanceOf(address(this));\n uint balance1 = IERC20(token1).balanceOf(address(this));\n uint amount0 = balance0.sub(_reserve0);\n uint amount1 = balance1.sub(_reserve1); ``` -获取当前余额并查看每个代币类型中添加的数量。 +获取当前余额并查看每种代币类型添加的数量。 ```solidity bool feeOn = _mintFee(_reserve0, _reserve1); ``` -如果有协议费用的话,计算需要收取的费用,并相应地产生流动池代币。 因为输入 `_mintFee` 函数的参数是原有的储备金数值,相应费用仅依据费用导致的资金池变化来精确计算。 +计算要收取的协议费(如果有),并相应地铸造流动性代币。 因为 `_mintFee` 的参数是旧的储备金值,所以费用仅基于由费用引起的资金池变化来精确计算。 ```solidity - uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee - if (_totalSupply == 0) { - liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY); - _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens + uint _totalSupply = totalSupply; // 节省燃料,必须在此处定义,因为 totalSupply 可以在 _mintFee 中更新\n if (_totalSupply == 0) {\n liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);\n _mint(address(0), MINIMUM_LIQUIDITY); // 永久锁定第一个 MINIMUM_LIQUIDITY 代币 ``` -如果这是第一笔存款,会创建数量为 `MINIMUM_LIQUIDITY` 的代币并将它们发送到地址 0 进行锁定。 这些代币永远无法赎回,也就是说资金池永远不会完全变空(避免某些情况下出现分母为零错误)。 `MINIMUM_LIQUIDITY` 的值是 1000,因为考虑到大多数 ERC-20 细分成 1 个代币的 10^-18 个单位,而以太币则被分为 wei,为 1 个代币价值的 10^-15。 成本不高。 +如果这是第一笔存款,会创建数量为 `MINIMUM_LIQUIDITY` 的代币并将它们发送到地址 0 进行锁定。 这些代币永远无法赎回,也就是说资金池永远不会完全变空(避免某些情况下出现分母为零错误)。 `MINIMUM_LIQUIDITY` 的值为一千,考虑到大多数 ERC-20 代币可细分为 10^-18 个单位(就像 ETH 被分为 wei 一样),这相当于单个代币价值的 10^-15。 成本不高。 -在首次存入时,我们不知道两种代币的相对价值,所以假定两种代币都具有相同的价值,只需要两者数量的乘积并取一下平方根。 +在首次存入时,我们不知道两种代币的相对价值,所以我们假定两种代币都具有相同的价值,只需要将它们的数量相乘并取平方根。 -我们可以相信这一点,因为提供同等价值、避免套利符合存款人的利益。 比方说,这两种代币的价值是相同的,但我们的存款人存入的 **Token1** 是 **Token0** 的四倍。 交易者可以利用币对交易所认为 **Token0** 的价值更高这种情况,减少其价值。 +我们可以相信这一点,因为提供同等价值、避免套利符合存款人的利益。 +比方说,这两种代币的价值是相同的,但我们的存款人存入的 **Token1** 是 **Token0** 的四倍。 交易者可以利用交易对认为 **Token0** 更有价值这一事实来从中提取价值。 -| 事件 | reserve0 | reserve1 | reserve0 \* reserve1 | 流动池价值 (reserve0 + reserve1) | -| --------------------------------------------- | --------:| --------:| ----------------------:| ---------------------------:| -| 初始设置 | 8 | 32 | 256 | 40 | -| 交易者存入 8 个 **Token0** 代币,获得 16 个 **Token1** 代币 | 16 | 16 | 256 | 32 | +| 事件 | reserve0 | reserve1 | reserve0 \* reserve1 | 流动池价值 (reserve0 + reserve1) | +| ------------------------------------------ | -------: | -------: | -------------------: | ---------------------------------------------: | +| 初始设置 | 8 | 32 | 256 | 40 | +| 交易者存入 8 个 **Token0** 代币,获得 16 个 **Token1** | 16 | 16 | 256 | 32 | -正如你可以看到的,交易者额外获得了 8 个代币,这是由于流动池价值下降造成的,损害了拥有流动池的存款人。 +如您所见,交易者额外赚取了 8 个代币,这些代币来自资金池价值的减少,损害了拥有该资金池的存款人。 ```solidity - } else { - liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1); + } else {\n liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1); ``` -对于随后每次存入,我们已经知道两种资产之间的汇率。我们期望流动性提供者提供等值的两种代币。 如果他们没有,我们根据他们提供的较低价值代币来支付他们的流动池代币以做惩罚。 +对于随后的每次存入,我们已经知道两种资产之间的汇率。我们期望流动性提供者提供等值的两种代币。 如果他们没有,我们根据他们提供的较低价值代币来支付他们的流动池代币以做惩罚。 -无论是最初存入还是后续存入,流动性代币的数量均等于 `reserve0*reserve1` 变化的平方根,而流动性代币的价值不变(除非存入的资金为不等值的代币类型,那么就会分派“罚金”)。 下面是另一个示例,两种代币具有相同价值,进行了三次良性存入和一次不良存入(即只存入一种类型的代币,所以不会产生任何流动性代币)。 +无论是初始存款还是后续存款,我们提供的流动性代币数量等于 `reserve0*reserve1` 变化的平方根,并且流动性代币的价值不变(除非我们收到的存款两种代币的价值不相等,在这种情况下,“罚款”会被分配)。 下面是另一个示例,两种代币具有相同价值,进行了三次良性存入和一次不良存入(即只存入一种类型的代币,所以不会产生任何流动性代币)。 -| 事件 | reserve0 | reserve1 | reserve0 \* reserve1 | 流动池价值 (reserve0 + reserve1) | 存入资金而产生的流动池代币 | 流动池代币总值 | 每个流动池代币的值 | -| ---------- | --------:| --------:| ----------------------:| ---------------------------:| -------------:| -------:| ---------:| -| 初始设置 | 8.000 | 8.000 | 64 | 16.000 | 8 | 8 | 2.000 | -| 每种代币存入 4 个 | 12.000 | 12.000 | 144 | 24.000 | 4 | 12 | 2.000 | -| 每种代币存入 2 个 | 14.000 | 14.000 | 196 | 28.000 | 2 | 14 | 2.000 | -| 不等值的存款 | 18.000 | 14.000 | 252 | 32.000 | 0 | 14 | ~2.286 | -| 套利后 | ~15.874 | ~15.874 | 252 | ~31.748 | 0 | 14 | ~2.267 | +| 事件 | reserve0 | reserve1 | reserve0 \* reserve1 | 流动池价值 (reserve0 + reserve1) | 存入资金而产生的流动池代币 | 流动池代币总值 | 每个流动池代币的值 | +| ---------- | --------------------------------------: | --------------------------------------: | -------------------: | ---------------------------------------------: | ------------: | ------: | -------------------------------------: | +| 初始设置 | 8.000 | 8.000 | 64 | 16.000 | 8 | 8 | 2.000 | +| 每种代币存入 4 个 | 12.000 | 12.000 | 144 | 24.000 | 4 | 12 | 2.000 | +| 每种代币存入 2 个 | 14.000 | 14.000 | 196 | 28.000 | 2 | 14 | 2.000 | +| 不等值的存款 | 18.000 | 14.000 | 252 | 32.000 | 0 | 14 | ~2.286 | +| 套利后 | ~15.874 | ~15.874 | 252 | ~31.748 | 0 | 14 | ~2.267 | ```solidity - } - require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED'); - _mint(to, liquidity); + }\n require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');\n _mint(to, liquidity); ``` -使用 `UniswapV2ERC20._mint` 函数产生更多流动池代币并发送到正确的帐户地址。 +使用 `UniswapV2ERC20._mint` 函数实际创建额外的流动性代币并将其分配给正确的帐户。 ```solidity - - _update(balance0, balance1, _reserve0, _reserve1); - if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date - emit Mint(msg.sender, amount0, amount1); - } +\n _update(balance0, balance1, _reserve0, _reserve1);\n if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 和 reserve1 是最新的\n emit Mint(msg.sender, amount0, amount1);\n } ``` -更新相应的状态变量(`reserve0`、`reserve1`,必要时还包含 `kLast`)并激发相应事件。 +更新状态变量(`reserve0`、`reserve1`,以及如果需要的话 `kLast`)并发出相应的事件。 ##### 销毁 ```solidity - // this low-level function should be called from a contract which performs important safety checks - function burn(address to) external lock returns (uint amount0, uint amount1) { + // 这个底层函数应该从一个执行重要安全检查的合约中调用\n function burn(address to) external lock returns (uint amount0, uint amount1) { ``` -当流动资金被提取且相应的流动池代币需要被销毁时,将调用此函数。 还需要[从外围帐户](#UniswapV2Router02)调用。 +当流动资金被提取且相应的流动池代币需要被销毁时,将调用此函数。 +它也应该从[一个外围帐户](#UniswapV2Router02)调用。 ```solidity - (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings - address _token0 = token0; // gas savings - address _token1 = token1; // gas savings - uint balance0 = IERC20(_token0).balanceOf(address(this)); - uint balance1 = IERC20(_token1).balanceOf(address(this)); - uint liquidity = balanceOf[address(this)]; + (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // 节省燃料\n address _token0 = token0; // 节省燃料\n address _token1 = token1; // 节省燃料\n uint balance0 = IERC20(_token0).balanceOf(address(this));\n uint balance1 = IERC20(_token1).balanceOf(address(this));\n uint liquidity = balanceOf[address(this)]; ``` 外围合约在调用函数之前,首先将要销毁的流动资金转到本合约中。 这样,我们知道有多少流动资金需要销毁,并可以确保它被销毁。 ```solidity - bool feeOn = _mintFee(_reserve0, _reserve1); - uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee - amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution - amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution - require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED'); + bool feeOn = _mintFee(_reserve0, _reserve1);\n uint _totalSupply = totalSupply; // 节省燃料,必须在此处定义,因为 totalSupply 可以在 _mintFee 中更新\n amount0 = liquidity.mul(balance0) / _totalSupply; // 使用余额确保按比例分配\n amount1 = liquidity.mul(balance1) / _totalSupply; // 使用余额确保按比例分配\n require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED'); ``` -流动资金提供者获得等值数量的两种代币。 这样不会改变兑换汇率。 +流动性提供者收到等值的两种代币。 这样不会改变兑换汇率。 ```solidity - _burn(address(this), liquidity); - _safeTransfer(_token0, to, amount0); - _safeTransfer(_token1, to, amount1); - balance0 = IERC20(_token0).balanceOf(address(this)); - balance1 = IERC20(_token1).balanceOf(address(this)); - - _update(balance0, balance1, _reserve0, _reserve1); - if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date - emit Burn(msg.sender, amount0, amount1, to); - } - + _burn(address(this), liquidity);\n _safeTransfer(_token0, to, amount0);\n _safeTransfer(_token1, to, amount1);\n balance0 = IERC20(_token0).balanceOf(address(this));\n balance1 = IERC20(_token1).balanceOf(address(this));\n\n _update(balance0, balance1, _reserve0, _reserve1);\n if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 和 reserve1 是最新的\n emit Burn(msg.sender, amount0, amount1, to);\n }\n ``` `burn` 函数的其余部分是上述 `mint` 函数的镜像。 @@ -589,33 +507,23 @@ ERC-20 的转移调用有两种方式可能失败: ##### 兑换 ```solidity - // this low-level function should be called from a contract which performs important safety checks - function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock { + // 这个底层函数应该从一个执行重要安全检查的合约中调用\n function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock { ``` -此函数也应该从[外围合约](#UniswapV2Router02)调用。 +此函数也应该从[一个外围合约](#UniswapV2Router02)调用。 ```solidity - require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT'); - (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings - require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY'); - - uint balance0; - uint balance1; - { // scope for _token{0,1}, avoids stack too deep errors + require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');\n (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // 节省燃料\n require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');\n\n uint balance0;\n uint balance1;\n { // _token{0,1} 的作用域,避免堆栈过深错误 ``` -本地变量可以存储在内存中,或者如果变量数目不太多,直接存储进堆栈。 如果我们可以限制变量数量,那么建议使用堆栈以减少燃料消耗。 欲了解更多详情,请参阅[以太坊黄皮书(以前的以太坊规范)](https://ethereum.github.io/yellowpaper/paper.pdf)第 26 页上的“方程式 298”。 +本地变量可以存储在内存中,或者如果变量数目不太多,直接存储进堆栈。 +如果我们可以限制变量数量,那么建议使用堆栈以减少燃料消耗。 欲了解更多详情,请参阅[以太坊黄皮书(正式的以太坊规范)](https://ethereum.github.io/yellowpaper/paper.pdf)第 26 页的方程式 298。 ```solidity - address _token0 = token0; - address _token1 = token1; - require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO'); - if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens - if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens + address _token0 = token0;\n address _token1 = token1;\n require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');\n if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // 乐观地转移代币\n if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // 乐观地转移代币 ``` -这种转移应该是会成功的,因为在转移之前我们确信所有条件都得到满足。 在以太坊中这样操作是可以的,原因在于如果在后面的调用中条件没有得到满足,我们可以回滚操作和造成的所有变化。 +这种转移是乐观的,因为我们在确定所有条件都满足之前就进行了转移。 在以太坊中这样操作是可以的,原因在于如果在后面的调用中条件没有得到满足,我们可以回滚操作和造成的所有变化。 ```solidity if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data); @@ -624,130 +532,93 @@ ERC-20 的转移调用有两种方式可能失败: 如果收到请求,则通知接收者要进行兑换。 ```solidity - balance0 = IERC20(_token0).balanceOf(address(this)); - balance1 = IERC20(_token1).balanceOf(address(this)); - } + balance0 = IERC20(_token0).balanceOf(address(this));\n balance1 = IERC20(_token1).balanceOf(address(this));\n } ``` -获取当前余额。 外围合约在调用交换函数之前,需要向合约发送要兑换的代币。 这让合约可以方便检查它有没有受到欺骗,这是在核心合约中_必须_进行的检查(因为除外围合约之外的其他实体也可以调用该函数)。 +获取当前余额。 外围合约在调用我们进行兑换之前向我们发送代币。 这让合约可以方便检查它有没有受到欺骗,这是在核心合约中_必须_进行的检查(因为除外围合约之外的其他实体也可以调用该函数)。 ```solidity - uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0; - uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0; - require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT'); - { // scope for reserve{0,1}Adjusted, avoids stack too deep errors - uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3)); - uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3)); - require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K'); + uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;\n uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;\n require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');\n { // reserve{0,1}Adjusted 的作用域,避免堆栈过深错误\n uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));\n uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));\n require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K'); ``` -这是一项健全性检查,确保我们不会因兑换而损失代币。 在任何情况下兑换都不应减少 `reserve0*reserve1`。 这也是我们确保为兑换发送 0.3% 费用的方式;在对 K 值进行完整性检查之前,我们将两个余额乘以 1000 减去 3 倍的金额,这意味着在将其 K 值与当前准备金 K 值进行比较之前,从余额中扣除 0.3% (3/1000 = 0.003 = 0.3%)。 +这是一项健全性检查,确保我们不会因兑换而损失代币。 在任何情况下兑换都不应减少 `reserve0*reserve1`。 这也是我们确保在兑换中收取 0.3% 费用的地方;在对 K 值进行健全性检查之前,我们将两个余额乘以 1000 再减去金额乘以 3,这意味着在将其 K 值与当前储备金的 K 值进行比较之前,从余额中扣除了 0.3% (3/1000 = 0.003 = 0.3%)。 ```solidity - } - - _update(balance0, balance1, _reserve0, _reserve1); - emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to); - } + }\n\n _update(balance0, balance1, _reserve0, _reserve1);\n emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);\n } ``` -更新 `reserve0` 和 `reserve1` 的值,并在必要时更新价格累积值和时间戳并激发相应事件。 +更新 `reserve0` 和 `reserve1`,并在必要时更新价格累加器和时间戳,然后发出一个事件。 ##### 同步或提取 -实际余额有可能与配对交易所认为的储备金余额没有同步。 没有合约的认同,就无法撤回代币,但存款却不同。 帐户可以将代币转移到交易所,而无需调用 `mint` 或 `swap`。 +实际余额有可能与交易对认为的储备金余额没有同步。 +没有合约的同意就无法提取代币,但存款是另一回事。 帐户可以将代币转移到交易所,而无需调用 `mint` 或 `swap`。 在这种情况下,有两种解决办法: - `sync`,将储备金更新为当前余额 -- `skim`,撤回额外的金额。 请注意任何帐户都可以调用 `skim` 函数,因为无法知道是谁存入的代币。 此信息是在一个事件中发布的,但这些事件无法从区块链中访问。 +- `skim`,提取额外的金额。 请注意任何帐户都可以调用 `skim` 函数,因为无法知道是谁存入的代币。 此信息是在一个事件中发布的,但这些事件无法从区块链中访问。 ```solidity - // force balances to match reserves - function skim(address to) external lock { - address _token0 = token0; // gas savings - address _token1 = token1; // gas savings - _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0)); - _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1)); - } - - - - // force reserves to match balances - function sync() external lock { - _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1); - } -} + // 强制余额与储备金匹配\n function skim(address to) external lock {\n address _token0 = token0; // 节省燃料\n address _token1 = token1; // 节省燃料\n _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));\n _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));\n }\n\n\n\n // 强制储备金与余额匹配\n function sync() external lock {\n _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1);\n }\n} ``` ### UniswapV2Factory.sol {#UniswapV2Factory} -[此合约](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Factory.sol)创建币对交易所。 +[此合约](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Factory.sol) 创建交易对。 ```solidity -pragma solidity =0.5.16; - -import './interfaces/IUniswapV2Factory.sol'; -import './UniswapV2Pair.sol'; - -contract UniswapV2Factory is IUniswapV2Factory { - address public feeTo; - address public feeToSetter; +pragma solidity =0.5.16;\n\nimport './interfaces/IUniswapV2Factory.sol';\nimport './UniswapV2Pair.sol';\n\ncontract UniswapV2Factory is IUniswapV2Factory {\n address public feeTo;\n address public feeToSetter; ``` -这些状态变量是执行协议费用所必需的(请见[白皮书](https://uniswap.org/whitepaper.pdf)的第 5 页)。 `feeTo` 地址用于累积流动性代币以收取协议费,而 `feeToSetter` 地址可用于将 `feeTo` 更改为不同地址。 +这些状态变量是执行协议费用所必需的(请见[白皮书](https://app.uniswap.org/whitepaper.pdf)的第 5 页)。 +`feeTo` 地址用于累积流动性代币以收取协议费,而 `feeToSetter` 地址可用于将 `feeTo` 更改为不同地址。 ```solidity - mapping(address => mapping(address => address)) public getPair; - address[] public allPairs; + mapping(address => mapping(address => address)) public getPair;\n address[] public allPairs; ``` -这些变量用以跟踪配对,即两种代币之间的兑换。 +这些变量用以跟踪交易对,即两种代币之间的兑换。 -第一个变量 `getPair` 是一个映射,它根据兑换的两种 ERC-20 代币来识别币对交易所合约。 ERC-20 代币通过实现它们的合约的地址来识别,因此关键字和值都是地址。 为了获取币对交易所地址,以便能够将 `tokenA` 兑换成 `tokenB`,可以使用 `getPair []`(或其他方式)。 +第一个变量 `getPair` 是一个映射,它根据兑换的两种 ERC-20 代币来识别交易对合约。 ERC-20 代币通过实现它们的合约的地址来识别,因此密钥和值都是地址。 为了获取能让您将 `tokenA` 兑换成 `tokenB` 的交易对地址,您可以使用 `getPair[][]`(或反过来)。 -第二个变量 `allPairs` 是一个数组,其中包括该工厂创建的所有币对交易所的地址。 在以太坊中,无法迭代映射内容,或获取所有关键字的列表,所以,该变量是了解此工厂管理哪些交易所的唯一方式。 +第二个变量 `allPairs` 是一个数组,其中包括该工厂创建的所有交易对的地址。 在以太坊中,无法迭代映射内容,或获取所有密钥的列表,所以,该变量是了解此工厂管理哪些交易所的唯一方式。 -注意:不能迭代所有映射关键字的原因是合约数据存储_费用昂贵_,所以我们越少用存储越好,且越少改变 越好。 可以创建[支持迭代的映射](https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.sol),但它们需要额外存储关键字列表。 但在大多数应用程序中并不需要。 +注意:不能迭代所有映射密钥的原因是合约数据存储费用昂贵,所以我们越少用存储越好,且越少改变\n越好。 您可以创建[支持迭代的映射](https://github.com/ethereum/dapp-bin/blob/master/library/iterable_mapping.sol),但这需要额外的存储来存放密钥列表。 但在大多数应用程序中并不需要。 ```solidity event PairCreated(address indexed token0, address indexed token1, address pair, uint); ``` -当新的配对交易创建时,将激发此事件。 它包括代币地址、币对交易所地址以及工厂管理的交易所总数。 +当新的交易对创建时,将激发此事件。 它包括代币地址、交易对地址以及工厂管理的交易所总数。 ```solidity - constructor(address _feeToSetter) public { - feeToSetter = _feeToSetter; - } + constructor(address _feeToSetter) public {\n feeToSetter = _feeToSetter;\n } ``` 构造函数做的唯一事情是指定 `feeToSetter`。 工厂开始时没有费用,只有 `feeSetter` 可以改变这种情况。 ```solidity - function allPairsLength() external view returns (uint) { - return allPairs.length; - } + function allPairsLength() external view returns (uint) {\n return allPairs.length;\n } ``` -此函数返回交易配对的数量。 +此函数返回交易对的数量。 ```solidity function createPair(address tokenA, address tokenB) external returns (address pair) { ``` -这是工厂的主要函数,可以在两个 ERC-20 代币之间创建配对交易。 注意,任何人都可以调用此函数。 不需要 Uniswap 许可就能创建新的币对交易所。 +这是工厂的主要函数,可以在两个 ERC-20 代币之间创建交易对。 注意,任何人都可以调用此函数。 不需要 Uniswap 许可就能创建新的交易对。 ```solidity - require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES'); - (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); + require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES');\n (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); ``` -我们希望新交易所的地址是可以确定的,这样就可以在链下提前计算(这对于[二层网络交易](/developers/docs/layer-2-scaling/)来说比较有用)。 为此,无论收到代币地址的顺序如何,我们需要代币地址始终按顺序排列,因此我们在此处对它们排序。 +我们希望新交易所的地址是可以确定的,这样就可以在链下提前计算(这对于[二层网络交易](/developers/docs/scaling/)来说比较有用)。 +为此,无论收到代币地址的顺序如何,我们需要代币地址始终按顺序排列,因此我们在此处对它们排序。 ```solidity - require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS'); - require(getPair[token0][token1] == address(0), 'UniswapV2: PAIR_EXISTS'); // single check is sufficient + require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');\n require(getPair[token0][token1] == address(0), 'UniswapV2: PAIR_EXISTS'); // 单次检查就足够了 ``` 大流动资金池优于小流动资金池,因为其价格比较稳定。 我们不希望每一对代币有多个流动性池。 如果已经有一个交易所,则无需为相同代币对创建另一个交易所。 @@ -756,89 +627,60 @@ contract UniswapV2Factory is IUniswapV2Factory { bytes memory bytecode = type(UniswapV2Pair).creationCode; ``` -要创建新合约,我们需要使用创建它的代码(包括构造函数和写入用于存储实际合约以太坊虚拟机字节码的代码)。 在 Solidity 语言中,通常只需使用 `addr = new ()` 的格式语句,然后编译器就可以完成所有的工作,不过为了获取一个确定的合约地址,需要使用 [CREATE2 操作码](https://eips.ethereum.org/EIPS/eip-1014)。 在编写这个代码时,Solidity 还不支持操作码,因此需要手动获取该代码。 目前这已经不再是问题,因为 [Solidity 现已支持 CREATE2](https://docs.soliditylang.org/en/v0.8.3/control-structures.html#salted-contract-creations-create2)。 +要创建新合约,我们需要使用创建它的代码(包括构造函数和写入用于存储实际合约 EVM 字节码的代码)。 通常在 Solidity 中,我们只使用 `addr = new ()`,编译器会为我们处理一切,但要获得确定性的合约地址,我们需要使用 [CREATE2 操作码](https://eips.ethereum.org/EIPS/eip-1014)。 +在编写这个代码时,Solidity 还不支持该操作码,因此需要手动获取该代码。 这不再是问题,因为 [Solidity 现在支持 CREATE2](https://docs.soliditylang.org/en/v0.8.3/control-structures.html#salted-contract-creations-create2)。 ```solidity - bytes32 salt = keccak256(abi.encodePacked(token0, token1)); - assembly { - pair := create2(0, add(bytecode, 32), mload(bytecode), salt) - } + bytes32 salt = keccak256(abi.encodePacked(token0, token1));\n assembly {\n pair := create2(0, add(bytecode, 32), mload(bytecode), salt)\n } ``` -当 Solidity 不支持操作码时,我们可以通过[内联汇编](https://docs.soliditylang.org/en/v0.8.3/assembly.html)来调用。 +当 Solidity 尚不支持某个操作码时,我们可以使用[内联汇编](https://docs.soliditylang.org/en/v0.8.3/assembly.html)来调用它。 ```solidity IUniswapV2Pair(pair).initialize(token0, token1); ``` -调用 `initialize` 函数来告诉新兑换交易可以兑换哪两种代币。 +调用 `initialize` 函数来告诉新交易所可以兑换哪两种代币。 ```solidity - getPair[token0][token1] = pair; - getPair[token1][token0] = pair; // populate mapping in the reverse direction - allPairs.push(pair); - emit PairCreated(token0, token1, pair, allPairs.length); - } + getPair[token0][token1] = pair;\n getPair[token1][token0] = pair; // 反向填充映射\n allPairs.push(pair);\n emit PairCreated(token0, token1, pair, allPairs.length); ``` 在状态变量中保存新的配对信息,并激发一个事件来告知外界新的配对交易合约已生成。 ```solidity - function setFeeTo(address _feeTo) external { - require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN'); - feeTo = _feeTo; - } - - function setFeeToSetter(address _feeToSetter) external { - require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN'); - feeToSetter = _feeToSetter; - } -} + function setFeeTo(address _feeTo) external {\n require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');\n feeTo = _feeTo;\n }\n\n function setFeeToSetter(address _feeToSetter) external {\n require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');\n feeToSetter = _feeToSetter;\n }\n} ``` 这两个函数允许 `feeSetter` 管理费用接收人(如果有)并将 `feeSetter` 更改为新地址。 ### UniswapV2ERC20.sol {#UniswapV2ERC20} -[本合约](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)实现 ERC-20 流动性代币。 它与 [OpenZeppelin ERC-20 合约](/developers/tutorials/erc20-annotated-code)相似,因此这里仅解释不同的部分,即 `permit` 的功能。 +[此合约](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol) 实现了 ERC-20 流动性代币。 它类似于 [OpenZeppelin ERC-20 合约](/developers/tutorials/erc20-annotated-code),所以我只解释不同的部分,即 `permit` 功能。 -以太坊上的交易需要消耗以太币 (ETH),相当于实际货币。 如果你有 ERC-20 代币但没有以太币,就无法发送交易,因而不能用代币做任何事情。 避免该问题的一个解决方案是[元交易](https://docs.uniswap.org/contracts/v2/guides/smart-contract-integration/supporting-meta-transactions)。 代币的所有者签署一个交易,允许其他人从链上提取代币,并通过网络发送给接收人。 接收人拥有以太币,可以代表所有者提交许可。 +以太坊上的交易需要花费以太币 (ETH),它等同于真实货币。 如果你有 ERC-20 代币但没有 ETH,就无法发送交易,因而不能用代币做任何事情。 避免此问题的一个解决方案是[元交易](https://docs.uniswap.org/contracts/v2/guides/smart-contract-integration/supporting-meta-transactions)。 +代币的所有者签署一个交易,允许其他人从链上提取代币,并通过网络发送给接收人。 拥有 ETH 的接收人可以代表所有者提交许可。 ```solidity - bytes32 public DOMAIN_SEPARATOR; - // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); - bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; + bytes32 public DOMAIN_SEPARATOR;\n // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");\n bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; ``` -此哈希值是[这种交易类型的标识](https://eips.ethereum.org/EIPS/eip-712#rationale-for-typehash)。 在这里,我们仅支持带有这些参数的 `Permit`。 +此哈希是[交易类型的标识符](https://eips.ethereum.org/EIPS/eip-712#rationale-for-typehash)。 在这里,我们仅支持带有这些参数的 `Permit`。 ```solidity mapping(address => uint) public nonces; ``` -接收人无法伪造数字签名。 但是,可以将同一笔交易发送两次(这是一种[重放攻击](https://wikipedia.org/wiki/Replay_attack))。 为防止发生这种情况,我们使用了[随机数](https://wikipedia.org/wiki/Cryptographic_nonce)。 如果新 `Permit` 的随机数不是上次使用的随机数加一,我们认为它无效。 +接收人无法伪造数字签名。 但是,可以轻易地将同一笔交易发送两次(这是一种[重放攻击](https://wikipedia.org/wiki/Replay_attack))。 为了防止这种情况,我们使用[随机数](https://wikipedia.org/wiki/Cryptographic_nonce)。 如果新 `Permit` 的随机数不是上次使用的随机数加一,我们认为它无效。 ```solidity - constructor() public { - uint chainId; - assembly { - chainId := chainid - } + constructor() public {\n uint chainId;\n assembly {\n chainId := chainid\n } ``` -这是获取[链标识符](https://chainid.network/)的代码。 它使用一种名为 [Yul](https://docs.soliditylang.org/en/v0.8.4/yul.html) 的以太坊虚拟机汇编语言。 请注意,在当前版本 Yul 中,必须使用 `chainid()`,而非 `chainid`。 +这是获取[链标识符](https://chainid.network/)的代码。 它使用一种名为 [Yul](https://docs.soliditylang.org/en/v0.8.4/yul.html) 的 EVM 汇编方言。 请注意,在当前版本 Yul 中,必须使用 `chainid()`,而非 `chainid`。 ```solidity - DOMAIN_SEPARATOR = keccak256( - abi.encode( - keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), - keccak256(bytes(name)), - keccak256(bytes('1')), - chainId, - address(this) - ) - ); - } + DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\n keccak256(bytes(name)),\n keccak256(bytes('1')),\n chainId,\n address(this)\n )\n );\n } ``` 计算 EIP-712 的[域分隔符](https://eips.ethereum.org/EIPS/eip-712#rationale-for-domainseparator)。 @@ -847,22 +689,16 @@ contract UniswapV2Factory is IUniswapV2Factory { function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { ``` -这是实现批准功能的函数。 它接收相关字段作为参数,并将三个标量值(v、r 和 s)作为[签名](https://yos.io/2018/11/16/ethereum-signatures/)。 +这是实现许可功能的函数。 它接收相关字段作为参数,以及[签名](https://yos.io/2018/11/16/ethereum-signatures/)的三个标量值(v、r 和 s)。 ```solidity require(deadline >= block.timestamp, 'UniswapV2: EXPIRED'); ``` -截止日期后请勿接受交易。 +截止日期后不接受交易。 ```solidity - bytes32 digest = keccak256( - abi.encodePacked( - '\x19\x01', - DOMAIN_SEPARATOR, - keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) - ) - ); + bytes32 digest = keccak256(\n abi.encodePacked(\n '\\x19\\x01',\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\n )\n ); ``` `abi.encodePacked(...)` 是我们预计将收到的信息。 我们知道随机数应该是什么,所以不需要将它作为一个参数。 @@ -873,109 +709,81 @@ contract UniswapV2Factory is IUniswapV2Factory { address recoveredAddress = ecrecover(digest, v, r, s); ``` -从摘要和签名中,我们可以用 [ecrecover](https://coders-errand.com/ecrecover-signature-verification-ethereum/) 函数计算出签名的地址。 +从摘要和签名中,我们可以使用 [ecrecover](https://coders-errand.com/ecrecover-signature-verification-ethereum/) 获取签署它的地址。 ```solidity - require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE'); - _approve(owner, spender, value); - } - + require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');\n _approve(owner, spender, value);\n }\n ``` -如果一切正常,则将其视为 [ERC-20 批准](https://eips.ethereum.org/EIPS/eip-20#approve)。 +如果一切正常,则将其视为[一个 ERC-20 批准](https://eips.ethereum.org/EIPS/eip-20#approve)。 ## 外围合约 {#periphery-contracts} -外围合约是用于 Uniswap 的 API(应用程序接口)。 它们可用于其他合约或去中心化应用程序进行的外部调用。 你可以直接调用核心合约但更为复杂,如果你出错,则可能会损失价值。 核心合约只包含确保它们不会遭受欺骗的测试,不会对其他调用者进行健全性检查。 它们在外围,因此可以根据需要进行更新。 +外围合约是用于 Uniswap 的 API(应用程序接口)。 它们可用于外部调用,无论是来自其他合约还是去中心化应用程序。 您可以直接调用核心合约但更为复杂,如果您出错,则可能会损失价值。 核心合约只包含确保它们不会遭受欺骗的测试,不会对其他调用者进行健全性检查。 它们在外围,因此可以根据需要进行更新。 ### UniswapV2Router01.sol {#UniswapV2Router01} -[本合约](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router01.sol)存在问题,[不应该再使用](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-01)。 幸运的是,外围合约无状态,也不拥有任何资产,弃用外围合约比较容易。建议使用 `UniswapV2Router02` 来替代。 +[此合约](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router01.sol) 存在问题,[不应再使用](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-01)。 幸运的是,外围合约无状态,也不拥有任何资产,弃用外围合约比较容易。建议使用 `UniswapV2Router02` 来替代。 ### UniswapV2Router02.sol {#UniswapV2Router02} -在大多数情况下,你会通过[该合约](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router02.sol)使用 Uniswap。 有关使用说明,你可以在[这里](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-02)找到。 +在大多数情况下,您会通过[此合约](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router02.sol)使用 Uniswap。 +您可以在[此处](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/router-02)查看如何使用它。 ```solidity -pragma solidity =0.6.6; - -import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol'; -import '@uniswap/lib/contracts/libraries/TransferHelper.sol'; - -import './interfaces/IUniswapV2Router02.sol'; -import './libraries/UniswapV2Library.sol'; -import './libraries/SafeMath.sol'; -import './interfaces/IERC20.sol'; -import './interfaces/IWETH.sol'; +pragma solidity =0.6.6;\n\nimport '@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol';\nimport '@uniswap/lib/contracts/libraries/TransferHelper.sol';\n\nimport './interfaces/IUniswapV2Router02.sol';\nimport './libraries/UniswapV2Library.sol';\nimport './libraries/SafeMath.sol';\nimport './interfaces/IERC20.sol';\nimport './interfaces/IWETH.sol'; ``` -其中大部分我们都曾遇到过,或相当明显。 一个例外是 `IWETH.sol`。 Uniswapv2 允许兑换任意一对 ERC-20 代币,但以太币 (ETH) 本身并不是 ERC-20 代币。 它早于该标准出现,并采用独特的机制转换。 为了在适用于 ERC-20 代币的合约中使用以太币,人们制定出[包装以太币 (WETH)](https://weth.io/) 合约。 你发送以太币到该合约,它会为你铸造相同金额的包装以太币。 或者你可以销毁包装以太币,然后换回以太币。 +其中大部分我们都曾遇到过,或相当明显。 一个例外是 `IWETH.sol`。 Uniswap v2 允许兑换任意一对 ERC-20 代币,但以太币 (ETH) 本身并不是 ERC-20 代币。 它早于该标准出现,并采用独特的机制转换。 为了在适用于 ERC-20 代币的合约中使用 ETH,人们制定出[包装以太币 (WETH)](https://weth.tkn.eth.limo/) 合约。 你发送 ETH 到该合约,它会为你铸造相同金额的 WETH。 或者你可以销毁 WETH,然后换回 ETH。 ```solidity -contract UniswapV2Router02 is IUniswapV2Router02 { - using SafeMath for uint; - - address public immutable override factory; - address public immutable override WETH; +contract UniswapV2Router02 is IUniswapV2Router02 {\n using SafeMath for uint;\n\n address public immutable override factory;\n address public immutable override WETH; ``` -路由需要知道使用哪个工厂,以及对于需要包装以太币的交易,要使用什么包装以太币合约。 这些值是[不可修改](https://docs.soliditylang.org/en/v0.8.3/contracts.html#constant-and-immutable-state-variables)的,意味着它们只能在构造函数中设置。 这使得用户相信没有人能够改变这些值,让它们指向有风险的合约。 +路由需要知道使用哪个工厂,以及对于需要 WETH 的交易,要使用什么 WETH 合约。 这些值是[不可变的](https://docs.soliditylang.org/en/v0.8.3/contracts.html#constant-and-immutable-state-variables),意味着它们只能在构造函数中设置。 这使得用户相信没有人能够改变这些值,让它们指向有风险的合约。 ```solidity - modifier ensure(uint deadline) { - require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED'); - _; - } + modifier ensure(uint deadline) {\n require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\n _;\n } ``` -此修改函数确保有时间限制的交易(如果可以,请在 Y 之前执行 X)不会在时限后发生。 +此修改函数确保有时间限制的交易(“如果可以,请在 Y 之前执行 X”)不会在时限后发生。 ```solidity - constructor(address _factory, address _WETH) public { - factory = _factory; - WETH = _WETH; - } + constructor(address _factory, address _WETH) public {\n factory = _factory;\n WETH = _WETH;\n } ``` 构造函数仅用于设置不可变的状态变量。 ```solidity - receive() external payable { - assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract - } + receive() external payable {\n assert(msg.sender == WETH); // 只接受来自 WETH 合约的回退函数的 ETH\n } ``` -当我们将代币从包装以太币合约换回以太币时,需要调用此函数。 只有我们使用的包装以太币合约才有权完成此操作。 +当我们将代币从 WETH 合约换回 ETH 时,需要调用此函数。 只有我们使用的 WETH 合约才有权完成此操作。 -#### 增加流动资金 {#add-liquidity} +#### 添加流动性 {#add-liquidity} 这些函数添加代币进行配对交易,从而增大了流动资金池。 ```solidity - - // **** ADD LIQUIDITY **** - function _addLiquidity( +\n // **** 添加流动性 ****\n function _addLiquidity( ``` -此函数用于计算应存入币对交易所的 A 代币和 B 代币的金额。 +此函数用于计算应存入交易对的 A 代币和 B 代币的金额。 ```solidity - address tokenA, - address tokenB, + address tokenA,\n address tokenB, ``` 这些是 ERC-20 代币合约的地址。 ```solidity - uint amountADesired, - uint amountBDesired, + uint amountADesired,\n uint amountBDesired, ``` -这些是流动资金提供者想要存入的代币数额。 它们也是要存入的代币 A 和 B 的最大金额。 +这些是流动性提供者想要存入的代币数额。 它们也是要存入的代币 A 和 B 的最大金额。 ```solidity - uint amountAMin, - uint amountBMin + uint amountAMin,\n uint amountBMin ``` 这些是可接受的最低存款数额。 如果在达到最小金额或更高金额时交易无法完成,则会回滚交易。 如果不想要此功能,将它们设定为零即可。 @@ -984,16 +792,16 @@ contract UniswapV2Router02 is IUniswapV2Router02 { 例如,想象汇率是一比一时,流动性提供者指定了以下值: -| 参数 | 值 | -| -------------- | ----:| -| amountADesired | 1000 | -| amountBDesired | 1000 | -| amountAMin | 900 | -| amountBMin | 800 | +| 参数 | Value | +| -------------- | ----: | +| amountADesired | 1000 | +| amountBDesired | 1000 | +| amountAMin | 900 | +| amountBMin | 800 | 只要汇率保持在 0.9 至 1.25 之间,交易就会进行。 如果汇率超出这个范围,交易将被取消。 -这种预防措施的原因是交易不是即时的,你提交交易,最后验证者才会将它们包含在一个区块中(除非你的燃料价格非常低,在这种情况下你需要提交另一个具有相同随机数的交易以及更高的燃料价格来覆盖它)。 在提交交易和交易包含到区块中之间发生的事情是无法控制的。 +采取这种预防措施的原因是交易不是即时的,您提交它们后,最终会有一个验证者将其包含在一个区块中(除非您的燃料价格非常低,在这种情况下,您需要提交另一笔具有相同随机数和更高燃料价格的交易来覆盖它)。 在提交交易和交易包含到区块中之间发生的事情是无法控制的。 ```solidity ) internal virtual returns (uint amountA, uint amountB) { @@ -1002,10 +810,7 @@ contract UniswapV2Router02 is IUniswapV2Router02 { 该函数返回流动性提供者应存入的金额,存入该金额是为了让比率等于当前储备金之间的比率。 ```solidity - // create the pair if it doesn't exist yet - if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) { - IUniswapV2Factory(factory).createPair(tokenA, tokenB); - } + // 如果该交易对尚不存在,则创建它\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\n } ``` 如果还没有此代币对的兑换交易,则创建一个。 @@ -1017,143 +822,91 @@ contract UniswapV2Router02 is IUniswapV2Router02 { 获取配对中的当前储备金。 ```solidity - if (reserveA == 0 && reserveB == 0) { - (amountA, amountB) = (amountADesired, amountBDesired); + if (reserveA == 0 && reserveB == 0) {\n (amountA, amountB) = (amountADesired, amountBDesired); ``` 如果当前储备金为空,那么这是一笔新的配对交易。 存入的金额应与流动性提供者想要提供的金额完全相同。 ```solidity - } else { - uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB); + } else {\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB); ``` -如果我们需要知道这些金额是多少,可以使用[此函数](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/libraries/UniswapV2Library.sol#L35)获得最佳金额。 我们想要与当前储备相同的比率。 +如果我们需要查看金额将是多少,我们使用[此函数](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/libraries/UniswapV2Library.sol#L35)获取最佳金额。 我们想要与当前储备相同的比率。 ```solidity - if (amountBOptimal <= amountBDesired) { - require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT'); - (amountA, amountB) = (amountADesired, amountBOptimal); + if (amountBOptimal <= amountBDesired) {\n require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\n (amountA, amountB) = (amountADesired, amountBOptimal); ``` 如果 `amountBOptimal` 小于流动性提供者想要存入的金额,意味着代币 B 目前比流动性存款人所认为的价值更高,所以需要更少的金额。 ```solidity - } else { - uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA); - assert(amountAOptimal <= amountADesired); - require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT'); - (amountA, amountB) = (amountAOptimal, amountBDesired); + } else {\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\n assert(amountAOptimal <= amountADesired);\n require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\n (amountA, amountB) = (amountAOptimal, amountBDesired); ``` -如果 B 代币的最佳金额大于想要存入的 B 代币金额,意味着代币 B 目前比流动性存款人所认为的价值更低,所以需要更多的金额。 然而,需要存入的金额是最大值,意味着我们无法存入更多金额的 B 代币。 可以选择的另一种方法是,我们计算所需 B 代币数额对应的最佳 A 代币数额。 +如果 B 代币的最佳金额大于想要存入的 B 代币金额,意味着代币 B 目前比流动性存款人所认为的价值更低,所以需要更多的金额。 然而,所需金额是一个最大值,因此我们不能这样做。 相反,我们为所需数量的 B 代币计算最佳数量的 A 代币。 -把数值汇总起来,我们就会得到这张图表。 假定你正在试图存入 1000 个 A 代币(蓝线)和 1000 个 B 代币(红线)。 X 轴是汇率,A/B。 如果 x=1,两种代币价值相等,每种代币各存入 1000 个。 如果 x=2,A 的价值是 B 的两倍(每个 A 代币可换两个 B 代币),因此你存入 1000 个 B 代币,但只能存入 500 个 A 代币。 如果是 x=0.5,情况就会逆转,即可存 1000 个 A 代币或 500 个 B 代币。 +把数值汇总起来,我们就会得到这张图表。 假定你正在试图存入 1000 个 A 代币(蓝线)和 1000 个 B 代币(红线)。 x 轴是汇率,A/B。 如果 x=1,两种代币价值相等,每种代币各存入 1000 个。 如果 x=2,A 的价值是 B 的两倍(每个 A 代币可换两个 B 代币),因此你存入 1000 个 B 代币,但只能存入 500 个 A 代币。 如果是 x=0.5,情况就会逆转,即可存 1000 个 A 代币或 500 个 B 代币。 ![图表](liquidityProviderDeposit.png) -可以将流动资金直接存入核心合约(使用 [UniswapV2Pair::mint](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol#L110)),但核心合约只是检查自己没有遭受欺骗。因此,如果汇率在提交交易至执行交易之间发生变化,你将面临损失资金价值的风险。 如果使用外围合约,它会计算你应该存入的金额并会立即存入,所以汇率不会改变,你不会有任何损失。 +您可以直接将流动性存入核心合约(使用 [UniswapV2Pair::mint](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol#L110)),但核心合约只检查自己是否被欺骗,因此如果在您提交交易和交易执行之间汇率发生变化,您将面临价值损失的风险。 如果使用外围合约,它会计算您应该存入的金额并会立即存入,所以汇率不会改变,您不会有任何损失。 ```solidity - function addLiquidity( - address tokenA, - address tokenB, - uint amountADesired, - uint amountBDesired, - uint amountAMin, - uint amountBMin, - address to, - uint deadline + function addLiquidity(\n address tokenA,\n address tokenB,\n uint amountADesired,\n uint amountBDesired,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline ``` 此函数可以在交易中调用,用于存入流动资金。 大多数参数与上述 `_addLiquidity` 中相同,但有两个例外: -. `to` 是会获取新流动池代币的地址,这些代币铸造用于显示流动资金提供者在池中所占比率 `deadline` 是交易的时间限制 +。 `to` 是接收新铸造的流动性代币的地址,用于显示流动性提供者在资金池中的份额\n。 `deadline` 是交易的时间限制 ```solidity - ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) { - (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin); - address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB); + ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\n (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB); ``` -我们计算实际存入的金额,然后找到流动资金池的帐户地址。 为了节省燃料,我们不是通过询问工厂执行此操作,而是使用库函数 `pairFor`(参见如下程序库) +我们计算实际存入的金额,然后找到流动资金池的帐户地址。 为了节省燃料,我们不是通过询问工厂执行此操作,而是使用库函数 `pairFor`(参见下面程序库部分) ```solidity - TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA); - TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB); + TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\n TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB); ``` 将正确数额的代币从用户帐户转到配对交易。 ```solidity - liquidity = IUniswapV2Pair(pair).mint(to); - } + liquidity = IUniswapV2Pair(pair).mint(to);\n } ``` -反过来,将流动资金池的部分所有权赋予 `to` 地址的流动性代币。 核心合约的 `mint` 函数查看合约有多少额外代币(与上次流动性发生变化时合约持有的金额比较),并相应地铸造流动性代币。 +作为回报,向 `to` 地址提供流动性代币,以获得资金池的部分所有权。 核心合约的 `mint` 函数查看它有多少额外代币(与上次流动性发生变化时它持有的数量相比),并相应地铸造流动性。 ```solidity - function addLiquidityETH( - address token, - uint amountTokenDesired, + function addLiquidityETH(\n address token,\n uint amountTokenDesired, ``` -当流动资金提供者想要向代币/以太币配对交易提供流动资金时,存在一些差别。 合约为流动性提供者处理以太币包装。 用户不需要指定想要存入多少以太币,因为用户直接通过交易发送以太币(金额在 `msg.value` 中)。 +当流动资金提供者想要向代币/ETH 配对交易提供流动资金时,存在一些差别。 合约为流动性提供者处理 ETH 的包装。 用户不需要指定想要存入多少 ETH,因为用户直接通过交易发送 ETH(金额在 `msg.value` 中)。 ```solidity - uint amountTokenMin, - uint amountETHMin, - address to, - uint deadline - ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) { - (amountToken, amountETH) = _addLiquidity( - token, - WETH, - amountTokenDesired, - msg.value, - amountTokenMin, - amountETHMin - ); - address pair = UniswapV2Library.pairFor(factory, token, WETH); - TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken); - IWETH(WETH).deposit{value: amountETH}(); - assert(IWETH(WETH).transfer(pair, amountETH)); + uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\n (amountToken, amountETH) = _addLiquidity(\n token,\n WETH,\n amountTokenDesired,\n msg.value,\n amountTokenMin,\n amountETHMin\n );\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\n IWETH(WETH).deposit{value: amountETH}();\n assert(IWETH(WETH).transfer(pair, amountETH)); ``` -为了将以太币存入合约,首先将其包装成包装以太币,然后将包装以太币转入配对。 请注意转账在 `assert` 中包装。 这意味着如果转账失败,此合约调用也会失败,因此包装不会真正发生。 +为了将 ETH 存入合约,首先将其包装成 WETH,然后将 WETH 转入配对。 请注意转账在 `assert` 中包装。 这意味着如果转账失败,此合约调用也会失败,因此包装不会真正发生。 ```solidity - liquidity = IUniswapV2Pair(pair).mint(to); - // refund dust eth, if any - if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH); - } + liquidity = IUniswapV2Pair(pair).mint(to);\n // 如果有的话,退还零散的 eth\n if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\n } ``` -用户已经向我们发送了以太币,因此,如果还有任何额外以太币剩余(因为另一种代币比用户所认为的价值更低),我们需要发起退款。 +用户已经向我们发送了 ETH,因此,如果还有任何额外 ETH 剩余(因为另一种代币比用户所认为的价值更低),我们需要发起退款。 -#### 撤回流动资金 {#remove-liquidity} +#### 移除流动性 {#remove-liquidity} -下面的函数将撤回流动资金并还给流动资金提供者。 +这些函数将移除流动性并偿还流动性提供者。 ```solidity - // **** REMOVE LIQUIDITY **** - function removeLiquidity( - address tokenA, - address tokenB, - uint liquidity, - uint amountAMin, - uint amountBMin, - address to, - uint deadline - ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) { + // **** 移除流动性 ****\n function removeLiquidity(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) { ``` 最简单的流动资金撤回案例。 对于每种代币,都有一个流动性提供者同意接受的最低金额,必须在截止时间之前完成。 ```solidity - address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB); - IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair - (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to); + address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // 将流动性发送到交易对\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to); ``` 核心合约的 `burn` 函数处理返还给用户的代币。 @@ -1168,158 +921,66 @@ contract UniswapV2Router02 is IUniswapV2Router02 { (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0); ``` -将按从核心合约返回代币的路径(低位代币地址优先)调整为用户期望的方式(对应于 `tokenA` 和 `tokenB`)。 +将金额从核心合约返回它们的方式(较低地址的代币优先)转换为用户期望的方式(对应于 `tokenA` 和 `tokenB`)。 ```solidity - require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT'); - require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT'); - } + require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\n require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\n } ``` 可以首先进行转账,然后再核实转账是否合法,因为如果不合法,我们可以回滚所有的状态更改。 ```solidity - function removeLiquidityETH( - address token, - uint liquidity, - uint amountTokenMin, - uint amountETHMin, - address to, - uint deadline - ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) { - (amountToken, amountETH) = removeLiquidity( - token, - WETH, - liquidity, - amountTokenMin, - amountETHMin, - address(this), - deadline - ); - TransferHelper.safeTransfer(token, to, amountToken); - IWETH(WETH).withdraw(amountETH); - TransferHelper.safeTransferETH(to, amountETH); - } + function removeLiquidityETH(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\n (amountToken, amountETH) = removeLiquidity(\n token,\n WETH,\n liquidity,\n amountTokenMin,\n amountETHMin,\n address(this),\n deadline\n );\n TransferHelper.safeTransfer(token, to, amountToken);\n IWETH(WETH).withdraw(amountETH);\n TransferHelper.safeTransferETH(to, amountETH);\n } ``` -撤回以太币流动性的方式几乎是一样的,区别在于我们首先会收到包装以太币代币,然后将它们兑换成以太币并退还给流动性提供者。 +移除 ETH 的流动性几乎是一样的,区别在于我们首先会收到 WETH 代币,然后将它们兑换成 ETH 并退还给流动性提供者。 ```solidity - function removeLiquidityWithPermit( - address tokenA, - address tokenB, - uint liquidity, - uint amountAMin, - uint amountBMin, - address to, - uint deadline, - bool approveMax, uint8 v, bytes32 r, bytes32 s - ) external virtual override returns (uint amountA, uint amountB) { - address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB); - uint value = approveMax ? uint(-1) : liquidity; - IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); - (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline); - } - - - function removeLiquidityETHWithPermit( - address token, - uint liquidity, - uint amountTokenMin, - uint amountETHMin, - address to, - uint deadline, - bool approveMax, uint8 v, bytes32 r, bytes32 s - ) external virtual override returns (uint amountToken, uint amountETH) { - address pair = UniswapV2Library.pairFor(factory, token, WETH); - uint value = approveMax ? uint(-1) : liquidity; - IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); - (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline); - } + function removeLiquidityWithPermit(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external virtual override returns (uint amountA, uint amountB) {\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\n uint value = approveMax ? uint(-1) : liquidity;\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\n }\n\n\n function removeLiquidityETHWithPermit(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external virtual override returns (uint amountToken, uint amountETH) {\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n uint value = approveMax ? uint(-1) : liquidity;\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\n } ``` 这些函数转发元交易,通过[许可证机制](#UniswapV2ERC20)使没有以太币的用户能够从资金池中提取资金。 ```solidity - - // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) **** - function removeLiquidityETHSupportingFeeOnTransferTokens( - address token, - uint liquidity, - uint amountTokenMin, - uint amountETHMin, - address to, - uint deadline - ) public virtual override ensure(deadline) returns (uint amountETH) { - (, amountETH) = removeLiquidity( - token, - WETH, - liquidity, - amountTokenMin, - amountETHMin, - address(this), - deadline - ); - TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this))); - IWETH(WETH).withdraw(amountETH); - TransferHelper.safeTransferETH(to, amountETH); - } - +\n // **** 移除流动性(支持转账收费代币) ****\n function removeLiquidityETHSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) public virtual override ensure(deadline) returns (uint amountETH) {\n (, amountETH) = removeLiquidity(\n token,\n WETH,\n liquidity,\n amountTokenMin,\n amountETHMin,\n address(this),\n deadline\n );\n TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\n IWETH(WETH).withdraw(amountETH);\n TransferHelper.safeTransferETH(to, amountETH);\n }\n ``` 此函数可以用于在传输或存储时收取费用的代币。 当代币有这类费用时,我们无法依靠 `removeLiquidity` 函数来告诉我们可以撤回多少代币。因此,我们需要先提取然后查询余额。 ```solidity - - - function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( - address token, - uint liquidity, - uint amountTokenMin, - uint amountETHMin, - address to, - uint deadline, - bool approveMax, uint8 v, bytes32 r, bytes32 s - ) external virtual override returns (uint amountETH) { - address pair = UniswapV2Library.pairFor(factory, token, WETH); - uint value = approveMax ? uint(-1) : liquidity; - IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); - amountETH = removeLiquidityETHSupportingFeeOnTransferTokens( - token, liquidity, amountTokenMin, amountETHMin, to, deadline - ); - } +\n\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external virtual override returns (uint amountETH) {\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n uint value = approveMax ? uint(-1) : liquidity;\n IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\n );\n } ``` -最后这个函数将存储费用计入元交易。 +最后一个函数将存储费用与元交易结合起来。 #### 交易 {#trade} ```solidity - // **** SWAP **** - // requires the initial amount to have already been sent to the first pair + // **** 兑换 **** + // 要求初始金额已发送到第一个币对 function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual { ``` -公开给交易者的函数可以调用此函数以执行内部处理。 +此函数执行向交易者公开的函数所需的内部处理。 ```solidity for (uint i; i < path.length - 1; i++) { ``` -在撰写此教程时,已有 [388,160 个 ERC-20 代币](https://etherscan.io/tokens)。 如果每个代币对都有币对交易所,币对交易所将超过 1500 亿个。 目前,整个链上[的帐户数量仅为该数量的 0.1%](https://etherscan.io/chart/address)。 实际上,兑换函数支持路径这一概念。 交易者可以将 A 代币兑换成 B、B 代币兑换成 C、C 代币兑换成 D,因此不需要直接的 A-D 币对交易所。 +在我撰写本文时,有 [388,160 个 ERC-20 代币](https://eth.blockscout.com/tokens)。 如果每个代币对都有一个交易对交易所,那将会有超过 1500 亿个交易对交易所。 目前,整个链[只有该数量 0.1% 的帐户](https://eth.blockscout.com/stats/accountsGrowth)。 实际上,兑换函数支持路径这一概念。 交易者可以将 A 兑换成 B、B 兑换成 C、C 兑换成 D,因此不需要直接的 A-D 币对交易所。 -这些市场上的价格往往是同步的,因为当价格不同步时,就会为套利创造机会。 设想一下,例如有三种代币 A、B 和 C。有三个币对交易所,每对代币一个。 +这些市场上的价格往往是同步的,因为当价格不同步时,就会为套利创造机会。 例如,假设有三种代币 A、B 和 C。有三个币对交易所,每对代币一个。 1. 初始情况 -2. 交易者出售 24.695 A 代币,获得 25.305 B 代币。 -3. 交易者卖出 24.695 个 B 代币得到 25.305 个 C 代币,大约获得 0.61 个 B 代币的利润。 -4. 随后,该交易者卖出 24.695 个 C 代币得到 25.305 个 A 代币,大约获得 0.61 个 C 代币的利润。 该交易者还多出了 0.61 个 A 代币(交易者最终拥有的 25.305 个A 代币,减去原始投资 24.695 个 A 代币)。 - -| 步骤 | A-B 兑换 | B-C 兑换 | A-C 兑换 | -| -- | --------------------------- | --------------------------- | --------------------------- | -| 1 | A:1000 B:1050 A/B=1.05 | B:1000 C:1050 B/C=1.05 | A:1050 C:1000 C/A=1.05 | -| 2 | A:1024.695 B:1024.695 A/B=1 | B:1000 C:1050 B/C=1.05 | A:1050 C:1000 C/A=1.05 | -| 3 | A:1024.695 B:1024.695 A/B=1 | B:1024.695 C:1024.695 B/C=1 | A:1050 C:1000 C/A=1.05 | +2. 交易者卖出 24.695 个 A 代币,获得 25.305 个 B 代币。 +3. 交易者卖出 24.695 个 B 代币,换取 25.305 个 C 代币,留下约 0.61 个 B 代币作为利润。 +4. 然后,该交易者卖出 24.695 个 C 代币,换取 25.305 个 A 代币,留下约 0.61 个 C 代币作为利润。 该交易者还额外拥有 0.61 个 A 代币(交易者最终拥有的 25.305 个代币,减去 24.695 个的原始投资)。 + +| 步骤 | A-B 交易所 | B-C 交易所 | A-C 交易所 | +| -- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| 1 | A:1000 B:1050 A/B=1.05 | B:1000 C:1050 B/C=1.05 | A:1050 C:1000 C/A=1.05 | +| 2 | A:1024.695 B:1024.695 A/B=1 | B:1000 C:1050 B/C=1.05 | A:1050 C:1000 C/A=1.05 | +| 3 | A:1024.695 B:1024.695 A/B=1 | B:1024.695 C:1024.695 B/C=1 | A:1050 C:1000 C/A=1.05 | | 4 | A:1024.695 B:1024.695 A/B=1 | B:1024.695 C:1024.695 B/C=1 | A:1024.695 C:1024.695 C/A=1 | ```solidity @@ -1328,19 +989,19 @@ contract UniswapV2Router02 is IUniswapV2Router02 { uint amountOut = amounts[i + 1]; ``` -获取我们当前处理的配对,排序后(以便与配对一起使用)获得预期的输出金额。 +获取我们当前正在处理的交易对,将其排序(以便与该交易对一起使用)并获取预期的输出金额。 ```solidity (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0)); ``` -获得预期的金额后,按配对交易所需方式排序。 +获取预期的输出金额,按照交易对交易所预期的方式进行排序。 ```solidity address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to; ``` -这是最后一次兑换吗? 如果是,将收到用于交易的代币发送到目的地址。 如果不是,则将代币发送到下一个币对交易所。 +这是最后一笔兑换吗? 如果是,将为该笔交易收到的代币发送到目的地。 如果不是,则将其发送到下一个币对交易所。 ```solidity @@ -1351,13 +1012,13 @@ contract UniswapV2Router02 is IUniswapV2Router02 { } ``` -真正调用配对交易来兑换代币。 我们不需要回调函数来了解交易信息,因此没有在该字段中发送任何字节。 +实际调用交易对交易所来兑换代币。 我们不需要回调来获知有关兑换的信息,所以我们不在该字段中发送任何字节。 ```solidity function swapExactTokensForTokens( ``` -交易者直接使用此函数来兑换代币。 +交易者直接使用此函数将一种代币兑换成另一种代币。 ```solidity uint amountIn, @@ -1365,11 +1026,11 @@ contract UniswapV2Router02 is IUniswapV2Router02 { address[] calldata path, ``` -此参数包含 ERC-20 合约的地址。 如上文所述,此参数是一个数组,因为可能需要通过多个币对交易所将现有资产变为想要的资产。 +此参数包含 ERC-20 合约的地址。 如上所述,这是一个数组,因为你可能需要经过几个交易对交易所,才能将你拥有的资产兑换成你想要的资产。 -Solidity 中的函数参数可以存入 `memory` 或者 `calldata`。 如果此函数是合约的入口点,在由用户(通过交易)直接调用或从另一个合约调用时,那么参数的值可以直接从调用数据中获取。 如果函数是内部调用,如上述 `_swap` 函数,则参数必须存储在 `memory` 中。 从所调用合约的角度来看,`calldata` 为只读变量。 +Solidity 中的函数参数可以存储在 `memory` 或 `calldata` 中。 如果函数是合约的入口点,由用户(使用交易)或从另一个合约直接调用,那么参数的值可以直接从调用数据中获取。 如果函数是内部调用的,如上面的 `_swap`,那么参数必须存储在 `memory` 中。 从被调用合约的角度来看,`calldata` 是只读的。 -对于标量类型,如 `uint` 或 `address`,编译器可以为我们处理存储选择,但对于数组,由于它们需要更多的存储空间也消耗更多的燃料,我们需要指定要使用的存储类型。 +对于 `uint` 或 `address` 等标量类型,编译器会为我们处理存储选择,但对于更长且更昂贵的数组,我们需要指定要使用的存储类型。 ```solidity address to, @@ -1377,14 +1038,14 @@ Solidity 中的函数参数可以存入 `memory` 或者 `calldata`。 如果此 ) external virtual override ensure(deadline) returns (uint[] memory amounts) { ``` -返回值总是返回内存中。 +返回值总是返回在内存中。 ```solidity amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path); require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'); ``` -计算每次兑换时要购买的代币金额。 如果金额低于交易者愿意接受的最低金额,则回滚该交易。 +计算每次兑换中要购买的金额。 如果结果低于交易者愿意接受的最低金额,则回滚交易。 ```solidity TransferHelper.safeTransferFrom( @@ -1394,7 +1055,7 @@ Solidity 中的函数参数可以存入 `memory` 或者 `calldata`。 如果此 } ``` -最后,将初始的 ERC-20 代币转到第一个配对交易的帐户中,然后调用 `_swap`。 所有这些都发生在同一笔交易中,因此币对交易所知道任何意料之外的代币都是此次转账的一部分。 +最后,将初始 ERC-20 代币转移到第一个交易对交易所的帐户,并调用 `_swap`。 这一切都发生在同一笔交易中,因此交易对交易所知道任何意外的代币都是这次转移的一部分。 ```solidity function swapTokensForExactTokens( @@ -1413,9 +1074,9 @@ Solidity 中的函数参数可以存入 `memory` 或者 `calldata`。 如果此 } ``` -前一个函数 `swapTokensForTokens`,使交易者可以指定自己愿意提供的输入代币的准确数量和愿意接受的输出代币的最低数量。 此函数可以撤销兑换,使交易者能够指定想要的输出代币数量以及愿意支付的输入代币最大数量。 +上一个函数 `swapTokensForTokens` 允许交易者指定他愿意付出的确切输入代币数量,以及他愿意收到的最低输出代币数量。 这个函数执行反向兑换,它让交易者指定他想要的输出代币数量,以及他愿意为此支付的最大输入代币数量。 -在这两种情况下,交易者必须首先给予此外围合约一定的额度,用于转账。 +在这两种情况下,交易者都必须首先授予此外围合约一定额度,以允许它转移代币。 ```solidity function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) @@ -1488,20 +1149,20 @@ Solidity 中的函数参数可以存入 `memory` 或者 `calldata`。 如果此 IWETH(WETH).deposit{value: amounts[0]}(); assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0])); _swap(amounts, path, to); - // refund dust eth, if any + // 如有,退还剩余的零散 ETH if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]); } ``` -这四种转换方式都涉及到以太币和代币之间的交易。 唯一不同的是,我们要么从交易者处收到以太币,并使用以太币铸造包装以太币,要么从路径上的最后一个交易所收到包装以太币并销毁,然后将产生的以太币再发送给交易者。 +这四个变体都涉及 ETH 和代币之间的交易。 唯一的区别是,我们要么从交易者那里收到 ETH 并用它来铸造 WETH,要么从路径中的最后一个交易所收到 WETH 并销毁它,然后将产生的 ETH 发回给交易者。 ```solidity - // **** SWAP (supporting fee-on-transfer tokens) **** - // requires the initial amount to have already been sent to the first pair + // **** 兑换(支持转账收费的代币)**** + // 要求初始金额已发送到第一个币对 function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual { ``` -此内部函数用于兑换有转账或存储费用的代币,以解决([此问题](https://github.com/Uniswap/uniswap-interface/issues/835))。 +这是一个内部函数,用于兑换具有转账或存储费用的代币,以解决([此问题](https://github.com/Uniswap/uniswap-interface/issues/835))。 ```solidity for (uint i; i < path.length - 1; i++) { @@ -1510,16 +1171,16 @@ Solidity 中的函数参数可以存入 `memory` 或者 `calldata`。 如果此 IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)); uint amountInput; uint amountOutput; - { // scope to avoid stack too deep errors + { // 作用域以避免堆栈过深错误 (uint reserve0, uint reserve1,) = pair.getReserves(); (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0); amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput); amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput); ``` -由于有转账费用,我们不能依靠 `getAmountsOut` 函数来告诉我们每次转账完成后的金额(调用原来的 `_swap` 函数之前可以这样做)。 相反,我们必须先完成转账然后再查看我们获得的代币数量。 +由于存在转账费,我们不能依赖 `getAmountsOut` 函数来告诉我们每次转账能得到多少(就像我们调用原始 `_swap` 之前那样)。 相反,我们必须先转账,然后再看我们收到了多少代币。 -注意:理论上我们可以使用此函数而非 `_swap`,但在某些情况下(例如,如果因为在最后无法满足所需最低金额而导致转账回滚),最终会消耗更多燃料。 有转账费用的代币很少见,所以,尽管我们需要接纳它们,但不需要让所有的兑换都假定至少需要兑换一种需要收取转账费用的代币。 +注意:理论上,我们可以只使用这个函数而不是 `_swap`,但在某些情况下(例如,如果转账最终因为不满足最低要求而被回滚),这最终会花费更多的燃料。 带转账费的代币相当罕见,所以虽然我们需要兼容它们,但没有必要让所有兑换都假设它们会经过至少其中一个。 ```solidity } @@ -1598,10 +1259,10 @@ Solidity 中的函数参数可以存入 `memory` 或者 `calldata`。 如果此 } ``` -这些方式与用于普通代币的相同,区别在于它们调用的是`_swapSupportingFeeOnTransferTokens`。 +这些是用于普通代币的相同变体,但它们调用的是 `_swapSupportingFeeOnTransferTokens`。 ```solidity - // **** LIBRARY FUNCTIONS **** + // **** 库函数 **** function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) { return UniswapV2Library.quote(amountA, reserveA, reserveB); } @@ -1648,38 +1309,38 @@ Solidity 中的函数参数可以存入 `memory` 或者 `calldata`。 如果此 } ``` -这些函数仅仅是调用 [UniswapV2Library 函数](#uniswapV2library)的代理。 +这些函数只是调用 [UniswapV2Library 函数](#uniswapV2library) 的代理。 ### UniswapV2Migrator.sol {#UniswapV2Migrator} -这个合约用于将交易从旧版 v1 迁移至 v2。 目前版本已经迁移,便不再相关。 +该合约曾用于将交易所从旧的 v1 迁移到 v2。 现在它们已经被迁移,所以不再相关。 -## 程序库 {#libraries} +## 库 {#libraries} -[SafeMath 库](https://docs.openzeppelin.com/contracts/2.x/api/math)是一个文档很完备的程序库,这里便无需赘述了。 +[SafeMath 库](https://docs.openzeppelin.com/contracts/2.x/api/math) 有详细的文档,因此这里无需再作说明。 ### 数学 {#Math} -此库包含一些 Solidity 代码通常不需要的数学函数,因而它们不是 Solidity 语言的一部分。 +该库包含一些 Solidity 代码中通常不需要的数学函数,因此它们不属于该语言的一部分。 ```solidity pragma solidity =0.5.16; -// a library for performing various math operations +// 用于执行各种数学运算的库 library Math { function min(uint x, uint y) internal pure returns (uint z) { z = x < y ? x : y; } - // babylonian method (https://wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) + // 巴比伦法 (https://wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; ``` -首先赋予 x 一个大于平方根的估值(这是我们需要把 1-3 当作特殊情况处理的原因)。 +从一个高于平方根的估算值 x 开始(这就是我们需要将 1-3 作为特殊情况处理的原因)。 ```solidity while (x < z) { @@ -1687,7 +1348,7 @@ library Math { x = (y / x + x) / 2; ``` -获取一个更接近的估值,即前一个估值与我们试图找到其方根值的数值的平均数除以前一个估值。 重复计算,直到新的估值不再低于现有估值。 欲了解更多详情,[请参见此处](https://wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)。 +得到一个更接近的估算值,即上一个估算值与(我们试图求平方根的数除以上一个估算值)的平均值。 重复此过程,直到新的估算值不小于现有估算值。 更多详情,[请参阅此处](https://wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)。 ```solidity } @@ -1695,7 +1356,7 @@ library Math { z = 1; ``` -我们永远不需要零的平方根。 1、2 和 3 的平方根大致为 1(我们使用的是整数,所以忽略小数)。 +我们永远不需要零的平方根。 一、二和三的平方根约等于一(我们使用整数,所以忽略小数部分)。 ```solidity } @@ -1705,15 +1366,15 @@ library Math { ### 定点小数 (UQ112x112) {#FixedPoint} -该库处理小数,这些小数通常不属于以太坊计算的一部分。 为此,它将数值编码_x_为 _x\*2^112_。 这使我们能够使用原来的加法和减法操作码,无需更改。 +该库处理小数,这些小数通常不属于以太坊计算的一部分。 它通过将数字 _x_ 编码为 _x\*2^112_ 来实现这一点。 这使我们能够使用原始的加法和减法操作码而无需更改。 ```solidity pragma solidity =0.5.16; -// a library for handling binary fixed point numbers (https://wikipedia.org/wiki/Q_(number_format)) +// 用于处理二进制定点数的库 (https://wikipedia.org/wiki/Q_(number_format)) -// range: [0, 2**112 - 1] -// resolution: 1 / 2**112 +// 范围:[0, 2**112 - 1] +// 精度:1 / 2**112 library UQ112x112 { uint224 constant Q112 = 2**112; @@ -1722,27 +1383,27 @@ library UQ112x112 { `Q112` 是 1 的编码。 ```solidity - // encode a uint112 as a UQ112x112 + // 将 uint112 编码为 UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { - z = uint224(y) * Q112; // never overflows + z = uint224(y) * Q112; // 永不溢出 } ``` -因为 y 是`uint112`,所以最多可以是 2^112-1。 该数值还可以编码为 `UQ112x112`。 +因为 y 是 `uint112`,所以其最大值为 2^112-1。 该数字仍然可以编码为 `UQ112x112`。 ```solidity - // divide a UQ112x112 by a uint112, returning a UQ112x112 + // 将一个 UQ112x112 除以一个 uint112,返回一个 UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { z = x / uint224(y); } } ``` -如果我们需要两个 `UQ112x112` 值相除,结果不需要再乘以 2^112。 因此,我们为分母取一个整数。 我们需要使用类似的技巧来做乘法,但不需要将 `UQ112x112` 的值相乘。 +如果我们将两个 `UQ112x112` 值相除,结果将不再乘以 2^112。 因此我们用一个整数作为分母。 我们本需要使用类似的技巧来进行乘法运算,但我们不需要对 `UQ112x112` 值进行乘法运算。 ### UniswapV2Library {#uniswapV2library} -此库仅被外围合约使用 +该库仅由外围合约使用 ```solidity pragma solidity >=0.5.0; @@ -1754,7 +1415,7 @@ import "./SafeMath.sol"; library UniswapV2Library { using SafeMath for uint; - // returns sorted token addresses, used to handle return values from pairs sorted in this order + // 返回排序后的代币地址,用于处理以此顺序排序的交易对的返回值 function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { require(tokenA != tokenB, 'UniswapV2Library: IDENTICAL_ADDRESSES'); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); @@ -1762,25 +1423,25 @@ library UniswapV2Library { } ``` -按地址对这两个代币排序,所以我们将能够获得相应的配对交易地址。 这很有必要,否则就会出现两种可能性,一种是参数 A、B,而另一种是参数 B、A,这导致两次交易而非一次。 +按地址对两个代币进行排序,这样我们就能获得它们的交易对交易所的地址。 这是必要的,因为否则我们会有两种可能性,一种是参数 A,B,另一种是参数 B,A,这会导致两个交易所而不是一个。 ```solidity - // calculates the CREATE2 address for a pair without making any external calls + // 无需任何外部调用即可计算交易对的 CREATE2 地址 function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) { (address token0, address token1) = sortTokens(tokenA, tokenB); pair = address(uint(keccak256(abi.encodePacked( hex'ff', factory, keccak256(abi.encodePacked(token0, token1)), - hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // init code hash + hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // 初始代码哈希 )))); } ``` -此函数计算两种代币的配对交易地址。 此合约使用 [CREATE2 操作码](https://eips.ethereum.org/EIPS/eip-1014)创建,如果我们知道它使用的参数,我们可以使用相同的算法计算地址。 这比查询工厂便宜得多,而且 +此函数计算两种代币的交易对交易所的地址。 该合约是使用 [CREATE2 操作码](https://eips.ethereum.org/EIPS/eip-1014) 创建的,所以如果我们知道它使用的参数,就可以使用相同的算法计算地址。 这比询问工厂要便宜得多,而且 ```solidity - // fetches and sorts the reserves for a pair + // 获取并排序交易对的储备金 function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) { (address token0,) = sortTokens(tokenA, tokenB); (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves(); @@ -1788,10 +1449,10 @@ library UniswapV2Library { } ``` -此函数返回配对交易所拥有的两种代币的储备金。 请注意,它可以任意顺序接收代币并将代币排序,以便内部使用。 +此函数返回交易对交易所拥有的两种代币的储备金。 请注意,它可以按任意顺序接收代币,并为内部使用对其进行排序。 ```solidity - // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset + // 给定一定数量的某种资产和交易对储备金,返回等值的另一种资产的数量 function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) { require(amountA > 0, 'UniswapV2Library: INSUFFICIENT_AMOUNT'); require(reserveA > 0 && reserveB > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY'); @@ -1799,14 +1460,14 @@ library UniswapV2Library { } ``` -如果不涉及交易费用的话,此函数将返回给你代币 A 兑换得到的代币 B。 此计算考虑到转账可能会改变汇率。 +如果没有手续费,此函数会给出用代币 A 兑换代币 B 的数量。 此计算考虑到转账会改变汇率。 ```solidity - // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset + // 给定某种资产的输入数量和交易对储备金,返回另一种资产的最大输出数量 function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) { ``` -如果使用配对交易没有手续费,上述 `quote` 函数非常有效。 然而,如果有 0.3% 的手续费,你实际得到的金额就会低于此值。 此函数可以计算缴纳交易费用后的金额。 +如果使用交易对交易所没有手续费,上面的 `quote` 函数会很好用。 但是,如果有 0.3% 的兑换费,你实际得到的金额会更少。 此函数计算扣除兑换费后的金额。 ```solidity @@ -1819,10 +1480,10 @@ library UniswapV2Library { } ``` -Solidity 本身不能进行小数计算,所以不能简单地将金额乘以 0.997。 作为替代方法,我们将分子乘以 997,分母乘以 1000,也能取得相同的效果。 +Solidity 本身不处理小数,所以我们不能直接将金额乘以 0.997。 作为替代,我们将分子乘以 997,分母乘以 1000,以达到相同的效果。 ```solidity - // given an output amount of an asset and pair reserves, returns a required input amount of the other asset + // 给定某种资产的输出数量和交易对储备金,返回另一种资产所需的输入数量 function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) { require(amountOut > 0, 'UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'UniswapV2Library: INSUFFICIENT_LIQUIDITY'); @@ -1832,11 +1493,11 @@ Solidity 本身不能进行小数计算,所以不能简单地将金额乘以 0 } ``` -此函数大致完成相同的功能,但它会获取输出数额并提供输入代币的数量。 +此函数的作用大致相同,但它获取输出金额并提供输入金额。 ```solidity - // performs chained getAmountOut calculations on any number of pairs + // 对任意数量的交易对执行链式 getAmountOut 计算 function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) { require(path.length >= 2, 'UniswapV2Library: INVALID_PATH'); amounts = new uint[](path.length); @@ -1847,7 +1508,7 @@ Solidity 本身不能进行小数计算,所以不能简单地将金额乘以 0 } } - // performs chained getAmountIn calculations on any number of pairs + // 对任意数量的交易对执行链式 getAmountIn 计算 function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) { require(path.length >= 2, 'UniswapV2Library: INVALID_PATH'); amounts = new uint[](path.length); @@ -1860,18 +1521,18 @@ Solidity 本身不能进行小数计算,所以不能简单地将金额乘以 0 } ``` -在需要进行数次配对交易时,可以通过这两个函数获得相应数值。 +当需要经过多个交易对交易所时,这两个函数用于确定数值。 -### 转账帮助 {#transfer-helper} +### 转账助手 {#transfer-helper} -[此库](https://github.com/Uniswap/uniswap-lib/blob/master/contracts/libraries/TransferHelper.sol)添加了围绕 ERC-20 和以太坊转账的成功检查,并以同样的方式处理回滚和返回 `false` 值。 +[该库](https://github.com/Uniswap/uniswap-lib/blob/master/contracts/libraries/TransferHelper.sol) 在 ERC-20 和以太坊转账周围添加了成功检查,以相同的方式处理回滚和返回 `false` 值。 ```solidity // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.6.0; -// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false +// 与 ERC20 代币交互和发送 ETH 的辅助方法,这些方法不总是一致地返回 true/false library TransferHelper { function safeApprove( address token, @@ -1883,10 +1544,10 @@ library TransferHelper { ``` -我们可以通过以下两种方式调用不同的合约: +我们可以通过以下两种方式之一调用另一个合约: -- 使用一个接口定义创建函数调用 -- 使用[应用程序二进制接口 (ABI)](https://docs.soliditylang.org/en/v0.8.3/abi-spec.html)“手动”创建调用。 这是代码作者的决定。 +- 使用接口定义创建函数调用 +- “手动”使用[应用程序二进制接口 (ABI)](https://docs.soliditylang.org/en/v0.8.3/abi-spec.html) 创建调用。 这是代码作者决定要做的事。 ```solidity require( @@ -1896,7 +1557,7 @@ library TransferHelper { } ``` -为了与之前的 ERC-20 标准创建的代币反向兼容,ERC-20 调用失败可能有两种情况:回退(在这种情况下 `success` 即是 `false`),或者调用成功但返回 `false` 值(在这种情况下有输出数据,将其解码为布尔值,会得到 `false`)。 +为了向后兼容在 ERC-20 标准之前创建的代币,ERC-20 调用可能会因回滚(此时 `success` 为 `false`)而失败,也可能成功但返回 `false` 值(此时有输出数据,如果将其解码为布尔值,则得到 `false`)。 ```solidity @@ -1915,7 +1576,7 @@ library TransferHelper { } ``` -此函数实现了 [ERC-20 的转账功能](https://eips.ethereum.org/EIPS/eip-20#transfer),可使一个帐户花掉由不同帐户所提供的额度。 +该函数实现了 [ERC-20 的 transfer 功能](https://eips.ethereum.org/EIPS/eip-20#transfer),允许一个帐户支出另一个帐户提供的额度。 ```solidity @@ -1934,7 +1595,7 @@ library TransferHelper { } ``` -此函数实现了 [ERC-20 的 transferFrom 功能](https://eips.ethereum.org/EIPS/eip-20#transferfrom),可使一个帐户花掉由不同帐户所提供的额度。 +该函数实现了 [ERC-20 的 transferFrom 功能](https://eips.ethereum.org/EIPS/eip-20#transferfrom),允许一个帐户支出另一个帐户提供的额度。 ```solidity @@ -1945,10 +1606,12 @@ library TransferHelper { } ``` -此函数将以太币转至一个帐户。 任何对不同合约的调用都可以尝试发送以太币。 因为我们实际上不需要调用任何函数,就不需要在调用中发送任何数据。 +此函数将以太币转入一个帐户。 对另一个合约的任何调用都可以尝试发送以太币。 因为我们实际上不需要调用任何函数,所以我们不随调用发送任何数据。 ## 结论 {#conclusion} -本篇文章较长,约有 50 页。 如果你已读到此处,恭喜你! 希望你现在已经了解编写真实应用程序(相对于短小的示例程序)时的考虑因素,并且能够更好地为自己的用例编写合约。 +这是一篇长文,大约 50 页。 如果你读到了这里,恭喜! 希望到目前为止,你已经理解了编写实际应用程序(而不是简短的示例程序)时的注意事项,并能更好地为自己的用例编写合约。 + +现在去写一些有用的东西,让我们惊艳吧。 -现在去写点实用的东西吧,希望你能给我们惊喜。 +[点击此处查看我的更多作品](https://cryptodocguy.pro/)。 From b1e9aa48b05deacfcca8a9d77c5ca305449c275e Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:15:07 -0800 Subject: [PATCH 157/581] update(i18n): public/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md --- .../index.md | 144 ++++++++++++------ 1 file changed, 96 insertions(+), 48 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md b/public/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md index af2e8e5c389..1807d4e975f 100644 --- a/public/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md +++ b/public/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md @@ -1,13 +1,8 @@ --- -title: 通过Solidity智能合约转移和批准ERC-20通证 -description: 如何使用智能合约与使用 Solidity 语言的代币进行交互 +title: 通过 Solidity 智能合约转移和批准 ERC-20 代币 +description: 使用 Solidity 构建一个处理 ERC-20 代币转账和批准的 DEX 智能合约。 author: "jdourlens" -tags: - - "智能合约" - - "代币" - - "solidity" - - "入门指南" - - "erc-20 (一种以太坊代币)" +tags: [ "智能合同", "通证", "Solidity", "erc-20" ] skill: intermediate lang: zh published: 2020-04-07 @@ -16,14 +11,14 @@ sourceUrl: https://ethereumdev.io/transfers-and-approval-or-erc20-tokens-from-a- address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" --- -在之前的教程中,我们学习了[对以太坊区块链上基于 Solidity 的 ERC-20 通证的剖析](/developers/tutorials/understand-the-erc-20-token-smart-contract/)。 在本文中,我们将看到如何借助 Solidity 语言使用智能合约来与通证进行交互。 +在之前的教程中,我们研究了以太坊区块链上[用 Solidity 编写的 ERC-20 代币的结构](/developers/tutorials/understand-the-erc-20-token-smart-contract/)。 在本文中,我们将了解如何使用 Solidity 语言通过智能合约与代币进行交互。 -对于此智能合约,我们将创建一个真正虚拟的去中心化交易所,用户可以在这里使用我们新部署的[ERC-20 通证](/developers/docs/standards/tokens/erc-20/)进行以太坊交易。 +对于此智能合约,我们将创建一个示例去中心化交易所,用户可以用以太币交易我们新部署的 [ERC-20 代币](/developers/docs/standards/tokens/erc-20/)。 -对于此教程,我们将使用我们在上一个教程中编写的代码作为基础。 我们的 DEX 将在它的构造函数中实例化一个合约中的实例,并进行以下操作: +在本教程中,我们将使用在上一篇教程中编写的代码作为基础。 我们的 DEX 将在其构造函数中实例化一个合约实例,并执行以下操作: -- 将通证换成 ETH -- 把 ETH 换成通证 +- 将代币兑换成 ETH +- 将 ETH 兑换成代币 我们将通过添加简单的 ERC20 代码库来开启去中心化交易所代码: @@ -46,9 +41,66 @@ interface IERC20 { } +contract ERC20Basic is IERC20 { + + string public constant name = "ERC20Basic"; + string public constant symbol = "ERC"; + uint8 public constant decimals = 18; + + + mapping(address => uint256) balances; + + mapping(address => mapping (address => uint256)) allowed; + + uint256 totalSupply_ = 10 ether; + + + constructor() { + balances[msg.sender] = totalSupply_; + } + + function totalSupply() public override view returns (uint256) { + return totalSupply_; + } + + function balanceOf(address tokenOwner) public override view returns (uint256) { + return balances[tokenOwner]; + } + + function transfer(address receiver, uint256 numTokens) public override returns (bool) { + require(numTokens <= balances[msg.sender]); + balances[msg.sender] = balances[msg.sender]-numTokens; + balances[receiver] = balances[receiver]+numTokens; + emit Transfer(msg.sender, receiver, numTokens); + return true; + } + + function approve(address delegate, uint256 numTokens) public override returns (bool) { + allowed[msg.sender][delegate] = numTokens; + emit Approval(msg.sender, delegate, numTokens); + return true; + } + + function allowance(address owner, address delegate) public override view returns (uint) { + return allowed[owner][delegate]; + } + + function transferFrom(address owner, address buyer, uint256 numTokens) public override returns (bool) { + require(numTokens <= balances[owner]); + require(numTokens <= allowed[owner][msg.sender]); + + balances[owner] = balances[owner]-numTokens; + allowed[owner][msg.sender] = allowed[owner][msg.sender]-numTokens; + balances[buyer] = balances[buyer]+numTokens; + emit Transfer(owner, buyer, numTokens); + return true; + } +} + + ``` -我们新的 DEX 智能合约将部署 ERC-20 并生成总量供应: +我们新的 DEX 智能合约将部署 ERC-20 并获得全部代币供应: ```solidity contract DEX { @@ -63,11 +115,11 @@ contract DEX { } function buy() payable public { - // TODO + // 待办 } function sell(uint256 amount) public { - // TODO + // 待办 } } @@ -75,14 +127,14 @@ contract DEX { 所以我们现在有了我们的 DEX,它所有的代币储备都已准备好。 合约有两个函数: -- `buy`:用户可以发送 ETH 并在交易所中获得通证 -- `sell`:用户可以决定发送通证换回 ETH +- `buy`:用户可以发送 ETH 以换取相应的代币 +- `sell`:用户可以发送代币以换回 ETH ## buy 函数 {#the-buy-function} -让我们编写 buy 函数的代码。 我们首先需要检查消息中包含的 ETH 数量,并验证合约中是否拥有足够的通证,以及消息中是否有一些 ETH。 如果合约拥有足够的通证,它将会向用户发送通证数量,并发出`Bought`事件。 +让我们编写 buy 函数的代码。 我们首先需要检查消息中包含的 ETH 数量,并验证合约拥有足够的代币,以及消息中包含一些 ETH。 如果合约拥有足够的代币,它会向用户发送相应数量的代币,并触发 `Bought` 事件。 -请注意,如果我们在出错的情况下调用所需的函数,则发送的 ETH 将会直接还原并退回给用户。 +请注意,如果在出错的情况下调用 `require` 函数,发送的 ETH 将被直接还原并退还给用户。 为简单起见,我们只需将 1 个代币换成 1 个 Wei。 @@ -90,24 +142,20 @@ contract DEX { function buy() payable public { uint256 amountTobuy = msg.value; uint256 dexBalance = token.balanceOf(address(this)); - require(amountTobuy > 0, "You need to send some ether"); - require(amountTobuy <= dexBalance, "Not enough tokens in the reserve"); + require(amountTobuy > 0, "你需要发送一些 ETH"); + require(amountTobuy <= dexBalance, "储备中的代币不足"); token.transfer(msg.sender, amountTobuy); emit Bought(amountTobuy); } - -Text -XPath: /pre[3]/code - ``` -在购买成功的情况下,我们应会在交易中看到两个事件:通证`Transfer`和`Bought`事件。 +如果购买成功,我们应该能在交易中看到两个事件:代币 `Transfer` 事件和 `Bought` 事件。 -![交易中的两个事件:Transfer和Bought](./transfer-and-bought-events.png) +![交易中的两个事件:Transfer 和 Bought](./transfer-and-bought-events.png) ## sell 函数 {#the-sell-function} -负责卖出的函数将首先要求用户事先通过调用 approve 函数来批准金额。 要批准转账,用户需要调用由去中心化交易所 (DEX) 实例化的 ERC20Basic 代币。 为此,首先需要调用去中心化交易所 (DEX) 合约的 `token()` 函数来检索 DEX 部署名为 `token` 的 ERC20Basic 合约的地址。 然后,我们需要在会话中创建该合约的实例并调用它的 `approve` 函数。 接着,我们可以调用 DEX 的 `sell` 函数并将我们的代币换成以太币。 例如,该过程在交互式 Brownie 会话中显示如下: +负责卖出的函数将首先要求用户事先调用 `approve` 函数来批准金额。 要批准转账,用户需要调用由去中心化交易所 (DEX) 实例化的 ERC20Basic 代币。 为此,首先需要调用去中心化交易所 (DEX) 合约的 `token()` 函数来检索 DEX 部署名为 `token` 的 ERC20Basic 合约的地址。 然后,我们在会话中创建该合约的实例,并调用其 `approve` 函数。 然后我们就可以调用 DEX 的 `sell` 函数,将我们的代币兑换回以太币。 例如,该过程在交互式 Brownie 会话中显示如下: ```python #### Python in interactive brownie console... @@ -115,44 +163,44 @@ XPath: /pre[3]/code # 部署 DEX dex = DEX.deploy({'from':account1}) -# 调用buy函数将ETH换成代币 -# 1e18 是 1 个以 wei 计价的ETH +# 调用 buy 函数,用 ETH 兑换代币 +# 1e18 是 1 个以 wei 为单位的 ETH dex.buy({'from': account2, 1e18}) # 获取 ERC20 代币的部署地址 -# 在 DEX 合约创建期间部署的 -# dex.token() 返回token的部署地址 +# 该代币在 DEX 合约创建时部署 +# dex.token() 返回代币的部署地址 token = ERC20Basic.at(dex.token()) -# 调用token的approve函数 -# 批准dex地址为spender -# 以及允许花费你的多少代币 +# 调用代币的 approve 函数 +# 批准 DEX 地址为 spender +# 以及允许它花费的代币数量 token.approve(dex.address, 3e18, {'from':account2}) ``` -然后当调用 sell 函数时,我们会检查从调用者地址到合约地址的转账是否成功,然后将以太币发送回调用者地址。 +然后当调用 `sell` 函数时,我们会检查从调用者地址到合约地址的转账是否成功,然后将以太币发送回调用者地址。 ```solidity function sell(uint256 amount) public { - require(amount > 0, "You need to sell at least some tokens"); + require(amount > 0, "你至少需要卖出一些代币"); uint256 allowance = token.allowance(msg.sender, address(this)); - require(allowance >= amount, "Check the token allowance"); + require(allowance >= amount, "检查代币授权额度"); token.transferFrom(msg.sender, address(this), amount); payable(msg.sender).transfer(amount); emit Sold(amount); } ``` -如果一切正常,您应该在交易中看到两个事件(`Transfer` 和 `Sold`),并且代币余额和以太坊余额已更新。 +如果一切顺利,你应该能在交易中看到 2 个事件(一个 `Transfer` 事件和一个 `Sold` 事件),并且你的代币余额和 ETH 余额也会更新。 ![交易中的两个事件:Transfer 和 Sold](./transfer-and-sold-events.png) -在本教程中,我们了解到如何检查 ERC-20 代币的余额和余量,以及如何使用接口调用 ERC20 智能合约的 `Transfer` 和 `TransferFrom` 函数。 +在本教程中,我们了解了如何检查 ERC-20 代币的余额和授权额度,以及如何使用接口调用 ERC20 智能合约的 `Transfer` 和 `TransferFrom` 函数。 -完成交易后,我们即会提供一个 JavaScript 教程[来等待并获取在您的合约中进行的交易的详细信息](https://ethereumdev.io/waiting-for-a-transaction-to-be-mined-on-ethereum-with-js/),还会提供[教程来解码由代币转账或任何其他事件生成的事件](https://ethereumdev.io/how-to-decode-event-logs-in-javascript-using-abi-decoder/),但前提是您有应用程序二进制接口。 +完成交易后,我们有一个 JavaScript 教程,介绍如何 [等待并获取与你的合约进行的交易相关的详细信息](https://ethereumdev.io/waiting-for-a-transaction-to-be-mined-on-ethereum-with-js/);只要你有 ABI,还可以参考另一个 [教程,学习解码由代币转账或任何其他事件生成的事件](https://ethereumdev.io/how-to-decode-event-logs-in-javascript-using-abi-decoder/)。 下面是本教程的完整代码: @@ -190,11 +238,11 @@ contract ERC20Basic is IERC20 { constructor() { - balances[msg.sender] = totalSupply_; + balances[msg.sender] = totalSupply_; } function totalSupply() public override view returns (uint256) { - return totalSupply_; + return totalSupply_; } function balanceOf(address tokenOwner) public override view returns (uint256) { @@ -247,16 +295,16 @@ contract DEX { function buy() payable public { uint256 amountTobuy = msg.value; uint256 dexBalance = token.balanceOf(address(this)); - require(amountTobuy > 0, "You need to send some ether"); - require(amountTobuy <= dexBalance, "Not enough tokens in the reserve"); + require(amountTobuy > 0, "你需要发送一些 ETH"); + require(amountTobuy <= dexBalance, "储备中的代币不足"); token.transfer(msg.sender, amountTobuy); emit Bought(amountTobuy); } function sell(uint256 amount) public { - require(amount > 0, "You need to sell at least some tokens"); + require(amount > 0, "你至少需要卖出一些代币"); uint256 allowance = token.allowance(msg.sender, address(this)); - require(allowance >= amount, "Check the token allowance"); + require(allowance >= amount, "检查代币授权额度"); token.transferFrom(msg.sender, address(this), amount); payable(msg.sender).transfer(amount); emit Sold(amount); From 0f01a15d2e2dbe7d5780ecbcdfc17e68e3b388e9 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:15:09 -0800 Subject: [PATCH 158/581] update(i18n): public/content/translations/zh/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md --- .../how-to-use-tellor-as-your-oracle/index.md | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/zh/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md index b96fd8531e6..7f6e9455c13 100644 --- a/public/content/translations/zh/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md +++ b/public/content/translations/zh/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md @@ -3,10 +3,7 @@ title: 如何将 Tellor 设置为你的预言机 description: 将 Tellor 预言机集成到协议中的指南 author: "Tellor" lang: zh -tags: - - "solidity" - - "智能合约" - - "预言机" +tags: [ "Solidity", "智能合同", "预言机" ] skill: beginner published: 2021-06-29 source: Tellor Docs @@ -15,7 +12,7 @@ sourceUrl: https://docs.tellor.io/tellor/ 小测验:你的协议即将完成,但它需要一个预言机来访问链下数据......你该怎么做? -## (软)前提条件 {#soft-prerequisites} +## (软)先决条件 {#soft-prerequisites} 这篇文章旨在解释如何让访问预言机数据馈送变得简单易行。 这就是说,我们假定你具备一定的编码技能水平,下文侧重于讲述预言机方面。 @@ -29,7 +26,7 @@ Tellor 是一种可供直接实现的开源预言机。 本初学者教程旨在 ## 概述 {#overview} -Tellor 是一种预言机系统,参与者可以在该系统中请求链下数据点(例如 BTC/USD)的值,提供者相互竞争将该值添加到链上数据库中,使得所有以太坊智能合约都可以访问该值。 该数据库的输入由质押提供者网络提供保护。 Tellor 利用加密经济激励机制,奖励提供者诚实的数据提交行为,并通过发行 Tellor 的代币、Tribute (TRB) 和争议机制来惩罚不良行为者。 +Tellor 是一种预言机系统,参与者可以在该系统中请求链下数据点(例如 BTC/USD)的值,提供者相互竞争将该值添加到链上数据库中,使得所有以太坊智能合约都可以访问该值。 该数据库的输入由质押提供者网络提供保护。 Tellor 利用加密经济激励机制,奖励提供者诚实的数据提交行为,并通过发行 Tellor 的代币 Tributes (TRB) 和争议机制来惩罚不良行为者。 在本教程中,我们将介绍: @@ -37,19 +34,19 @@ Tellor 是一种预言机系统,参与者可以在该系统中请求链下数 - 讲解一个简单示例。 - 列出目前可以测试 Tellor 的网络的测试网地址。 -## 使用 Tellor {#usingtellor} +## UsingTellor {#usingtellor} -首先安装一些基本工具,以便将 Tellor 作为预言机。 使用[此软件包](https://github.com/tellor-io/usingtellor)安装 Tellor 用户合约: +首先安装一些基本工具,以便将 Tellor 作为预言机。 使用[此软件包](https://github.com/tellor-io/usingtellor)来安装 Tellor 用户合约: `npm install usingtellor` -安装完成后,将允许你的合约继承“UsingTellor”合约的函数。 +安装完成后,将允许你的合约继承 'UsingTellor' 合约的函数。 很好! 既然你已经准备好工具了,我们来完成一个简单的练习来获取比特币价格: ### BTC/USD 示例 {#btcusd-example} -继承 UsingTellor 合约,将 Tellor 的地址作为构造函数的参数: +继承 UsingTellor 合约,并将 Tellor 地址作为构造函数参数传入: 下面是一个示例: @@ -59,7 +56,7 @@ import "usingtellor/contracts/UsingTellor.sol"; contract PriceContract is UsingTellor { uint256 public btcPrice; - //This Contract now has access to all functions in UsingTellor + //此合约现在可以访问 UsingTellor 中的所有函数 constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {} @@ -77,8 +74,8 @@ function setBtcPrice() public { } ``` -完整的合约地址列表参见 [这里](https://docs.tellor.io/tellor/the-basics/contracts-reference)。 +如需完整的合约地址列表,请参阅[此处](https://docs.tellor.io/tellor/the-basics/contracts-reference)。 -为了便于使用,UsingTellor 合约库带有一个[Tellor Playground](https://github.com/tellor-io/TellorPlayground) 合约的版本以便于集成。 请参阅[此处](https://github.com/tellor-io/sampleUsingTellor#tellor-playground)获取实用函数的列表。 +为方便使用,UsingTellor 代码库附带了 [Tellor Playground](https://github.com/tellor-io/TellorPlayground) 合约的一个版本,以便于集成。 有关实用函数列表,请参阅[此处](https://github.com/tellor-io/sampleUsingTellor#tellor-playground)。 -要更加可靠地实现 Tellor 预言机,请点击[此处](https://github.com/tellor-io/usingtellor/blob/master/README.md)查看可用函数的完整列表。 +要更稳健地实现 Tellor 预言机,请查看[此处](https://github.com/tellor-io/usingtellor/blob/master/README.md)的可用函数完整列表。 From 6961da06b419f0f6978226a479abe4b5d70ad712 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:15:13 -0800 Subject: [PATCH 159/581] update(i18n): public/content/translations/zh/developers/tutorials/send-token-ethersjs/index.md --- .../tutorials/send-token-ethersjs/index.md | 72 +++++++++---------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/public/content/translations/zh/developers/tutorials/send-token-ethersjs/index.md b/public/content/translations/zh/developers/tutorials/send-token-ethersjs/index.md index 649ce0790f5..fda070b65f7 100644 --- a/public/content/translations/zh/developers/tutorials/send-token-ethersjs/index.md +++ b/public/content/translations/zh/developers/tutorials/send-token-ethersjs/index.md @@ -1,27 +1,25 @@ --- title: 使用 ethers.js 发送代币 -description: 使用 ethers.js 发送代币的初学者入门指南。 +description: 使用 ethers.js 发送代币的初学者友好指南。 author: Kim YongJun -tags: - - "ETHERS.JS" - - "ERC-20" - - "代币" +tags: [ "ETHERS.JS", "ERC-20", "代币" ] skill: beginner lang: zh published: 2021-04-06 --- -## 使用 ethers.js(5.0) 发送代币 {#send-token} +## 使用 ethers.js (5.0) 发送代币 {#send-token} -### 在本教程中,您将学习如何: {#you-learn-about} +### 在本教程中,你将学习如何:{#you-learn-about} - 导入 ethers.js -- 进行代币转账 +- 转账代币 - 根据网络流量情况设置燃料价格 -### 入门指南 {#to-get-started} +### 开始上手 {#to-get-started} -开始前,我们必须先将 ethers.js 库导入我们的 javascript 中 包括 ethers.js(5.0) +开始前,我们必须先将 ethers.js 程序库导入到我们的 javascript 中 +包含 ethers.js (5.0) ### 安装 {#install-ethersjs} @@ -29,16 +27,16 @@ published: 2021-04-06 /home/ricmoo> npm install --save ethers ``` -浏览器版 ES6 +浏览器中的 ES6 ```html ``` -浏览器版 ES3(UMD) +浏览器中的 ES3 (UMD) ```html