Dapp 是 Web3 的应用形态。理解 Dapp 与钱包的交互方式,是前端工程师进入 Web3 的关键一步。
Dapp(Decentralized Application)= 前端界面 + 智能合约。与传统 Web 应用不同的是,Dapp 的后端逻辑运行在区块链上,数据公开透明、不可篡改。
插件钱包(如 MetaMask)是 Dapp 与区块链之间的桥梁:
ABI(Application Binary Interface) 是智能合约的接口描述,定义了函数名、参数类型、返回值等。
当 Dapp 调用合约函数时,需要将函数调用编码为二进制数据,作为交易的 data 字段:
data = 函数选择器(4字节) + 参数编码(每个32字节)keccak256("transfer(address,uint256)") 的前 4 字节 = 0xa9059cbb调用 transfer(0xBob, 100):
0xa9059cbb
0000000000000000000000000Bob的地址(32字节)
0000000000000000000000000000000000000000000000000000000000000064 (100的16进制)