对于一个新手来说,想开发DApp,最头痛是不知道怎么去学?怎么入手?应该去学点什么?好,作为一个踩过坑的我,接下来给大家聊聊我目前知道的吧,这篇文章理论偏重,下篇文章开始会给大家写点实战点的。
文:谦益
能看到这篇文章的应该对区块链的一些基础知识有一定了解了,比如:
我就当做你们对上面的已经了解了,不了解的可以看我以前写过的笔记或者网上查找相应的资料。
如果你想开发一个DApp,可能网上看到最多的是web3.js之类的,有人就开始疑问了,他是做什么的?其实他就是一个js库,和jQuery库类似。
好了,回到DApp开发上,先来说说DApp的运作流程,DApp我个人的理解,他的本质其实是一个H5 网页,也可以说是一个H5 App。
当你操作这个网页时,比如转账呀,这时网页的js会去调取对应的方法,这个方法会去调web3.js里面对应的方法。
要想知道web3.js里面做了什么,就得先知道
curl --data { "jsonrpc":“2.0”, "method":“eth_sendtransaction”, "params"[{ "from":"0xeb85a5", "to":"0x6ff93", "data":"0xcddddd" }] "id":8} localhost:8123
这里你先不管,里面这些参数是什么意思,当以太坊的节点拿到拿到这样的json数据请求就会处理转账了,然后再广播给所有节点。至于为啥要采用RPC服务这里不展开讨论。
好了,知道上面两点再回到DApp 的web3.js做了什么的问题上。
其实web3.js里面就是对这些固定的操作,比如获取账号信息,转账,还有调取合约等功能做了封装,而怎么调取这些功能,就是通过调用以太坊的 JSON RPC API 完成的。
看到这里是不是就有点DApp的开发思路了,对没错。如果你的DApp所有数据存在以太坊里面,你可以不用再写后台,就一个纯H5网页就能做出一个DApp,但是实际开发中并不是这样,继续往下看。
我们现在需要做一个养宠物的DApp,我们不同基因的宠物他有不同的的特性,这些特性,我们该怎么处理?
写在js代码里面 ,那后期如果想加些特性,就得更新代码,那随着特性越来越多代码会越来越多,不利于维护,往往做法是把某种基因的特性存到我们自己的服务器里面,通过请求我们提供的API去拿到这些特性。有人会说,这又变成中心化了,没错,目前由于一些技术瓶颈,还不能做到100%去中心化。
上面说的是把宠物的特性单独存起来了,而一些宠物的交易,或者交配等这些操作,是需要调取合约的,web3.js里面又封装好了调合约的方法,是不是这些操作有让网页的js自己处理呢?也可以,不过有部分人觉得这样不利于维护,有了另一种做法,把DApp和传统H5 APP一样,DApp只负责展示,所有数据像后台去拿。于是便有了nodejs,go,java版本的SDK,而这些SDK里面其实做的事应该也是和web3.js类似。
我也是才开始学习以太坊才2周左右,可能对一些理论,一些概念理解不是很准确,或者是有误的。发文只是想分享下我最近的学习心得,让一些比我晚起步的少踩一些坑,如果你发现有哪里不对的,欢迎留言我会积极修正和接纳。
谢谢你耐心的看完了。