开发Dapp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | 开发Dapp流程 1.vue前端生成项目, 写好前端页面 2.安装truffle npm install -g truffle npm install -g ethereumjs-testrpc 3.下载ganache软件 https: //www.trufflesuite.com/ganache# 4.在谷歌浏览器下载MetaMast小狐狸插件, 加入应项目中生成的私匙 4.在根目录初始化truffle truffle init 5.配置truffle-config.js module.exports = { contracts_build_directory: "./src/contract" , // 输入目录 网络 networks: { development: { host: "127.0.0.1" , // Localhost (default: none) port: 7545, // Standard Ethereum port (default: none) network_id: "*" , // Any network (default: none) }, } }; 6.migrations目录文件是钱包那边给的, contracts目录文件也是钱包那边给的sol文件 7.静态文件引入web3.js与, truffle-contract.js (用package.josn 也可以引入) 8.web3.js初始化, 在app.vue中 window.addEventListener( 'load' , async () => { var web3Provider; if (window.ethereum) { web3Provider = window.ethereum; try { // 请求用户授权 await window.ethereum.enable(); } catch (error) { // 用户不授权时 console.error( 'User denied account access' ); } } else if (window.web3) { // 老版 MetaMask Legacy dapp browsers... web3Provider = window.web3.currentProvider; } else { web3Provider = new Web3.providers.HttpProvider( 'http://localhost:7545' ); } window.web3 = new Web3(web3Provider); new Vue({ i18n, router, store, render: h => h(App), }).$mount( '#app' ); }); 9.启动truffle truffle develop compile migrate 10. 如何使用, 如MetaCoin.js import MetaCoin from '@/contract/MetaCoin.json' ; let adoptionInstance = null ; const Contracts = { contract: null , // 初始化 init() { return new Promise((resolve, reject) => { if (adoptionInstance) { resolve(); return ; } this .contract = TruffleContract(MetaCoin); this .contract.at( '0x80fa9638580fD0c325e27FD84845Eb0957Da32C0' ); // 项目生成合约地址 this .contract.setProvider(window.web3.currentProvider); this .contract .deployed() .then(instance => { adoptionInstance = instance; resolve(); }) . catch (err => { reject(err); }); }); }, // 投资买入, MetaCoin.json中的方法 buy(address, params ) { return new Promise((resolve, reject) => { adoptionInstance .buy(address, params ) .then(res => { resolve(res); }) . catch (err => { reject(err); }); }); }, }; export default Contracts; 11.获取帐户地址 /** * 获取帐号 */ export function getAccounts() { return new Promise((resolve, reject) => { window.web3.eth.getAccounts((error, accounts) => { if (error) { console.log(error); reject(error); } var account = accounts[0]; resolve(account); }); }); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决