├── Frame.png ├── img ├── image-20250504152836834.png ├── image-20250504152848878.png ├── image-20250504154447282.png └── image-20250504154454467.png └── README.md /Frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kpyaoqi/ebay-truffle-auction/HEAD/Frame.png -------------------------------------------------------------------------------- /img/image-20250504152836834.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kpyaoqi/ebay-truffle-auction/HEAD/img/image-20250504152836834.png -------------------------------------------------------------------------------- /img/image-20250504152848878.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kpyaoqi/ebay-truffle-auction/HEAD/img/image-20250504152848878.png -------------------------------------------------------------------------------- /img/image-20250504154447282.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kpyaoqi/ebay-truffle-auction/HEAD/img/image-20250504154447282.png -------------------------------------------------------------------------------- /img/image-20250504154454467.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kpyaoqi/ebay-truffle-auction/HEAD/img/image-20250504154454467.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ebay-truffle-auction 2 | 3 | #### master分支是连接了Java后端的代码,对Mysql数据库进行了操作,如果不熟悉后端的话,可以先使用noback分支 4 | 5 | #### 接区块链项目开发、智能合约开发,需要的私我😄 6 | 7 | ## 声明:如有任何问题请联系wx:YQ-SmileATT 8 | 9 | ## 效果展示: 10 | 11 | ![image-20250504152836834](./img/image-20250504152836834.png)![image-20250504152848878](./img/image-20250504152848878.png)![image-20250504154447282](./img/image-20250504154447282.png)![image-20250504154454467](./img/image-20250504154454467.png) 12 | 13 | 14 | 前置知识:solidity、truffle、JavaScript、web3.js、Java(非必须其他后端语言均可)...... 15 | 16 | 一个基于truffle搭建的拍卖系统项目,这个项目主要是基于以太坊开发拍卖系统DApp,拍卖的原理类似于eBay,所以又可以叫做“去中心化eBay”项目. 17 | 18 | 默认检测Metamask钱包插件,若有则使用MetaMask进行交互,若无则连接本地的8545端口. 19 | 20 | ## 应用架构图: 21 | 22 | ![Frame](Frame.png) 23 | 24 | 首先确保电脑已经安装**truffle、webpack、ganache-cli** 25 | 26 | ``` 27 | npm install -g truffle@5.7.4 webpack@5.75.0 ganache-cli@6.12.2 28 | ``` 29 | 30 | 然后打开./app/package.json进行修改并安装相关包 31 | 32 | ``` 33 | // 这个是我的 34 | { 35 | "name": "app", 36 | "version": "1.0.0", 37 | "description": "", 38 | "private": true, 39 | "scripts": { 40 | "build": "webpack", 41 | "dev": "webpack-dev-server" 42 | }, 43 | "devDependencies": { 44 | "@openzeppelin/truffle-upgrades": "^1.17.0", 45 | "copy-webpack-plugin": "^5.0.5", 46 | "webpack": "^4.41.2", 47 | "webpack-cli": "^3.3.10", 48 | "webpack-dev-server": "^3.9.0" 49 | }, 50 | "dependencies": { 51 | "@babel/core": "^7.20.12", 52 | "ipfs-http-client": "^50.1.2", 53 | "ethers": "^5.4.0", 54 | "web3": "^1.2.4" 55 | } 56 | } 57 | ``` 58 | 59 | ``` 60 | npm install 61 | ``` 62 | 63 | 还要安装IPFS,[下载链接](https://dist.ipfs.tech/#kubo),我安装的版本是 kubo_v0.18.1 64 | 65 | 启动IPFS后,打开IPFS的[UI前端](http://localhost:5001/webui),修改网关等配置文件并保存,然后重启IPFS 66 | 67 | ``` 68 | { 69 | "API": { 70 | "HTTPHeaders": { 71 | "Access-Control-Allow-Credentials": ["true"], 72 | "Access-Control-Allow-Headers": ["Authorization"], 73 | "Access-Control-Allow-Methods": ["GET","POST"], 74 | "Access-Control-Allow-Origin": ["*"], 75 | "Access-Control-Expose-Headers": ["Location"] 76 | } 77 | }, 78 | "Addresses": { 79 | ... 80 | "Gateway": "/ip4/127.0.0.1/tcp/9001", 81 | ... 82 | } 83 | ... 84 | } 85 | ``` 86 | 87 | 在启动 ganache-cli 、IPFS后,在项目根目录下使用 truffle 部署合约 88 | 89 | ``` 90 | truffle migrations 91 | ``` 92 | 93 | 新增商品服务器时监听区块链状态,然后添加到mysql数据库中,我部署在我的Java服务器里了([代码地址](https://github.com/kpyaoqi/JavaServer)) 94 | 95 | 如果Java不熟悉的话,也可以替换成直接查询区块链数据,或者自己有熟悉的后端语言的话也可以用其他的语言部署 96 | 97 | 在进行服务跳转的时候,会遇到跨域问题,需要在webpack.config.js文件添加一条代理配置: 98 | 99 | ```js 100 | devServer: { 101 | contentBase: path.join(__dirname, "dist"), compress: true,port: 8080, 102 | proxy: { 103 | '/**': { 104 | target: 'http://localhost:80', 105 | secure: false 106 | } 107 | } 108 | }, 109 | ``` 110 | 111 | 然后在项目app目录下启动项目 112 | 113 | ``` 114 | npm run dev 115 | ``` 116 | 117 | 觉得不错的麻烦点一下Star,感谢^_^ 118 | --------------------------------------------------------------------------------