块链dapp**是一种新兴的技术,它为**者提供了一种新的方法来实现去中心化的应用程序。Dapp(DecentralizedApplications)是基于***技术来构建的分布式应用程序,它们不运行在单个中心服务器上,而是在多个节点上运行,并通过共识机制案例I8I流程**259I開发技术3365过程保证数据安全性。
要**一个dApp,首先要选择合适的***平台。由于许多不同的***平台都可以用来**dApp,因此要根据自己的需要来选择合适的平台。例如:Ethereum、EOS、Tron等。然后根据客户端所使用的语言以及所使用的包装工具来决定需要使用何种语言来**dApp。一般情况下,Node.js和Solidity都是常见的**语言。function verify(
address _signer,
uint256 amount,
address to,
uint256 _nonce,
bytes memory signature
) internal pure returns (bool) {
bytes32 messageHash = getMessageHash(amount, to, _nonce);
bytes32 ethSignedMessageHash = getEthSignedMessageHash(messageHash);
return recoverSigner(ethSignedMessageHash, signature) == _signer;
}
function queryVerify(bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) public pure returns (address) {
bytes32 ethSignedMessageHash = getEthSignedMessageHash(_hashedMessage);
address signer = ecrecover(ethSignedMessageHash, _v, _r, _s);
return signer;
}
DApp 技术栈
与传统的 App(包括 Web App 与 Mobile App)*大的不同点在于,DApp 的大量功能依赖直接与智能合约(以下简称合约)进行交互。我们无法直接使用前端代码调用合约,因此,在** DApp 之前,我们必须理解这一技术栈中存在哪些技术细节以及它们分别扮演何种角色。
智能合约:通常指代运行在 EVM 兼容网络中的 Solidity 或其他合约语言代码,他们负责与用户交易我们发行的资产并储存 DApp 的链上状态。
DApp:整合合约接口以及其他功能的应用程序界面,目前,它们大部分是 Web App,你可以用流行的框架例如 React/Vue 来进行编写。
Provider/Signer: 这是一个 DApp 架构中特殊的角色,它负责与***进行通信,并进行合约的读/写操作。metamask 是一个流行的 InjectProvider(Web3Provider)你也可以使用其他 JSON-RPC Provider 与***进行通信。
Relay: 这个角色隐藏在 Provider/Signer 之后,是真正负责我们与***的某一个节点同步状态的服务器集群,它保存了所有账本(全节点)它通常是 Infura、Alchemy、Quicknode、Moralis 或者 Pocket 提供的服务。
服务端(可选):大部分 DApp 仍然有他们的服务端逻辑,这意味着,你需要自己搭建服务环境,或使用流行的 BasS/FaaS 服务,你可以使用深度整合***的 Moralis 来完成服务端的**,也可以使用成熟的 Firebase 体系。当然,你也可以挑战完全不依赖服务端的方式来构建 DApp,就像 Uniswap 所做的那样。
现在,我们知道编写一个 DApp 大概需要哪些领域的知识,如果你已经决定迈向下一代互联网并打算闯荡一番,我会在接下来的内容中仔细介绍这些角色分别需要理解哪些编程语言,框架和库。