1. 主页
  2. 文档
  3. Web3.0 设计教程
  4. TTT原则
  5. 2 .(写入数据)交易的透明度

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

用户需要知道数据将被写入区块链,特别是当它需要交换加密货币或代币时。 即使钱包对其进行警告,Dapp也应该在向钱包启动交易请求之前进行说明。

交易类型

在与区块链交互时会发生不同类型的交易,每种交易都会产生不同的后果。甚至在启动事务之前,用户都应该能够通过 UI 在不同阶段提供的信息来区分它们。

2.1 - 价值转移

2.1.1 - ETH

2.1.2 - 代币  

2.2 - 函数调用

   2.2.1 - 具有价值影响的合同方法

2.2.2 - 无价值转移的合同方法

2.3 - 工厂:合同生成功函数

交易数据和成本

事务通常具备附加一些数据的“有效载荷”(payload),例如将其传递给合同方法,这通常用于写入或计算在区块链中写入的内容

此外,向区块链写入数据通常会产生消耗,即支付交易的“gas 费用”,用户应该了解这两个概念及其内容

🔑🔑原则🔑🔑

Dapp前端应该:

➤(持久性)对不可逆转的行为进行说明(皆写作 Txs)

➤(价值)对涉及金钱或价值的行为进行说明

➤🌀(隐私)对需要用户识别的行为进行说明

这是最难实现的原则之一,因为任何写入的数据都可能有助于用户识别出来(除非使用ZTKSnarks),智能合约和web3开发人员可能都无法预知仲裁工具(forensic tool)当前和未来的复杂性,该解决方案通常是闭源的。

如果隐私是 Dapp 的主要功能,请考虑这一原则,并使用它来指导设计何时告知寻求隐私保护的用户,哪些行为会带来潜在风险。

➤🌀(工厂)阐明以用户名生成新合约的操作

此原则仅适用于帮助用户以他们的地址作为消息创建者的创建合约的 Dapp ,特别适用于主网上的应用。

所有交易指南:

➤🌀阐明并事先确认新的未来状态

➤以人类可读的格式以及智能合约要求的方式显示正在用于交易的数据(∞链接5.代码的透明度)

➤阐明gas 价格的建议值以及如何覆盖Tx(∞链接9.Gas价格和交易逆转)

➤管理交易等待时间(∞链接> 6.Time / Wait 管理)

➤记录交易后,向用户显示交易的相关摘要以及如何访问历史记录(∞链接4.用户交互历史记录)

➤阐明不是交易的行为,以此确保安全

具体示例

  • 使用css表示所有不可逆转的行为
    • 例如使用红色作为警告/高亮颜色
  • 添加一个微小的书面警告和按钮
    • 即:注意不可逆转的行动>了解更多
  • 使用双重确认:
    • 在用户按下按钮之后和调用钱包/ MetaMask之前打开弹出窗口或吐司,您可以在其中通知用户所有影响并要求确认。

还要为用户提供:

  • 取消动作
  • 不要显示弹出窗口(因为她是专家用户)
    • 这样做时告诉用户,ta最终可以在 Chain-View 侧面板中重新激活该功能。
  • 阐明并预测未来的预期步骤
    • 无论是使用微小的书面描述,标签子标题,还是使用向导都有更多步骤来完成动作。

在使用向导的情况下:

  • 向用户显示后续步骤的编号和标题
  • 允许用户了解正在发生的事情以及将要发生的事情(∞链接8.Newbie模式),并且应该将其功能置灰,以免混淆将预览和实际动作混淆 向Chain-View侧面板添加选项 侧面板可以是许多这些警告的地方,也可以为交易提供检查员,定义
  • 交易类型
  • 与交易相关的数据
  • Gas 费用
  • 所有其他相关信息(∞链接5.代码透明度)

我们要如何帮助您?