Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

关于CNEO和CGAS,你应该知道的15件事

fzny61226
77 0 0
1. 什么是 CNEO 和 CGAS ?' I6 _$ G. l( ]0 v, J- `
CNEO 和 CGAS 是由NGD(NEO Global Development)发布的符合NEP-5 规范的合约资产,它们可由全局资产 NEO / GAS 一比一地对换,并且支持退回操作。该合约的目的是将GAS 进行全局资产的合约映射,使全局资产 NEO / GAS 可以方便地在合约内部流转,支持由合约调用转账。& g2 u8 y) d1 g& g6 x
( k; _5 `, V/ |9 x. h4 y
2. 为什么要发布 CNEO 和 CGAS ?( @9 @0 G3 t. u+ Q0 m* _/ U% ?/ u
因为在 NEO 上面的众多 DApps项目方都有一个需求,要在合约中使用一种流通性强,价格相对稳定的数字资产。但受限于 NEO 智能合约的限制和安全性考虑,无法在智能合约中对全局资产(如 NEO 或 GAS)进行转账。而项目方自己发行一种 NEP-5 代币又无法拥有广泛的流通性,无论是让社区认可其代币还是让其代币在交易所上流通,对项目方来说都是个成本很高的事情,而且所有项目发均发行自己的NEP-5资产也是一种浪费;所以社区强烈建议由 NGD来发行一种与 NEO 或 GAS 锚定的 NEP-5 资产,以供社区统一使用,所以CNEO 和 CGAS 就诞生了。1 _* p+ {0 @# [! [2 B6 {- z- `- [" U
1 \6 ?2 e; g4 t0 `, j: n3 U+ Z/ Y
3. CNEO和 CGAS 是如何映射全局资产的呢?. H, I4 a8 L# F# G0 a9 e) \" k
在CNEO和CGAS中通过 mintTokens 和 refund 方法进行全局资产的兑换和退回,无需中心化机构的承兑,完全的去中心化。mintTokens 的方式跟众多项目的Token Sale 的代码类似,在方法内部对全局资产和合约资产进行了 1:1 的兑换。在 refund 方法中,是预先将一个 UTXO 标记为指定的用户可以取回,然后该用户发起转账将该资产转到自己的地址中。更多细节可以参考 GitHub。这个设计理念由NEL团队提出并进行了开源的代码实现,对此表示感谢。( s( ~0 g6 L+ k. p- P3 z
1 q- T) [% m* B; l" o8 `
4. CNEO和 CGAS 的合约逻辑一样吗
1 r# k; Z5 j8 D. a6 V- F: @9 R内部逻辑、外部接口都完全一样。唯一的不同是合约名称、以及映射的资产 ID不同。
, L' p" _" @1 }7 j- s
# Z2 M/ a, `& k7 ^  ]$ V# L0 v5. CGAS中的 C 是什么意思?1 {5 W2 [8 w% E. B
Contract,合约的意思。, s" Q- U7 c) z

" c" D! Y; _$ o- w6. CGAS和 SGAS 是什么关系?1 q5 g$ F1 u6 ^0 M6 Y+ M
SGAS 是 NEL 团队开发的GAS 在合约资产中的映射,是 CGAS 的前身,CGAS 在此基础上进行了代码重构、漏洞修复和接口的修改,然后将其改名为 CGAS。改名的另一个原因是SGAS 的英文读音会让人误解,不是一个很好的名子。目前主网上部署的 SGAS 是由 BlaCat 团队部署的,作为 CGAS 发布前的临时使用,CGAS 部署后,他们已经弃用了原有的 SGAS 并将项目对接到了 CGAS 中。  \, H0 J$ m# ]5 D- m$ n1 T
# v) S% Y2 d! T4 |
7. 有社区项目已经开发的映射全局资产的合约,为什么 NGD 要开发 CGAS 和CNEO 呢?
: }- j! |) N5 T6 n; F6 L3 x$ x# z1 a据了解,社区的映射全局资产的合约是不开源的,无法解决信任问题。NGD开发的 CGAS 和 CNEO是开源的,去中心化的,而且没有使用限制,任何项目方都可以使用。- {7 ?$ m, d- q: q- ~+ A
5 v* M$ |0 w. {- D2 d
8. CNEO和 CGAS 的 Script Hash 是多少,源码在哪里?
3 }7 w' i% ?' ^- v6 ~. M- ?- iCGAS 1.0.32 P/ N  ~/ |6 b% Z# b) S
Script Hash: 0x74f2dc36a68fdc4682034178eb2220729231db76
( c* L) m# M" J6 l3 l, E* w+ zCGAS Contract Address:AScKxyXmNtEnTLTvbVhNQyTJmgytxhwSnM
2 U" D2 L- \2 I7 H8 b7 tCNEO 1.0.38 w; ~7 g$ A& U( A  L( H# h- B. Z
Script Hash: 0xc074a05e9dcf0141cbe6b4b3475dd67baf4dcb608 w$ K# i- f: r6 d
CNEO Contract Address:AQbg4gk1Q6FaGCtfEKu2ETSMP6U25YDVR3
/ H0 a- j4 ~1 k: d# h; VGitHub 地址:
# U/ y6 n* l2 @3 Z7 u0 G# U4 P- ECNEO:https://github.com/neo-ngd/CNEO-Contract. S; j# ^  {+ L7 y2 W  J
CGAS:https://github.com/neo-ngd/CGAS-Contract
9 T, y! `4 ]! N8 t% J% Z使用说明和更多技术信息可以点击上面的GitHub 链接。6 H0 u9 m1 h" R& i  P
, H9 }" [* P' k2 D3 [8 t1 ~0 A
9. 哪些项目在使用 CNEO 和 CGAS ?
0 U3 ?- ~" G' w/ w- s5 J目前有 NEL 的 NNS项目,BlaCat 的疯狂角斗士游戏,Alchemint 项目,nOS 项目已经在使用或计划使用 CNEO 或 CGAS。
/ d2 ?) \) n0 C4 G! z$ U: |5 Z- U3 h4 D' I8 b
10. 目前有钱包支持 CNEO 和 CGAS 吗?
/ g3 Z% q) G. p  T% x  t据 O3 团队的创始人之一 Apisit介绍 ,O3 正在开发对 CNEO 和 CGAS 的支持,预计不久后就会上线。除了社区钱包的支持,使用CNEO 和 CGAS 的项目方也会为自己的项目提供方便的兑换和退回CNEO、CGAS 的功能。4 \5 n1 }; p; |$ ~9 Z( l( W/ d

% a* u9 k4 F# h1 z  Y7 {# {% z; F5 z11. 为什么要重新发布 CGAS ?
: Z$ V4 `! D8 B: O" l! V9 H在 CGAS 的第一个版本(1.0.1)中,存在一个 transferAPP方法(一个由其它合约调用的转账方法)命名不规范的问题,英文社区开发者们认为应该将其命名为transferApp,我们经过研究,决定将 transfer 方法和 transferAPP 方法合并,移除 transferAPP 接口,在方法内部进行逻辑判断,从而减少脚本行数。
8 |, I$ a7 m7 b1 e- ]在 CGAS 的第二个版本(1.0.2)中,在 transfer 方法内存在一个阻止跳板调用的代码,导致无法通过合约调用transfer 方法。该 bug 不会造成用户资产损失。在该版本发布后就意识到了这个问题,并进行了修复,所以又发布了1.0.3 版本。
  O% c$ D1 `' c+ }$ I目前 1.0.3 版本已在稳定运行,目前未发现bug。如果以后社区发现了安全漏洞,我们会第一时间修复并通知项目方进行版本迁移。  [, \2 d0 t! g6 \) `. B

8 g* Q3 w5 k2 }3 {3 p" y12. 旧版的 CGAS 还可以使用吗?. ^$ J1 l( m: _. D6 d, W7 c
目前 CGAS 有 3个版本,1.0.1、1.0.2和1.0.3,最新版本为 1.0.3,我们推荐社区使用新版的CGAS,如果已经使用了旧版的CGAS也不用担心,可以通过 refund命令,将 CGAS 转换为 GAS,然后进行 CGAS 版本的迁移,不会造成资产的损失。' P6 C9 F+ f0 y! Y! n) _% s, K

" s* Q- ~/ k$ O7 ~+ J13. CNEO  目前有几个版本?
5 V/ z" ^5 V# i- d! M一个,版本号为 1.0.3,因为CNEO 是在 CGAS 稳定运行后再发布的。
$ T) ~3 U3 \# f! Y' L+ X& i/ G2 S' v! k+ g2 I+ F7 C5 b) s7 ]6 I
14. 持有 CNEO 会获得 GAS 或 CGAS吗& _! m7 w2 l) a0 g) |, L+ }4 i
不会,因为在合约内部无法计算全局资产 NEO生成的 GAS 的数量,也无法操作全局资产的提取GAS、进行转账。去中心化地实现有许多无法解决的困难,而中心化实现又会极大地增加合约复杂程度,使合约变得臃肿,存储区庞大,而且管理员权力太强,也会有权力滥用的风险,也不是一个好的解决方案。所以再三考虑下,我们放弃了提取GAS 的功能。因为持有 CNEO 不会获得GAS 或 CGAS。如果有项目方需要该功能,可 Fork CNEO的代码自行实现一个中心化的解决方案。
' G* \% g& g2 }/ c+ @# W% P& y- U
15. 开发者在使用时应注意哪些事情?
% |8 \2 c0 F, v8 G$ s& @1. 手续费问题。在mintTokens 的时候请注意,InvocationTransaction 的 Inputs 和 Output 加起来不应该超过60个,否则在执行时所需的手续费会超过 10 GAS 的免费额度。如果有大量 NEO/ GAS 的 UTXO 需要换成 CNEO 或 CGAS,建议先进行一个普通转账,将 UTXO 合并,然后再进行 mintTokens 操作。
8 y# l: y; z3 p2 h# ]2 T3 _& ^2. 交易验证失败的问题。在CNEO 和 CGAS 中,合约逻辑比较复杂,构造交易时一个微小的疏忽就会导致交易验证不通过,建议开发者首先要研究清楚合约的逻辑,然后再构造交易。在CGAS 的项目中,我们提供了单元测试的代码,可供开发者参考。CNEO和CGAS逻辑一致,只需稍加改动就可以用在 CNEO 中。
- i8 G% Z" T( q3 ^2 }; K* d- t& R" X: F' b9 s
* u4 w$ K9 N" M7 g, `  q" w; h
来源: 关于CNEO和CGAS,你应该知道的15件事
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

fzny61226 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    22