中心化的就是节点由中心决定,节点必须依赖中心,节点离开了中心就无法生存。而去中心化就是随着主体对客体的相互作用的深入和认知机能的不断平衡、认知结构的不断完善,个体能从自我中心状态中解除出来,任何人都是一个节点,任何人也都可以成为一个中心,,任何中心都不是永久的,而是阶段性的,任何中心对节点都不具有强制性。它是互联网发展过程中形成的社会关系形态和内容产生形态,是相对于“中心化”而言的新型网络内容生产过程。
DApp的整体框架
去中心化app可以由多个智能合约组成,每个智能合约都有各自的地址,类似于以太坊上的一个账户,可以存取以太币;
DApp的基本架构图
分为三个部分:
1区块链以及本身提供的能力。
2三方钱包等提供的能力。
3我们要写的DApp部分---分为三个部分:
----3.1和EVM交互的合约层---solidity编写。
----3.2和合约层、钱包交互的交互层-web3js,其和Ajax类似,可以用来读取以太坊区块链,主要使用的JSON RPC和区块链进行通信,对区块链网络进行数据的读写操作。
----3.3前端代码业务层-vue、react等编写;DAPP可以使用。
开发dapp的步骤
开发智能合约:一般使用solidity语言进行开发,选用以太坊合约等。
部署智能合约:一般使用remix工具进行部署,先在测试环境中进行部署智能合约,申请对应的测试币。
开发dapp前端:使用前端框架进行开发,前端设计到和钱包的连接、调用合约、数据查询等内容。
环境搭建
主要需要解决的问题是模拟链(毕竟真链上的操作都是要花钱的)、钱包和合约的问题。
1链可以用ganache进行模拟。
2钱包用MetaMask。
3 solidity既然是一个编程语言,并且要跑再EVM上,那就有编写、编译、测试和调试的地方,这里推荐使用remix。
部署和调用
DApp在被调用之前需要先部署到以太坊上,可以直接使用remix进行部署,用来编写、编译和部署以太坊合约。主要分为部署和调用两部分。
部署:
智能合约使用RPC调用以太坊的钱包、Web3.js等工具;
Web3.js将合约部署到以太坊中的Solc编译器中。
编译器将编译后的字节码返回。
将合约字节码以及相关参数发送到以太坊的节点中。
以太坊部署节点后返回合约地址以及二进制接口(ABI)
调用
部署好的合约可以进行调用,前端调用主要依赖MetaMask插件,前端的Web3 Provider是与特定的以太坊节点相连,可以直接使用web3.currentProvider调用。