Reach 是用于构建去中心化应用程序(DApp)的专用语言。 您能在这里找到所有您需要了解的有关 Reach 的内容。
首先,欢迎您关注微信公众号
(目前概述部份、教程部份、指南部份已有中文翻译版,建议与原文互相参考学习,其他部份可以点击链接访问原文网页)
- 概述部分简要介绍了 Reach 的基本思想。我们建议您在深入了解之前可以先阅读概述。如果你已经有区块链开发的经验,我们推荐您阅读概述以及 Reach 和其他开发平台的比较。
- 教程部份将指导您从头开始创建一个 DApp 。这部份是专门为新手设计的,它可以让您快速上手 Reach。
- 指南部份接续概述部份,讨论了一系列关于 Reach 的关键思想和概念,讲解了 Reach 语言的逻辑和原理。
- 工作坊部份接续教程部份,提供了一些自学项目,让您可以通过 Reach 实践从而精通 Dapp 的设计。每个项目都将包含一份完整的解决案例,因此它也是在 Reach 中构建各类 Dapp 的模版,演示了怎么利用 Reach ,以及 Reach 程序员的设计思想。
- 最后,参考资料部份提供了关于 Reach 各个方面的详尽技术参考。
如果你试图查找某些信息,除了本页下方的列表外,也可以参考以下途径:
- 查阅索引和目录。
- 在 Discord 社群上发起讨论。
- 使用 GitHub 问题跟踪器回报问题。
这个网站的源代码可以在GitHub上找到;欢迎提出改进和问题报告!
| 内容列表 |
|---|
| 1 概述 |
| 1.1 去中心化应用 |
| 1.2 一个最小 reach 程序 |
| 1.3 编译 |
| 1.4 验证 |
| 1.5 界面 |
| 1.6 执行 |
| 1.7 web应用 |
| 1.8 后续步骤 |
| 2 教程 |
| 2.1 安装及初始化 |
| 2.2 创建脚手架并进行相关设置 |
| 2.3 石头剪刀布 |
| 2.4 打赌与下注 |
| 2.5 信任和约定 |
| 2.6 超时问题的处理 |
| 2.7 平局则继续比赛直至判断胜负 |
| 2.8 交互及自主运行 |
| 2.9 网页交互 |
| 2.10 未来展望 |
| 3 指南 |
| 3.1在Windows上使用Reach |
| 3.2Reach如何使用版本号? |
| 3.3 Reach开发与Solidity开发相比如何? |
| 3.3.1 Solidity开发 |
| 3.3.2 Reach开发 |
| 3.3.3 结论 |
| 3.4 验证方式和验证内容 |
| 3.5 查找并使用循环不变量 |
| 3.6 选择部署模式 |
| 3.7 不参与:什么是不参与,如何防范 |
| 3.8 去中心化应用中的决定论、同时性和选择性 |
| 3.9 去中心化应用中的竞速不确定性 |
| 3.10 建立去中心化的抽象概念 |
| 3.11 在浏览器中测试Reach程序 |
| 3.11.1 Algorand |
| 3.11.1.1 Algorand:助记词 |
| 3.11.1.2 算法:算法签名 |
| 3.12 Reach 的局限性和未来的发展路线? |
| 3.13 Reach是如何工作的? |
| 3.14 IDE/文本编辑器支持 |
| 4 工作坊 |
| 4.1 工作坊:哈希锁 |
| 4.1.1 问题分析 |
| 4.1.2 数据定义 |
| 4.1.3 通信建设 |
| 4.1.4 断言插入 |
| 4.1.5 互动介绍 |
| 4.1.6 部署决定 |
| 4.1.7 讨论 |
| 4.2 工作坊:中继账户 |
| 4.2.1 问题分析 |
| 4.2.2 数据定义 |
| 4.2.3 通信建设 |
| 4.2.4 断言插入 |
| 4.2.5 互动介绍 |
| 4.2.6 部署决定 |
| 4.2.7 讨论和下一步 |
| 4.3 工作坊:信托基金 |
| 4.3.1 问题分析 |
| 4.3.2 数据定义 |
| 4.3.3 通信建设 |
| 4.3.4 断言插入 |
| 4.3.5 互动介绍 |
| 4.3.6 部署决定 |
| 4.3.7 讨论和下一步行动 |
| 4.4 工作坊:害怕错过(FOMO) |
| 4.4.1 问题分析 |
| 4.4.2 数据定义 |
| 4.4.3 通信建设 |
| 4.4.4 断言插入 |
| 4.4.5 互动介绍 |
| 4.4.6 部署决定 |
| 4.4.7 讨论和下一步 |
| 4.5 工作坊:害怕错过 |
| 4.5.1 问题分析 |
| 4.5.2 数据定义 |
| 4.5.3 通信建设 |
| 4.5.4 断言插入 |
| 4.5.5 互动介绍 |
| 4.5.6 部署决定 |
| 4.5.7 讨论和下一步 |
| 4.6 工作坊:公平的剪刀石头布 |
| 4.7 工作坊:高效的石头剪刀布 |
| 4.8 工作坊:租赁协议 |
| 4.9 工作坊:同步游戏 |
| 4.10 工作坊:监护人账户 |
| 4.11 工作坊:定期付款 |
| 4.12 工作坊:Nim |
| 4.13 工作坊:Tic-Tac-Toe |
| 4.14 工作坊:担保贷款 |
| 4.15 工作坊:比赛 |
| 4.16 工作坊 : 胆小 |
| 4.17 工作坊:人气比赛 |
| 4.18 工作坊:简单的NFT |
| 4.19 工作坊:抽奖 |
| 4.20 工作坊:寻租 |
| 4.21 工作坊:预言机 |
| 4.22 工作坊:定时英式拍卖 |
| 4.23 工作坊:众筹 |
| 4.24 工作坊:众筹 |
| 5 参考资料 |
| 5.1 安装 |
| 5.2 用法 |
| 5.2.1 reach compile |
| 5.2.2 reach init |
| 5.2.3 Reach run |
| 5.2.4 Reach down |
| 5.2.5 Reach scaffold |
| 5.2.6 Reach react |
| 5.2.7 Reach devnet |
| 5.2.8 Reach upgrade |
| 5.2.9 Reach update |
| 5.2.10 Reach version |
| 5.2.11 Reach hash |
| 5.3 语言模型 |
| 5.3.1 评估模型 |
| 5.3.2 编译模型 |
| 5.3.3 语法模型 |
| 5.4 程序 |
| 5.4.1 有效期 |
| 5.4.1.1 安保级别和范围 |
| 5.4.2 模块 |
| 5.4.2.1 声明 |
| 5.4.2.1.1 export |
| 5.4.2.1.2 import |
| 5.4.2.2 表达式 |
| 5.4.2.2.1 Reach app |
| 5.4.2.2.2 参与建设者 |
| 5.4.3 步骤 |
| 5.4.3.1 声明 |
| 5.4.3.1.1 only 和 each |
| 5.4.3.1.2 publish、pay、when 和 timeout |
| 5.4.3.1.3 fork |
| 5.4.3.1.4 wait |
| 5.4.3.1.5 exit |
| 5.4.3.2 表达 |
| 5.4.3.2.1 race |
| 5.4.3.2.2 unknownable |
| 5.4.3.2.3 closeto |
| 5.4.4 本地步骤 |
| 5.4.4.1 声明 |
| 5.4.4.2 表达方式 |
| 5.4.4.2.1 this |
| 5.4.4.2.2 interact |
| 5.4.4.2.3 assume |
| 5.4.4.2.4 fail |
| 5.4.4.2.5 declassify |
| 5.4.4.2.6 makeCommitment |
| 5.4.5 共识步骤 |
| 5.4.5.1 声明 |
| 5.4.5.1.1 commit |
| 5.4.5.1.2 only 与 each |
| 5.4.5.1.3 Partivipant.set 和 .set |
| 5.4.5.1.4 while |
| 5.4.5.1.5 continue |
| 5.4.5.1.6 parallelReduce |
| 5.4.5.2 表达方式 |
| 5.4.5.2.1 this |
| 5.4.5.2.2 transfer |
| 5.4.5.2.3 require |
| 5.4.5.2.4 checkCommitment |
| 5.4.5.2.5 远程物体 |
| 5.4.5.2.6 映射:创建和修改 |
| 5.4.5.2.7 成套工具:设定和修改 |
| 5.4.6 计算 |
| 5.4.6.1 评论 |
| 5.4.6.2 区块 |
| 5.4.6.3 声明 |
| 5.4.6.3.1 const 和 function |
| 5.4.6.3.2 return |
| 5.4.6.3.3 if |
| 5.4.6.3.4 switch |
| 5.4.6.3.5 区块声明 |
| 5.4.6.3.6 表达说明 |
| 5.4.6.4 表达方式 |
| 5.4.6.4.1 标识符参考 |
| 5.4.6.4.2 功能应用 |
| 5.4.6.4.3 类型 |
| 5.4.6.4.4 文字值 |
| 5.4.6.4.5 运算符表达式 |
| 5.4.6.4.6 xor |
| 5.4.6.4.7 括号内的表达式 |
| 5.4.6.4.8 元组 |
| 5.4.6.4.9 阵列 |
| 5.4.6.4.10 元素参考 |
| 5.4.6.4.11 数组和元组的长度:Tuple.length、Array.length 和 .length |
| 5.4.6.4.12 数组和元组更新:Tuple.set、Array.set和.set |
| 5.4.6.4.13 可折叠操作 |
| 5.4.6.4.14 数组操作 |
| 5.4.6.4.15 映射组操作 |
| 5.4.6.4.16 对象 |
| 5.4.6.4.17 结构 |
| 5.4.6.4.17 参考资料 |
| 5.4.6.4.19 Object.set |
| 5.4.6.4.20 Object.setIfUnset |
| 5.4.6.4.21 Object.has |
| 5.4.6.4.22 数据 |
| 5.4.6.4.23 Maybe |
| 5.4.6.4.24 Either |
| 5.4.6.4.25 Match |
| 5.4.6.4.26 条件表达式 |
| 5.4.6.4.27 箭头表达式 |
| 5.4.6.4.28 makeEnum |
| 5.4.6.4.29 assert |
| 5.4.6.4.30 forall |
| 5.4.6.4.31 possible |
| 5.4.6.4.32 digest |
| 5.4.6.4.33 balance |
| 5.4.6.4.34 lastConsensusTime |
| 5.4.6.4.35 makeDeadline |
| 5.4.6.4.36 implies |
| 5.4.6.4.37 ensure |
| 5.4.6.4.38 hasRandom |
| 5.4.6.4.39 compose |
| 5.4.6.4.40 sqrt |
| 5.4.6.4.41 pow |
| 5.4.6.4.42 整数符号 |
| 5.4.6.4.43 固定点数 |
| 5.4.6.4.44 任何人 |
| 5.4.6.4.45 “严格模式” |
| 5.5 共识网络连接器 |
| 5.5.1 以太坊 |
| 5.5.2 Algorand |
| 5.6 参与者后端 |
| 5.6.1 Java脚本 |
| 5.6.1.1 保证 |
| 5.6.1.2 加载器 |
| 5.6.1.3 标准图书馆 |
| 5.6.1.3.1 特定于以太坊的职能 |
| 5.6.1.3.2 用具 |
| 5.6.1.4 询问 |