POA
中文
中文
  • 欢迎来到POA
  • 特性
    • 已知验证人
    • POADAO共识
    • 桥接原生令牌
  • 用例
    • 区块链游戏的可扩展性
    • 基于社区的货币
    • 补贴交易
    • 去中心化金融(DeFi)
  • 路线图
  • 面向用户
    • POA令牌
      • POA & POA20交易所
      • 常见问题解答:POA20一般问题
    • POA令牌用例
      • 实用令牌
      • 货币代币
      • 抵押代币
      • 桥接令牌
      • 质押令牌
      • 稳定令牌
    • POA到POA20桥
    • 接受POA20付款
      • 帐户注册和登录(商家设置)
      • 设置商家帐户
      • 商户付款方式设置
      • 使用POA20付款(客户角度)
    • 教程
      • 在DEX.AG上交易POA20
      • 在1inch.exchange上交换POA20令牌
      • 通过Discord获取空投
    • 治理
      • 文章:链上治理成功的一年
      • 治理季度报告
        • 2019年11月度报告
    • 钱包
      • Nifty钱包
        • 入门
      • Trust钱包
    • 白皮书
      • POADAO v1
        • 介绍
        • 权威证明 - Proof of Authority
        • POA网络功能
        • 去中心化应用程序(DApps)
          • 初始仪式DApp
          • 物理地址证明(PoPA)DApp
          • 银行帐户DApp证明
          • 社交网络证明DApp
          • 电话号码证明DApp
          • 治理DApp
        • 总结和致谢
        • 参考文献
        • 附录A:代码示例
          • 投票管理员
          • 验证人管理员
          • 为挖矿节点的部署脚本
  • 面向开发者
    • 开发人员资源
    • POA安装
    • Sokol测试网络水龙头
    • ERC20测试令牌水龙头
    • DApp部署
    • 基于POA的赠款
  • 对于验证者
    • 入门
      • 验证人资源
    • 引导节点设置
      • AWS引导节点设置
        • 先决条件
        • 配置AWS
        • 下载并配置脚本
        • 部署
      • 非AWS引导节点设置和部署
        • 本地/远程计算机系统要求
        • 节点准备
        • 使用部署手册配置节点
    • 验证者节点设置
      • 适用于验证程序节点部署的AWS VM
        • MoC:仪式密钥交换和生成大师
        • 当前的验证人为新的验证人投票
        • 验证程序节点设置先决条件
        • 配置AWS
        • 下载并配置脚本
        • 部署方式
        • 升级实例到更大的类型
      • 非AWS验证程序节点设置
        • 本地和远程机器系统要求
        • 远程机器设置
        • 使用部署手册配置节点
    • 硬分叉
      • Parity升级指南
      • POA Core主网
        • 即将到来的 HF 2019-12-12 | #12478880
        • 2019-04-29 | #8582254
        • 2018-01-29 | # 772000
        • 2018-10-22 | #5329160
    • 验证程序Dapps
      • 验证人元数据DApp
  • 媒体
    • 大事记
    • 研发合作伙伴
    • 社交媒体
    • 媒体工具包
    • 联系我们
Powered by GitBook
On this page
  • 物理地址证明(PoPA)DApp
  • PoPA上身分识别DApps的典型工作流程示例
  • 可能的作弊:

Was this helpful?

  1. 面向用户
  2. 白皮书
  3. POADAO v1
  4. 去中心化应用程序(DApps)

物理地址证明(PoPA)DApp

Proof of Physical Address

Previous初始仪式DAppNext银行帐户DApp证明

Last updated 5 years ago

Was this helpful?

物理地址证明(PoPA)DApp

使用物理地址证明,用户可以确认其物理地址。 它可以用来证明居住权。

PoPA上身分识别DApps的典型工作流程示例

服务器由一个Web应用程序和一个连接到区块链的Parity节点组成。 该节点在用于部署PoPA合同的Ethereum帐户(合同的所有者)下运行,该帐户需要解锁。 但是它不应该有任何以太币,因为它不再发送任何交易。

服务器验证并规范化用户的输入:删除尾随空格,将字母转换为小写。 然后,它生成一个随机的确认码(字母数字序列)并计算其SHA-3(严格来说是keccak256)哈希。 此外,它还会生成一个随机会话代码(请参见下文),并将其与用户的eth地址和纯文本确认代码一起存储在内存/数据库中。 然后服务器合并输入数据,即str2sign = (user's eth address + user's name + all parts of physical address + confirmation code's hash)转换为一个字符串,该字符串经过哈希处理并用所有者的私钥签名。 (这就是所有者帐户需要被解锁的原因。在下一版的web3js中,很可能可以使用私钥进行签名而无需解锁。)

签名,确认代码的哈希,用户的规范化输入和会话代码被发送回客户端。 然后,用户在MetaMask中确认交易并调用合同的方法。 合同以与服务器相同的顺序组合输入数据,对其进行哈希处理,然后使用内置功能ecrecover来验证签名属于所有者。 如果不是,则合同拒绝交易,否则它将添加一些元数据,最重要的是当前块的编号,并将其保存在区块链中。

当交易被挖掘时,tx_id连同会话代码一起返回到客户端,然后通过客户端返回到服务器。 服务器通过会话代码查询内存并验证用户的eth地址。 然后,它通过tx_id从区块链中获取交易。 它验证tx.to等于所有者,tx.from等于用户的eth地址。 然后,服务器使用tx.blockNumber使用合同的方法来查找在该区块号处添加的物理地址。 用户应被限制为每个eth块最多注册一个地址。 由于块生成时间少于一分钟,因此它对用户的限制不应太大。

从合约中获取地址后,服务器将调用邮局的api(lob.com)来创建明信片。 服务器使用会话代码从内存中获取纯文本确认代码,并将其打印在明信片上。 然后,服务器从内存中删除此会话代码,以防止重用。

当明信片到达时,用户在DApp中输入确认代码,DApps从服务器获取签名并调用合同的方法。 合同验证签名,计算确认码的哈希值,并在用户地址上循环查找匹配的地址。

可能的作弊:

  1. 用户可以生成自己的确认代码,计算所有哈希并将其提交给合同,然后进行确认。这无法完成,因为用户不知道所有者的私钥,因此无法计算有效签名。

  2. 用户可以从先前确认的地址之一重用他人的确认码或他/她自己的确认码,这可以通过在签名之前将所有基本数据散列在一起(用户的eth地址,完整的物理地址,确认码)并通过检查来避免合同中重复项的地址。

  3. 用户可以提交表单,但不签署交易。因此,在将地址添加到区块链并将tx_id呈现给服务器之后,便会发送明信片。

  4. 用户可以提交表单并签署交易,但是将另一个地址发送到服务器以将明信片发送给。挖掘到第一笔交易后,服务器会自己查看添加的地址,然后从合同中获取地址,而不是信任客户端。然后,使用会话代码检索相应的确认代码。为简化起见,我们可以限制用户每个块仅提交一个地址。在这种情况下,合同只需找到与creation_block匹配的第一条记录

  5. 用户可以多次向服务器重新提交相同的tx_id。这是通过在发送第一张明信片后从内存中删除会话代码来防止的。

单击图像放大:用户在DApp中填写表格并将其提交给服务器。