NEO改进协议提案9(NEP-9)
文章目录
- 摘要
- 动机
- 详述
- 原生资产转移URI
- URI键
- 可用URI 键 映射 NEO 交易属性键
- 参考原生资产地址
- 例子
- 智能合约调用URI
- NEP-5 token 转移
- URI Keys
- 例子
- NEP-5 token 转移
- 原生资产转移URI
- 原理
- 实现
- 参考
摘要
本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:<address>[?asset=<asset>][?amount=<amount>][?<TransactionAttributeKey>=<value>]
1复制代码
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:<address>?asset=<NEP5ScriptHash>[?amount=<amount>][?<TransactionAttributeKey>=<value>]
1复制代码
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来更轻松的实现安全保障。
实现
参考实现
• github.com/O3Labs/NEP9…
• github.com/O3Labs/nep9…
参考
以下讨论有许多与智能合约URI安全相关的论点
• github.com/ethereum/EI…
来自 github.com/neo-project…
NEO改进协议提案9(NEP-9)相关推荐
- NEO改进协议提案1(NEP-1)
文章目录 什么是NEP NEP基本原理 NEP类型 NEP工作流程 怎么才是一个合格的NEP NEP格式和模板 NEP序言 附件 NEP所有权转让 NEP编辑者 NEP编辑者的职责和工作流程 历史 什 ...
- NEO改进协议提案4(NEP-4)
文章目录 摘要 动机 详述 neo neo-vm 智能合约示例 原理 向后兼容性 实现 摘要 此NEP提案概述了一种机制,通过该机制,智能合约能够调用直到运行时才知道的其他智能合约,而不仅限于调用在编 ...
- NEO改进协议提案6(NEP-6)
文章目录 摘要 动机 基本原理 详述 钱包 Scrypt参数 账户 合约 向后兼容性 实现 摘要 本NEP描述了一个钱包标准用于钱包文件在NEO多种实现间的兼容. 动机 目前,不同的客户端程序生成不同 ...
- NEO改进协议提案7(NEP-7)
文章目录 摘要 动机 原理 详述 鉴权触发器 鉴权R触发器 应用触发器 应用R触发器 后兼容性 实现 摘要 触发器是一种触发智能合约执行的机制.本NEP定义四种类型的触发器, 他们是鉴权触发器.鉴权R ...
- NEO改进协议提案5(NEP-5)
文章目录 摘要 动机 详述 方法 totalSupply name symbol decimals balanceOf transfer 事件 transfer 实现 摘要 NEP-5提案概述了NEO ...
- NEO改进协议提案2(NEP-2)
文章目录 摘要 动机 基本原理 详述 前缀 建议详述 加密步骤 解密步骤 向后兼容性 测试用例 实现 摘要 提出了一种以58字符 Base58Check编码的可打印字符串的形式对密码保密型私钥记录进行 ...
- NEO改进协议提案2(NEP-2) 1
文章目录 摘要 动机 基本原理 详述 前缀 建议详述 加密步骤 解密步骤 向后兼容性 测试用例 实现 摘要 提出了一种以58字符 Base58Check编码的可打印字符串的形式对密码保密型私钥记录进行 ...
- 改进协议 BIP32-39-44概述
BIP44 调研可行性调研 By Blake chen BIP 44 协议提出背景 签名算法是区块链系统中具有密码学属性的基础核心支撑算法.其资产确权.账户验证.身份确认.以及生成公私钥对进入区块链世 ...
- 【MORE协议】基于MORE的改进协议设计的MATLAB仿真
0.完整源码获得方式 方式1:微信或者QQ联系博主 方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码 1.软件版本 MATLAB2021a 2.本算法理论知识 随着无线通信 ...
最新文章
- C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)
- 《C#多线程编程实战(原书第2版)》——第3章 使用线程池 3.1 简介
- 北斗导航 | 复杂环境下卫星导航算法(理论)
- Cocos2D v2.0至v3.x简洁转换指南(一)
- Host SMBus controller not enabled的解决方法
- 类和对象(2)—— 类的封装和访问控制
- java treelist 排序_一个很好的Java排序列表
- 常用的分类与预测算法
- 海康威视错误代码说明(六)(错误代码:82~825)
- B站视频下载扩展工具
- MATLAB之物理场可视化
- 电信资费七宗罪,终端的故事
- 如何判断测试项目是否需要高频交直流电流探头
- Linux学习-MySQL变量学习
- 【Qt】弹出子窗口时禁用主窗口
- C#桌面办公应用-工资管理系统系列五
- Google创始人---谢尔盖-布林
- ssl证书会过期吗?ssl证书过期了怎么解决
- JAVA练习203-航班预订统计
- 会计学原理知识点总结
热门文章
- 红米4a android 9 速度,小米-红米4A/5A-通刷-LOS-Beta5.0-安卓9.0.0-来去电归属-农历等-本地化增强适配...
- java币值转换_-PAT-java-5-23 币值转换 (20分)
- [ZJOI2004]沼泽鳄鱼
- 计算机安全相关知识,计算机安全知识
- 使用ArchR分析单细胞ATAC-seq数据(第十二章)
- 小程序+spring boot校园交友平台毕业设计-附源码191733
- 本文是关于前端开发基本流程的分享
- 劳资蜀道山!6个高质量免费电子书网站!我看谁还不知道
- EasyExcel 导出 excel(二)添加序号列,设置excel打印样式,导出即可打印
- Nacos开机报错找不到java环境