欢迎访问比特币_区块链-币链视界!

币链视界

区块链钱包开发知乎

发布时间:2021-02-23区块链开发评论
文/robin本文由币乎社区()内容支持计划奖励。这是「区块链技术指北」的第21篇文章。如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块

文/robin

本文由币乎社区()内容支持计划奖励。这是「区块链技术指北」的第21篇文章。

如果对我感兴趣,想和我交流,我的微信号:Wentasy,加我时简单介绍下自己,并注明来自「区块链技术指北」。同时我会把你拉入微信群「区块链技术指北」。BTW,李笑来老师也加入了我的知识星球,文末有加入方式。0x00预备知识开发钱包之前,我们需要有以下的预备知识。

第一,什么是钱包,以及相关的分类。

笔者之前写了数篇关于钱包的文章,但都是做了个简单的介绍。本文站在开发者的角度,给读者讲解下怎么样和钱包进行交互,以及如何开发一个钱包。

我们怎么样理解钱包呢?简单讲它是连接区块链的一个入口。目前比较成熟的公链,如比特币、以太坊都有很多钱包可以选择。一般钱包需要完全访问你的用户资产,也就是会要求你输入私钥。钱包的作恶成本极低,这也是笔者建议选择开源钱包的原因之一。

题图来自:?admin/DelphiWhitePaperInterpretation/第二,需要了解下什么是RPC、JSON-RPC以及JSON。

远程过程调用(英语:RemoteProcedureCall,缩写为RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用,例:JavaRMI。[1]RPC的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。

RPC调用分为以下两种:

同步调用,客户方等待调用执行完成并返回结果。异步调用,客户方调用后不用等待执行结果返回,但依然可以通过回调通知等方式获取返回结果。若客户方不关心调用返回结果,则变成单向异步调用,单向调用不用返回结果。异步和同步的区分在于是否等待服务端执行完成并返回结果。

远程过程调用是一个分布式计算的客户端-服务器(Client/Server)的例子,它简单而又广受欢迎。远程过程调用总是由客户端对服务器发出一个执行若干过程请求,并用客户端提供的参数。执行结果将返回给客户端。由于存在各式各样的变体和细节差异,对应地派生了各式远程过程调用协议,而且它们并不互相兼容。其中我们广为使用的是一个叫做JSON-RPC的协议。

JSON-RPC,是一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容通过JSON为主。相较于一般的REST通过网址(如GET/user)调用远程服务器,JSON-RPC直接在内容中定义了欲调用的函数名称(如{"method":"getUser"}),这也令开发者不会陷于该使用PUT或者PATCH的问题之中。本规范主要定义了一些数据结构及其相关的处理规则。它允许运行在基于Socket、HTTP等诸多不同消息传输环境的同一进程中。其使用JSON(RFC4627)作为数据格式。[2]JSON-RPC使用了JSON格式,那JSON是什么呢?

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换语言。使用JSON做数据交换的好处在于,一是兼容性高,二是可阅读性高,三是支持较多的数据格式(比如number,string,booleans,nulls,array,associativearray),四是支持的语言较多。

第三,了解区块链相关的基础知识。

了解区块链,书籍资料不用,一本精通比特币足矣。这里就不赘述了。

第四,掌握一门开发语言。

如果你是一门经验丰富的程序员,此条预备知识可以忽略。如果你是一名非计算机科班出身的区块链技术爱好者,建议从Python入手。同时,多了解下JavaScript。

0x01怎么样开发假设我们把预备知识都了解了,接下来我们需要阅读比特币和以太坊的RPC接口。

我们以比特币为例,根据OriginalBitcoinclient/APIcallslist文档我们可以得到RPC接口提供的函数列表。

以sendrawtransaction为例,这个函数列表提供了四列(Command、Parameters、Description、Requiresunlockedwallet?),分别表示函数名、传入参数、描述、是否需要解锁钱包。

我们把这个函数列表掌握之后,可以选择某一种语言,然后进行区块链钱包相关的开发。

当然,你还需要知道怎么样去部署一个比特币的完全节点和测试网络,这样就可以利用RPC进行接口调用,来和区块链网络进行交互。

0x02相关文档以及源码这里列出主流项目相关的RPC接口以及开源钱包项目,以供读者参考。

2.1Bitcoin2.1.1RPCOriginalBitcoinclient/APIcallslistAPIreference(JSON-RPC)JSONRPCAPI2.1.2WalletBitcoinCore,官方出品bitcoinj,比特币协议Java版bither,简单安全的比特币钱包Electrum,全平台轻钱包bread,iOS钱包Mycelium,Android钱包Copay,同时支持Bitcoin和BitcoinCashbitcoin-wallet,又一款Android钱包DotNetWallet,.NET实现的钱包Coinpunk,基于浏览器的钱包btcwallet,Go实现的钱包2.2Ethereum/ERC202.2.1RPCJSONRPCJSONRPCAPIManagementAPIsethjsonrpcweb3.py2.2.2Walletgo-ethereum,以太坊协议Go版Mist,官方出品Parity,支持Windows、Mac、PC的钱包MetaMaskMyEtherWallet,基于浏览器的钱包eth-lightwallet,轻量级JavasSript版本钱包ethaddress.org,纸质版钱包生成器ИeurealWallet,支持Windows、Mac、PC的钱包2.3其他2.3.1ZcashZcash,官方出品2.3.2BitSharesBitShares,官方出品2.3.3SiaSia,官方出品2.3.4NemNanoWallet,官方出品2.3.5DashDash,官方出品2.3.6QtumQtumCoreWallet,官方出品2.3.7LitecoinLitecoin,官方出品2.3.8IOTAIOTAWallet,官方出品2.3.9MoneroMonero,官方出品2.3.10GXSGXSWalletformobile,官方出品2.3.11EthereumClassicEthereumClassicWallet,官方出品0x03小结本文讲解了开发钱包的预备知识,包括第一是什么是钱包,以及相关的分类,第二是RPC、JSON-RPC以及JSON,第三是了解区块链相关的基础知识,第四是掌握一门开发语言。接着浅谈了怎么样开发,最后列出了主流项目相关的RPC接口以及开源钱包项目。如果读者对钱包开发感兴趣,希望本文能够给读者一个指引。

0x04参考[1]维基百科(2006-07-21).远程过程调用.Retrievedfrom遠程過程調用.[2]维基百科(2017-04-19).JSON-RPC.Retrievedfrom「区块链技术指北」同名知识星球,二维码如下,欢迎加入。BTW,李笑来老师也加入了。

「区块链技术指北」相关资讯渠道:

「区块链技术指北」同名知识星球,官方社区,,,,新浪微博,同时,本系列文章会在以下渠道同步更新,欢迎关注:

「区块链技术指北」同名微信公众号(微信号:BlockchainAge)个人博客,知乎,,[@robinwen](@robinwen)Medium,[@robinwan](@robinwan)原创不易,读者可以通过如下途径打赏,虚拟货币、美元、法币均支持。

BTC:3QboL2k5HfKjKDrEYtQAKubWCjx9CX7i8fERC20Token:0x8907B2ed72A1E2D283c04613536Fac4270C9F0b3PayPal:微信打赏二维码–EOF–

版权声明:自由转载-非商用-非衍生-保持署名(创意共享4.0许可证)

用户评论知乎用户这篇文章是没写完就发出来了?

0

广告位

热心评论

评论列表