区块链Dapp前端设计准则

区块链的应用落地正在如火如荼的进行着,本文介绍一篇关于区块链应用Dapp中面向用户的设计准则,转载自名为‘Web3 Design Priciples’的文章(文末有原文链接)。设计准则只针对前端的用户体验,并不涉及区块链运行原理、算法、共识协议、激励机制等“背后”的东西。

当前的区块链应用开发者们主要将精力用于区块链底层系统及智能合约的构建,对于Dapp前端的设计优先级并不高。由于区块链正处于发展得初期,因此真正面向普通用户具备可用性的Dapp并不多。但随着技术的不断成熟和Dapp开发的热情,前端设计会被越來越多的从业者重视。原作者对Dapp的设计目标做了如下的期望:

a user that lands on a Dapp can immediately tell she is interacting with one and, more importantly, has access to the powerful properties of the Blockchain and therefore knows she can trust every interaction with the application.

在综合考虑多种设计因素及潜在问题后,作者总结出了如下的设计准则,这里仅翻译了cheatsheet,每一部分更详尽的解读可通过链接访问原文加以理解。

//// TTT: 通过通明度建立信任

1 —(读取数据)数据来源的透明

➤ 阐明哪些数据来自区块链,哪些不是
➤ 阐明合约的地址
➤ 将所有区块链数据链接到独立的区块链浏览工具
➤ 阐明哪些数据来自于oracles

2 —(写入数据)交易的透明

– 交易类型(价值转移,函数调用,合约生成)
➤ [永久]阐明交易的不可逆性
➤ [价值]阐明涉及金钱或价值的行为
➤ [隐私]阐明可能导致用户识别的操作
➤ [工厂]阐明在用户名称中生成新合约的行为

– 所有交易的准则:
— ➤ 提前阐明并确认新的状态
 — ➤ 以智能合约要求的方式显示正在用于人类可读格式的交易数据
— ➤ 阐明建议的gas的价格以及如何重写交易
 — ➤ 管理交易的等待时间
— ➤ 可能的话,阐明哪些行为并不是交易,从而是安全的

3 — (推送数据)智能合约事件的透明

➤ 阐明终端用户的所有事件并使其可访问,即使它们仅用于开发的目的
➤ 仅显示与当前用户相关的消息
➤ 允许用户订阅,取消订阅或暂时关闭某些事件

4 — (历史)用户交互历史的透明性与可访问性

➤ 提供给定地址的所有交易历史记录
➤ 阐明历史记录存储在本地还是服务器
➤ 提供导航,搜索,导出和删除历史缓存的工具

5 —(代码和环境)代码透明

➤ 阐明正在使用哪个区块链
➤ 说明用于读/写操作智能合约地址
➤ 阐明哪些代码是开源的(以及在哪里可以找到它)
➤ 阐明代码在哪里运行(本地与远程服务器)
➤ 阐明web3提供者/区块链节点(本地节点,Dapp受控节点,MetaMask,Infura等)
➤ 阐明Dapp是在MainNet还是在TestNet上运行
➤ 阐明哪些数据来自oracles或受到oracles的影响
➤ 允许DIY代码执行:允许高级用户查看正在运行的代码并通过命令行自行执行代码
➤ 阐明智能合约所需的输入

//// 通用Web3用户体验原则

6  时间/等待管理

➤ (管理用户的期望)阐明区块链交易所需要的确认时间以及当前的网络阻塞状态
➤ (管理等待时间)在等待时间内给用户以等待显示

7 — 人类可读的哈希格式

➤ 显示哈希值的缩略版本,但始终显示初始和结束部分
➤ 如果您需要更短的版本,则更倾向于显示初始部分
➤ 总是加上“0x”来表示它是一个哈希值
➤ 允许用户扩展显示完整的哈希值
➤ 允许用户轻松地复制哈希值
➤ 在可能的情况下,使用简写作为标题和缩略地址作为字幕
➤ 如果可能,允许用户轻松地将可编辑的名称或文本与哈希值相关联

8 — 永久新手模式

➤ 在正常的交互方式中蕴藏用户教育/学习的信息
➤ 提供两个或更多级别的教育内容:区块链基础知识和Dapp特定语言
➤ 最小化和逐步增加用户需要学习的新事物和概念的数量
➤ 如果可能,为了加快学习,可提供“专家的解释”
➤ 保持上下文的关系

9 —Gas价格和交易逆转

➤ 阐明什么是Gas和Gas价格(就像使用其他任何行话一样)
➤ 提供建议的Gas价格区间并阐明时间的上下限近似值
➤ 可以显示转换为法币的Gas价格
➤ 允许交易逆转:这里指比如用户发送了一个交易,但是gas价格很低,这种情况需要告知用户;需要注意的是一旦交易在区块链中记录,是不可逆的。

//// DDP: 去中心化设计原则

10 — 社区意识

➤ 阐明社区中还有多少其他成员
➤ 阐明谁是其他成员(选择适当的类别)
➤ 阐明社区的组成(即小组及其对项目的权力)
➤ 分享项目的更大使命(如果有的话)以及用户参与如何促进项目的实现

11 — 其他正在考虑的未来设计原则(待续)

➤ 身份和声誉
➤ 治理
➤ 钱包
➤ 交易所
➤ ICO和Token销售机制
➤ Token机制

原文地址:https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1

*转载请注明出处