Reach:最安全最简单的DApp编程语言

838 阅读5分钟

Reach 是用于构建去中心化应用程序(DApp)的专用语言。 您能在这里找到所有您需要了解的有关 Reach 的内容。

官方网页原文链结

首先,欢迎您关注微信公众号

ɨ��_�������ϴ�����ʽ-��׼ɫ��.png

(目前概述部份、教程部份、指南部份已有中文翻译版,建议与原文互相参考学习,其他部份可以点击链接访问原文网页)

  • 概述部分简要介绍了 Reach 的基本思想。我们建议您在深入了解之前可以先阅读概述。如果你已经有区块链开发的经验,我们推荐您阅读概述以及 Reach 和其他开发平台的比较
  • 教程部份将指导您从头开始创建一个 DApp 。这部份是专门为新手设计的,它可以让您快速上手 Reach。
  • 指南部份接续概述部份,讨论了一系列关于 Reach 的关键思想和概念,讲解了 Reach 语言的逻辑和原理。
  • 工作坊部份接续教程部份,提供了一些自学项目,让您可以通过 Reach 实践从而精通 Dapp 的设计。每个项目都将包含一份完整的解决案例,因此它也是在 Reach 中构建各类 Dapp 的模版,演示了怎么利用 Reach ,以及 Reach 程序员的设计思想。
  • 最后,参考资料部份提供了关于 Reach 各个方面的详尽技术参考。

如果你试图查找某些信息,除了本页下方的列表外,也可以参考以下途径:

这个网站的源代码可以在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 询问