怎么样创建一个NEO区块链轻客户端

当前位置:首页 > 币圈百科 > 怎么样创建一个NEO区块链轻客户端

怎么样创建一个NEO区块链轻客户端

2022-11-08币圈百科232
【NEO品牌升级以来,社区建设风生水起,开发者热情与日俱增。随着社区的大扩容,补充和完成一些底层技术的基础课程是非常重要的。

目前很多开发者都在致力于NEO技术社区生态的构建,比如NEO-swift,这是一个可以与NEO区块链交互的轻客户端,主要用Swift-4语言编写。虽然目前是轻客户端,但不代表未来不会扩展为全节点客户端。

本文梳理了neo-swift的运营需要哪些支持。我希望你看完这篇博客后能理解区块链的内部运作机制。我也希望这篇文章能激励开发人员在近地天体区块链上创建下一个项目。

为什么?

对于任何项目,第一个问题永远是项目的目的是什么。创建新swift项目主要有四个原因。

1。开发者希望开发分布式iOS应用,应用广度越来越广。

2。构建开发人员友好社区的一个方法是创建一个非区块链开发人员易于使用的SDK。

3。有些开发者非常喜欢Swift。

4。移动设备的开发和部署越来越重要。

以下是其实质

读操作

首先你需要实现区块链的读操作。区块链是一个开放的分布式账本,用户可以自由读取信息,无需任何形式的认证。实现这种读取操作的一种方法是在机器上运行完整的节点。完整的节点可以存储完全同步的区块链备份,但显然移动设备上没有足够的空间来存储区块链的所有信息备份。在这种情况下,读取数据的方式是通过RPC与运行所有节点的人进行通信。

公开?func?getBlockBy(索引:Int64,完成:@逃避?(NeoClientResult)?-?())?{?sendRequest(getBlock,params:【索引,1])?{?结果?在??切换?结果?{??案子?失败(让?错误):?完成(。失败(错误))??案子?成功(让?回应):?让?解码器?=?JSONDecoder()???警卫?让?数据?=?试试?JSON serialization . data(with JSON object:(响应['结果']?as!JSONDictionary),选项:prettyPrinted),??让?屏蔽?=?试试?decoder.decode(Block.self,来自:数据)?不然呢?{???完成(。失败(。invalidData))????回归???}????让?结果?=?NeoClientResult.success(block)??完成情况(结果)??}?}?}

这组代码可以实现从链中特定高度获取一个块。在撰写本文时,区块高度为1,348,910,任何低于此高度的区块都可以被检索和查看。有兴趣可以搜索一下链上的事务、块、地址等信息,对数据结构的运行机制有更深入的了解。3359neotracker.io/

创建钱包

虽然从区块链读取数据方便收集数据,但是将数据写入区块链更有趣。本文将讨论NEO区块链目前使用的两种主要写操作,即发送资产和申请气体。希望看完这篇文章,你能对目前频率最高的几个区块链操作有一个清晰的认识。要将信息写入NEO区块链,您首先需要获得一对有效的公钥和私钥来授权您的写入操作。

“钱包实际上不存储任何资产,它的功能只是使用私钥向区块链发送写请求。”

这是钱包软件用户最容易蓑衣网小编2022产生误解的地方。实际上,近地天体资产储存在区块链上;钱包只是一个交互界面,用户可以通过它输入私钥,移动资产,也就是把信息写入分发的账本。

那么如何生成这对公钥和私钥呢?首先,生成私钥。私钥是64个字符的十六进制字符串,可以是0到2^256(1.15792089e77).之间的任何数字“account”的其余信息就是从这个字符串中派生出来的

WIF

这是一个私钥

0 c 28 FCA 386 c7a 227600 B2 Fe 50 b 7 caeeec 86d 3 BF 1 fbae 471 be 89827 e 19d 72 aa 1?

因为太复杂,私钥转换成WIF(钱包导入格式)。

5 hue cgu 8 rmj xxxipud 5 dku 4 mkfqezyd 4 dz 1 JVHTVQVBTLVYTJ

仍然不完全可读,但肯定比原字符串更可读。WIF也有基本的错误检查功能,所以如果你发送资产到WIF格式的地址,更有可能检查出错误。

公钥

私钥和WIF成功获取后,操作开始变得复杂。很难在Swift上构建完整的客户端。Swift没有加密方法库实现椭圆曲线加密,而NEO需要使用secp256r1椭圆曲线导出公钥。

您可以通过以下链接了解更多:【x][x】椭圆曲线——SECP 256 R 1比SECP 256 K 1更安全吗?加密堆栈交换?

https://github . com/neo-project/neo/blob/master/neo/cryptography/crypto . cs

使用btckeygenie,修改后可以导入到golang wallet generator中,用gomobile编译。未来可能会用Swift语言编写一个成熟的ECDSA(椭圆曲线数字签名算法)库,但目前还无法实现。

蓑衣网小编2022

地址

获得公钥后,只需重新获得地址,就可以拥有一个“完整的账户”。在这个阶段,十六进制或WIF私钥被放入go语言包中,以生成完整的帐户。

公开?初始化?(wif:字符串)?{var?错误:NSError?警卫?让?钱包?=?GoNeowalletGenerateFromWIF(wif,错误)?不然呢?{返回?零?}?self.wif?=?wif?self.publicKey?=?wallet . public key()self . private key?=?wallet . private key()self . address?=?wallet.address()。self.hashedSignature?=?wallet.hashedSignature()。//我们会?讨论?Thislater}

完成了以上步骤,实际上完成了SDK开发的第一步,也是重要的一步。

通过发送资产和认领燃气生成钱包后

,可以将资产转移到钱包地址,但同时需要Neon wallet这样的应用来发送资产或认领燃气。当然,我们也希望创建一个可以嵌入任何iOS移动应用程序的SDK。

这需要实现sendrawtransaction RPC方法。请参考文档。

RPC方法加载如下:

“params”:[?80000001195876 CB 34364 DC 38 b 730077156 c 6 BC 3 a 7 fc 570044 a 66 fbfeeea 56 f 71327 e 8 ab 0000029 b 7 cffdaa 674 beae 0 f 930 ebe 6085 af 9093 e 5 Fe 56 b 34 a5c 220 CCD cf 6 EFC 36 fc 500 c 65 EAF 40000000 f 9 a 23造成这种情况的原因有很多,比如重复付款,签名不完整等。本例中,交易确认后已成功广播,但第二次广播因重复支付而失败。

最后,javascript sdk输出的十六进制字符串最终会和自己的字符串一致。

遵循javascript一次,就可以为发送资产事务的完整内存配置画出一个清晰的示意图,如下:

如果详细浏览每个部分,会发现事务从最低内存地址(0x00)开始,一直到最高内存地址(0xXX),其中XX是十六进制的。

第一个元数据:包括事务的类型、版本和属性。交易类型为转账/80/,版本为/00/(可能需要升级?这里提到的事务不包含特定的属性。

输入:输入是真正有趣的部分。或者任何区块链系统的余额都不同于传统服务器-客户端模型中数据库中的任何数字。在实际操作中,余额以下列形式呈现。

“气”:{?'平衡':29.02751232,'未用':[?{??索引':1,?txid ':' 74 cc 80 FFB 1588 a 964 fc 6a 656302 bfe 5c 3465d 2214 c 64211d 8 Fe 2 f 322 CB 342 a 29 ',?值':28.0?},{??索引':0,?txid ':' 819 e 00 aeca 6 be 42 a 436 b 9535 B2 c 165670 be 9011 bbd 41 AFE 5d 475 b 0 c 858 a 7 f 6 c 5 ',?值':1.0?},{??索引':1,?txid ':' 3d 96 FB 31185394147 b 237 a 987730 fa 2 E4 c 1848744530842 e 468 a6 d 9 bdeec 4069 ',?值':0.02751232?}?]?}总余额是某个交易ID下“未消费”系列中所有对象的总和。当我们发送资产(如天然气)时,我们需要使用这些未消耗的输入来生成结果。例如,如果您需要发送28气体,您需要一个值为28的输入,但如果您需要发送29气体,您需要两个输入,一个值为28,另一个值为1。你看,所有的交易都会汇总成一个任意值。目前能做的最大交易是送30气,需要3个输入。

二次元数据:表示输出的次数。比如我们要发送28气,那么只会产生一个输出,因为我们会消耗掉所有的输出,只留下一个输出,就是发送给接收方的新的交易信息。但是如果要送27气,情况就比较复杂了,因为这个时候会产生两个输出。一个输出是发送给接收方的27气,另一个是发送回发送方的零钱。所以每个事务将产生1或2个输出。

资产ID:每个资产ID:NEO网络都有其唯一的标识符。目前有两个标识符,但未来可能会有无数个标识符。

发送的资产金额:这是不言而喻的,需要乘以10000000来验证接收方地址的浮点精度

哈希值:这也是不言而喻的,代表接收方地址的哈希值

Total-Send total:这是发送回钱包地址的变化。如果更改为0,则不需要填写该字段或后面的发件人地址哈希值

。发送方地址哈希值:接收变更的地址哈希值

签名:保持使用同一个p256椭圆曲线对有效载荷进行签名。这都是在第三个元数据块之前。

NEO公钥:是普通的公钥,但是包含前缀和后缀字节。不知道前缀后缀的用法,可能有查错的功能。

结论

区块链令人振奋。这不仅仅是一项简单的技术。NEO是搭建与未来世界沟通桥梁的绝佳切入点。NEO作为一个开源项目,开发者越来越多,生态也越来越健康。希望加入NEO社区建设。NEO有机会成为dBFT共识机制和区块链技术的黄金标准。

链接:https://steemit.com/neo/@萨尔蒂斯基普/为新区块链开发商创造光明客户网关药品
怎么样创建一个NEO区块链轻客户端 | 分享给朋友: