真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么創(chuàng)建NEO輕客戶端

這篇文章主要介紹“怎么創(chuàng)建NEO輕客戶端”的相關(guān)知識,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“怎么創(chuàng)建NEO輕客戶端”文章能幫助大家解決問題。

為會同等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及會同網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、會同網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

為什么?

對于任何項(xiàng)目而言,第一個(gè)問題永遠(yuǎn)是項(xiàng)目的創(chuàng)建目的的是什么,neo-swift項(xiàng)目創(chuàng)建主要出于4個(gè)原因。

  1. 開發(fā)者想要開發(fā)分布式iOS應(yīng)用,且應(yīng)用廣度越來越廣。

  2. 建立一個(gè)開發(fā)者友好社區(qū),其中一個(gè)方法就是創(chuàng)建便于非區(qū)塊鏈開發(fā)者使用的SDK。

  3. 有的開發(fā)者很喜歡Swift。

  4. 移動(dòng)設(shè)備的開發(fā)與部署日益重要。

以下為它的實(shí)質(zhì)內(nèi)容

讀取操作

首先需要實(shí)現(xiàn)區(qū)塊鏈的讀取操作。區(qū)塊鏈?zhǔn)且粋€(gè)公開的分布式賬本,用戶無需通過任何形式的鑒定即可自由讀取信息。實(shí)現(xiàn)此類讀取操作的一個(gè)途徑是在機(jī)器上運(yùn)行全節(jié)點(diǎn),全節(jié)點(diǎn)可以保存完全同步的區(qū)塊鏈備份,但移動(dòng)設(shè)備上顯然還沒有足夠的空間存儲區(qū)塊鏈的全部信息備份。在這種情況下,讀取數(shù)據(jù)的方式是通過RPC與運(yùn)行全節(jié)點(diǎn)的人進(jìn)行交流。

public func getBlockBy(index: Int64, completion: @escaping (NeoClientResult) -> ()) { sendRequest(.getBlock, params: [index, 1]) { result in switch result { case .failure(let error): completion(.failure(error)) case .success(let response): let decoder = JSONDecoder() guard let data = try? JSONSerialization.data(withJSONObject: (response["result"] as! JSONDictionary), options: .prettyPrinted), let block = try? decoder.decode(Block.self, from: data) else { completion(.failure(.invalidData)) return } let result = NeoClientResult.success(block) completion(result) } } }

這一組代碼可以實(shí)現(xiàn)從鏈上的特定高度獲取一個(gè)區(qū)塊,寫這篇文章時(shí)的區(qū)塊高度為1,348,910,可以檢索并查看任何低于該高度的區(qū)塊。感興趣的話可以在鏈上搜索交易、區(qū)塊以及地址等信息,從而更深入了解數(shù)據(jù)結(jié)構(gòu)的運(yùn)作機(jī)制。https://neotracker.io/

創(chuàng)建錢包

盡管從區(qū)塊鏈讀取數(shù)據(jù)便于收集數(shù)據(jù),但將數(shù)據(jù)寫入?yún)^(qū)塊鏈更有意思。本文將探討NEO區(qū)塊鏈目前正在使用的兩個(gè)主要的寫入操作,即發(fā)送資產(chǎn)與認(rèn)領(lǐng)GAS。希望大家在通讀本文后能對目前使用頻率最高的幾個(gè)區(qū)塊鏈操作有清楚的了解。要想把信息寫入NEO區(qū)塊鏈,首先需要獲得一對有效的公私鑰授權(quán)你的寫入操作。

“錢包實(shí)際上并不存儲任何資產(chǎn),它的功能只是使用私鑰將寫入需求發(fā)送給區(qū)塊鏈?!?/p>

這是錢包軟件用戶最可能出現(xiàn)理解誤區(qū)的一個(gè)地方。實(shí)際上,NEO資產(chǎn)是存儲在區(qū)塊鏈上的;錢包只是一個(gè)交互接口,用戶可以通過這個(gè)交互接口輸入私鑰并移動(dòng)資產(chǎn),即:將信息寫入分布式賬本。

那么如何生成這對公私鑰呢?首先得生成私鑰,私鑰是由64個(gè)字符組成的十六進(jìn)制字符串,可以是0與2^256(1.15792089e77)之間的任一數(shù)字?!百~戶”的其余信息都是根據(jù)這串?dāng)?shù)字派生而來,賬戶信息包括私鑰、WIF(錢包導(dǎo)入格式)、公鑰與地址。

WIF

這是一個(gè)私鑰

0C28FCA386C7A227600B2FE50B7CAEEC86D3BF1FBE471BE89827E19D72AA1D

由于過于復(fù)雜,把私鑰轉(zhuǎn)變?yōu)閃IF(錢包導(dǎo)入格式)。

5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ

雖然仍未達(dá)到完全可讀的程度,但肯定比原字符串更易讀。WIF還有基本錯(cuò)誤檢查功能,所以如果把資產(chǎn)發(fā)送給WIF格式地址,就更有可能檢查出錯(cuò)誤。

公鑰

成功獲得私鑰和WIF后,操作才開始復(fù)雜起來。將整個(gè)客戶端搭建在Swift上很難,Swift沒有加密方法庫來實(shí)現(xiàn)橢圓曲線加密,而NEO需要使用secp256r1橢圓曲線來派生公鑰。

可以通過下方鏈接深入了解有關(guān)信息:

ellipticcurves – Is secp256r1 more secure than secp256k1? – Cryptography Stack Exchange

https://github.com/neo-project/neo/blob/master/neo/Cryptography/Crypto.cs

使用btckeygenie,修改后就可以導(dǎo)入到golang錢包生成器中,并使用gomobile編譯。未來可能能用Swift語言編寫一個(gè)成熟的ECDSA(橢圓曲線數(shù)字簽名算法)庫,但現(xiàn)階段還不能達(dá)到。

地址

獲取公鑰后,只要再獲取地址就可以擁有一個(gè)“完整賬戶”了。在此階段,將十六進(jìn)制或WIF私鑰放入go語言程序包中,生成一個(gè)完整的賬戶。

public init?(wif: String) { var error: NSError? guard let wallet = GoNeowalletGenerateFromWIF(wif, &error) else {return nil } self.wif = wif self.publicKey = wallet.publicKey() self.privateKey = wallet.privateKey() self.address = wallet.address() self.hashedSignature = wallet.hashedSignature() //We'll discuss thislater }

完成了以上步驟,實(shí)際上也就完成了SDK開發(fā)的第一步,也是重要的一步。

發(fā)送資產(chǎn)與認(rèn)領(lǐng)GAS

生成錢包后,資產(chǎn)可以轉(zhuǎn)入錢包地址,但同時(shí)還需要Neon錢包一類的應(yīng)用來發(fā)送資產(chǎn)或認(rèn)領(lǐng)GAS,當(dāng)然我們還希望創(chuàng)建一個(gè)可以嵌入任何iOS移動(dòng)應(yīng)用的SDK。

這就需要實(shí)現(xiàn)sendrawtransaction RPC方法,參考文檔。

RPC方法負(fù)載如下:

"params": [ "80000001195876cb34364dc38b730077156c6bc3a7fc570044a66fbfeeea56f71327e8ab0000029b7cffdaa674beae0f930ebe6085af9093e5fe56b34a5c220ccdcf6efc336fc500c65eaf440000000f9a23e06f74cf86b8827a9108ec2e0f89ad956c9b7cffdaa674beae0f930ebe6085af9093e5fe56b34a5c220ccdcf6efc336fc50092e14b5e00000030aab52ad93f6ce17ca07fa88fc191828c58cb71014140915467ecd359684b2dc358024ca750609591aa731a0b309c7fb3cab5cd0836ad3992aa0a24da431f43b68883ea5651d548feb6bd3c8e16376e6e426f91f84c58232103322f35c7819267e721335948d385fae5be66e7ba8c748ac15467dcca0693692dac"]

出處:

官方文件->NetworkProtocol · neo-project/neo Wiki · GitHub

若結(jié)果為“true”,就意味著當(dāng)前交易就已經(jīng)成功向全網(wǎng)廣播,大功告成!

若結(jié)果為“false”,就意味著當(dāng)前交易未能成功廣播,導(dǎo)致這種情況的原因有許多,如雙重支付、簽名不完整等。在此例中,交易經(jīng)確認(rèn)后已經(jīng)成功廣播,但是由于存在雙重支付,因此未能進(jìn)行第二次廣播。

最終javascript sdk輸出的十六進(jìn)制字符串終于自己的字符串會一致。

跟著javascript操作一遍后,就能為發(fā)送資產(chǎn)交易的完整內(nèi)存配置繪制一個(gè)一目了然的示意圖,如下:

如果詳細(xì)地瀏覽每一部分,就會發(fā)現(xiàn)交易從高度最低的內(nèi)存地址(0x00)開始,一直到最高的內(nèi)存地址(0xXX),在這里XX是以十六進(jìn)制表示的交易長度。

第一個(gè)元數(shù)據(jù):包括交易的種類、版本與屬性。交易種類是轉(zhuǎn)賬/80/,版本為/00/(可能需要升級?)這里所說的交易不包含特定的屬性。 Input:Input才是真正有意思的部分。NEO或任一區(qū)塊鏈系統(tǒng)的余額不同于傳統(tǒng)

余額總數(shù)是某交易ID下“未消耗”數(shù)列中所有對象的總合。當(dāng)我們發(fā)送GAS等資產(chǎn)時(shí),就需要使用這些未消耗的Input來生成一個(gè)結(jié)果。例如,如果需要發(fā)送28個(gè)GAS,就需要一個(gè)值為28的Input,但如果需要發(fā)送29個(gè)GAS,就需要兩個(gè)Input,一個(gè)值為28,另一個(gè)值為1。你看,所有的交易都會歸納為一個(gè)任意數(shù)值。目前能進(jìn)行的最大的交易就是發(fā)送30個(gè)GAS,這需要3個(gè)Input。

第二個(gè)元數(shù)據(jù):表示Output的次數(shù)。例如,如果我們想要發(fā)送28個(gè)GAS,僅會產(chǎn)生一個(gè)Output,因?yàn)槲覀儠乃蠴utput,僅留下一個(gè)Output,這個(gè)Output即為發(fā)送給接收人的新交易信息。但如果想要發(fā)送27個(gè)GAS呢,情況就會更加復(fù)雜,因?yàn)檫@時(shí)會產(chǎn)生兩個(gè)Output,一個(gè)Output是發(fā)送至接收人的27個(gè)GAS,另一個(gè)是發(fā)回給發(fā)送人的找零。所以每個(gè)交易都會產(chǎn)生1個(gè)或2個(gè)Output。 資產(chǎn)ID:NEO網(wǎng)絡(luò)里的每個(gè)資產(chǎn)都有其獨(dú)一無二的標(biāo)識符,目前有兩個(gè)標(biāo)識符,但未來可能會有無數(shù)個(gè)標(biāo)識符。 發(fā)送資產(chǎn)數(shù)額:這是不言自喻的,需要乘以100000000驗(yàn)證浮點(diǎn)數(shù)精度 接收人地址哈希值:這也是不言自喻的,代表接收人地址的哈希值 Total-Send總計(jì):這是發(fā)回給錢包地址的找零,如果找零為0,你就不需要填寫這個(gè)字段或后面的發(fā)送人地址哈希值 發(fā)送人地址哈希值:接收找零的地址哈希值

簽名:繼續(xù)使用同一個(gè)p256橢圓曲線來為負(fù)載簽名,這就是第三個(gè)元數(shù)據(jù)塊前的所有內(nèi)容。

NEO公鑰:即為普通的公鑰,但包括前綴與后綴字節(jié),我也不清楚前綴和后綴的用處,可能有檢查錯(cuò)誤的功能。

關(guān)于“怎么創(chuàng)建NEO輕客戶端”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點(diǎn)。


分享標(biāo)題:怎么創(chuàng)建NEO輕客戶端
轉(zhuǎn)載來于:
http://weahome.cn/article/geiecj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部