博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NEO改进协议提案9(NEP-9)
阅读量:6618 次
发布时间:2019-06-25

本文共 2969 字,大约阅读时间需要 9 分钟。

hot3.png

文章目录

  • 摘要
  • 动机
  • 详述
    • 原生资产转移URI
      • URI键
      • 可用URI 键 映射 NEO 交易属性键
      • 参考原生资产地址
      • 例子
    • 智能合约调用URI
      • NEP-5 token 转移
        • URI Keys
        • 例子
  • 原理
  • 实现
  • 参考

摘要

本NEP描述了一个用于NEO原生资产转移的URI标准。此外,它提议一个URI子集用于完善智能合约操作,在本提案所包含的NEP-5token被转移时。未来,随着更便于理解的和经过良好测试的合约被加入网络时,URI会被增加。我们定义了一个框架用于判定一个URI方案是否适用于下面的智能合约操作。

动机

目前,没有标准URI可供NEO客户端使用。比特币实现了一个URI标准,因此点击连接或扫描二维码可以轻松实现一个比特币支付。同样,NEO上的原生资产转移可应该如此简单易行

然而,NEO可能可以通过智能合约的调用实现更多的合约操作。这包括token的铸造和转移,注册域名,交换和另外一些自定义应用。理想情况下,一个URI存在通用智能合约的调用。然而,这存在安全隐患,可能很难判定智能合约实际做了什么,可能因此导致资金的损失

为了解决该问题,我们提议为通用智能合约调用生成的URI被限制在一个完善的合约操作的子集内(例如NEP-5 token的转移)。这将是得客户端轻松理解和验证给定的URI将要进行的操作。如果客户端更注重安全性,可以维护一个遵顼给定URI规范的合约白名单

任何新的被添加进本提案的NEO URI对应的智能合约应当是安全、记录良好和广泛使用。我们将在本提案的最后进行更多的讨论

详述

原生资产转移URI

原生资产的转移有以下URI。它描述了接收者地址,资产和伴随着交易发送的额外属性。

URI 方案: neo

neo:
[?asset=
][?amount=
][?
=
]

URI键

描述 是否必需
address 有效NEO地址
asset neo、gas和资产ID
amount 资产被发送的数量 e.g 1.0

可用URI 键 映射 NEO 交易属性键

URIKEY NEO 交易属性 描述
contractHash 0x00 合约的哈希
ecdh02, ecdh03 0x02,0x03 公钥 用于 ECDH 密钥交换
script 0x20 交易的额外验证
vote 0x30 用于投票
certUrl 0x80 证书的Url地址
descriptionUrl 0x81 描述的Url地址
description 0x90 简易描述
hash1,hash2,…,hash15 0xa1,0xa2,…,0xaf 用于存储自定义哈希值
remark,remark2,…,remark15 0xf0,0xf1,…,0xff 备注

参考原生资产地址

名字 哈希
NEO c56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b
GAS 602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7

例子

开始交易到指定地址

neo:AeNkbJdiMx49kBStQdDih7BzfDwyTNVRfb

开始未指定数量NEO的交易

neo:AeNkbJdiMx49kBStQdDih7BzfDwyTNVRfb?asset=neo

开始1NEO到指定地址的交易

neo:AeNkbJdiMx49kBStQdDih7BzfDwyTNVRfb?asset=neo&amount=1.0

开始1NEO到指定地址且交易描述为“hello”的交易

neo:AeNkbJdiMx49kBStQdDih7BzfDwyTNVRfb?asset=neo&amount=1.0&description=Hello

开始0.1GAS到指定地址的交易.将公钥放在ecdh02属性字段中以允许发件人使用ECDH加密.交易属性描述为“hello”

neo:AQc5mtFayAdoCK13BW1cGAzAHyo9SoUWe7?asset= gas&amount=0.1&ecdh02=02ed53ad58c838435d4dd7a4b25c1eba01384c814ca53a539405434807afbb04b4&description=Hello
这应该足够促使NEO原生资产的安全转移

智能合约调用URI

为了调用智能合约,我们需要指定脚本哈希和智能合约被调用的操作以及提供所需的参数。这样,应用可以定制屏幕界面用预填充的信息来匹配调用的操作。例如:NEP-5 token的转移,投票等。而用户需要做的是授权/签和交易。

正如之前所提到的,通用智能合约的调用并不一定适用于URI。这是既是因为安全问题也是因为可用性。URI的客户端应该100%确信他们使用的URI会达成预期的效果。将其限制在合约操作的子集可以解决大部分繁杂的问题。如果客户端想要更加安全,它可以在每个受支持的智能合约URI的子集中构建自己的白名单。

任何对受支持合约URI的添加都应遵守与其他NEO改进提案一样的过程。为了添加一个受支持的智能合约URI,操作/提案应具有以下内容…

1.不指定应用
2.经过良好的测试
3.良好的文档并很容易被客户端使用
4.URI使用例子

NEP-5 token 转移

NEP-5token的转移是智能合约的调用并具有以下URI。

neo:
?asset=
[?amount=
][?
=
]

URI Keys

KEY DESCRIPTION REQUIRED
address 可供转移的有效NEO地址.
asset 有效的big endian格式的合约哈希.
amount 发送的token数量 . e.g 1.0

例子

开始转移10ONT到指定地址的交易Begin

neo:AK2nJJpJr6o664CWJKi1QRXjqeic2zRp8y?asset=ceab719b8baa2310f232ee0d277c061704541cfb&amount=10

开始转移非指定数量的ONT到指定地址交易

neo:AK2nJJpJr6o664CWJKi1QRXjqeic2zRp8y?asset=ceab719b8baa2310f232ee0d277c061704541cfb

原理

URI需要考虑对于用户和钱包开发者的易用性和安全隐患,尤其是在执行任意智能合约。与智能合约调用相比,我们可以使用与转移原生资产相关的URI来更轻松的实现安全保障。

实现

参考实现

• 
• 

参考

以下讨论有许多与智能合约URI安全相关的论点

• 

来自 

转载于:https://my.oschina.net/u/4005186/blog/2989614

你可能感兴趣的文章
如何做云端压力测试和业务容量的测试与规划
查看>>
Linux基础命令---ping
查看>>
服务器文件的管理权限设置
查看>>
python list unicode转中文显示
查看>>
我的友情链接
查看>>
percona tools 之 pt-query-digest
查看>>
Centos7没有安装ifconfig命令的解决方法
查看>>
我的友情链接
查看>>
linux命令备忘 ulimit 常见服务的启动
查看>>
浅谈参数innodb_undo_tablespaces
查看>>
PHP加载MSSQL失败的解决办法
查看>>
MySQL系列之B-2------MySQL安装
查看>>
普通用户启动redis
查看>>
Memcached实现Session共享
查看>>
1.4-shell自定义变量
查看>>
ansible模块使用
查看>>
grep之正则表达式用法
查看>>
Oracle查询所有序列
查看>>
OGG运维优化脚本(十三)-信息同步类--进程信息上传
查看>>
详解Linux下挂载和格式化虚拟磁盘
查看>>