基于Ethereum & IPFS的去中心化Ebay区块链项目开发实战

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 这是一个中级水平的课程,您可以建立一个类似`eBay`的市场,在这个市场上**卖家**可以拍卖他们的产品,**买家**也可以通过拍卖来购买。 因为我们会将所有的业务逻辑和数据存储在以太坊区块链上,所以这将是一个完全去中心化的应用程序。

孔壹学院:国内区块链职业教育引领品牌,专注于区块链产品底层研发和职业教育培训,孔壹学院是一家集产品研发、外包服务、脱产班、周末班、企业内训、区块链人才服务提供商为一体的综合性区块链商学院。
官方网站:http://www.kongyixueyuan.com
黎跃春(微信:liyc1215):孔壹学院 、 BloggerChain创始人,资深讲师,区块链、高可用架构师。
联系我们:微信:ershiyidianjian

参加Ebay项目线下周末班请点击周末班详情

目录

1. 介绍

1.1 eBay简介

eBay,(EBAY,中文电子湾、亿贝、易贝)是一个管理可让全球民众上网买卖物品的线上拍卖及购物网站。ebay1995年9月4日Pierre OmidyarAuctionweb的名称创立于加利福尼亚州圣荷西。人们可以在ebay上通过网络出售商品。

1.2 本课程介绍

这是一个中级水平的课程,您可以建立一个类似eBay的市场,在这个市场上卖家可以拍卖他们的产品,买家也可以通过拍卖来购买。

因为我们会将所有的业务逻辑和数据存储在以太坊区块链上,所以这将是一个完全去中心化的应用程序。与此同时,如果我们将所有的图片和大量文本都存储在以太坊区块链上,这将非常昂贵,甚至由于以太坊EVM的一些限制,我们根本不可能将大量的图片和文本存储到区块链。为了解决这个问题,我们将在IPFS(Inter Planetary File System)上存储大量的文本和图像。我们将更多地了解IPFS并将其融入到本课程的应用中。

1.3 为什么要去中心化

在我们开始构建应用程序之前,花一分钟的时间来了解在像Ethereum这样的去中心化平台上构建产品的动机。

eBay取得了巨大的成功,因为它使得买卖非常有效率。在互联网成为主流之前,人们只能在当地社区购买和出售商品,当然也可以在一定的地理范围内购物。随着越来越多的人上网,像eBay这样的公司完全可以体验整个线下购物拍卖的场景,任何人都可以在互联网上从世界任何地方买卖任何东西。 eBay对于消费者和商人都具有划时代的意义。

尽管这对大家都有好处,并且总体上改善了贸易和经济,但是它有一些缺点。

  • 参与的商人都在受到公司的相关限制:公司可以随时决定是否阻止商家自行处理交易,这对商人来说可能是一个巨大的打击。
  • 商家支付费用列出他们的产品,并支付销售佣金。付费本身并不是那么糟糕,因为eBay提供服务。然而,上市费有时太高,商家要么保证金很高,要么把这笔费用交给消费者。
  • 商家/消费者不拥有他们的任何数据。评论、购买历史等都是这些公司所有。例如,如果商家想将自己的操作转移到另一个提供商,那么导出她的评论或其他数据是几乎不可能的。

在以太坊这样的平台上构建产品解决了这些问题。商户的账户不能被封锁,数据是公开的,所以它可以很容易导出,交易费用比中心化的公司少很多很多。

1.4 项目详情

现在,您已经了解了构建此应用程序的原因以及为什么要构建这个应用程序,接下来我们来看一个高级别的,我们将在此项目中实现的所有功能。

  • 项目展示:一个网站应该允许商家列出他们的项目。我们将为任何人建立免费列出他们的项目的功能。我们会将这些项目都存储在区块链和非区块链的数据库中,以方便查询。
  • 将文件添加到IPFS:我们将添加将产品图像和产品描述(大文本)上传到IPFS的功能。
  • 浏览产品:我们将添加根据类别、拍卖时间等过滤和浏览产品的功能。
  • 拍卖:就像eBay,我们将实现维克里拍卖(Vickrey auction),即次价密封投标拍卖(Second-price sealed-bid auction)对物品进行投标。因为以太坊上的一切都是公开的,不像中心化应用程序,所以我们的实现将有所不同。我们的实现将非常类似于ENS的招标流程。
  • 托管合约:一旦投标结束,产品有赢家,我们将在买方卖方第三方仲裁人之间创建一个托管合同。
  • 2-of-3 数字签名:我们将通过实施2-of-3 数字签名解决方案来增加欺诈保护,其中3名参与者中的2名必须投票将资金释放给卖方或将金额退还给买方。

1.5 技术需求

要成功完成本课程,您应该对以下语言/技术有基本的了解:

  • Solidity面向对象编程:在讲解这个项目之前,我们会先给大家讲解Solidity面向对象编程基础,如何编写简单合约,部署合约,合约简单互动。
  • HTML/CSS/React:您应该对构建前端的HTML / CSS有基本的了解。
  • Javascript:我们在这个过程中广泛使用JavaScript。它在服务器端用于将数据保存到数据库并查询数据库并将结果返回到前端。前端使用Web3.js区块链进行交互。我们尽力保持javascript代码尽可能简单,以迎合不同背景的学生。
  • Database:我们将在本课程中使用MongoDB来存储产品信息。没有必要特别了解MongoDB的知识,但是对这个过程需要对数据库有基本的了解。

2. 项目架构

eBay dapp 项目架构

在我们开始执行代码之前,让我们来看看我们将在本课程中构建的Dapp的体系结构。

  • Web前端:Web前端是HTMLCSSJavascript的组合(大量使用web3js)。用户将通过这个前端应用程序区块链IPFSnodeJS服务器交互
  • 区块链:这是所有代码和交易所在的应用程序的心脏。商店中的所有产品用户出价托管都写在区块链上。
  • MongoDB:尽管产品存储在区块链中,但是查询区块链展示产品应用各种过滤器(仅显示特定类别的产品,显示即将过期的产品等)效率并不高。我们将使用MongoDB数据库来存储产品信息并查询它以展示产品。
  • NodeJS服务器:这是前端通过其与数据库进行通信的后端服务器。我们将公开一些简单的API来为前端查询和从数据库中检索产品。
  • IPFS:当用户在商店中列出商品时,前端会将产品文件和描述上传到IPFS,并将上传文件的散列HASH存储到区块链中。

3. 应用程序流

应用程序流

为了理解我们在前面部分中看到的所有组件,让我们看看用户列出项目时的应用程序流程。这将使您更好地了解所有组件如何协同工作。

  • Web前端将包含一个HTML表单,用户可以在其中输入产品详细信息(名称,起始价格,图像,说明等)并点击保存 ①。
  • 网络前端将产品图像和产品描述上传到IPFS,并获取这些上传数据的链接。 ② 和 ③。
  • 网页前端然后调用合约将产品信息 + IPFS链接存储到区块链上。在成功将产品添加到区块链中时,合约会触发事件,该事件会返回所有产品信息。 ④ 和 ⑤。
  • NodeJS服务器设置为监听这些事件,当事件被合约触发时,服务器读取事件的内容并将产品插入到MongoDB中。 ⑥,⑦ 和 ⑧。

当我们实现这些功能时,我们将继续讨论剩下的应用程序流程。

4. 实现步骤

  • 先通过truffle frameworkSolidity实现合约代码,并将其部署到truffle develop自带的测试网络中,并且在truffle console中可以自由交互。
  • 然后我们将学习IPFS,通过命令行安装并与之交互。
  • 在后端实现完成后,我们将构建Web前端以与合约和IPFS进行交互。我们也会实现招标,揭示前端的拍卖功能。
  • 我们将安装MongoDB设计数据结构来存储产品。
  • 数据库启动并运行后,我们将实现监听合约事件的NodeJS服务器端代码,并将请求记录到控制台。然后我们将执行代码将产品插入数据库。
  • 我们将更新我们的前端,从数据库而不是区块链中查找产品。
  • 我们将实现托管合同相应的前端,参与者可以向买方/卖方发放或退款。

5. 以太坊智能合约(Ethereum Contract)

  1. Truffle Project
  2. 电子商务产品(Ecommerce Product)智能合约
  3. 从区块链中添加和检索产品
  4. 控制台交互
  5. eBay拍卖
  6. 密封拍卖
  7. 揭标
  8. Contract Code
  9. 控制台交互

6. IPFS

  1. IPFS安装配置
  2. API 介绍

    • ipfs
    • ipfs-api
    • interface-ipfs-core
  3. demo演示

    • 直接在终端和IPFS交互
    • 创建一个节点并向IPFS添加一个文件
    • 部署个人独立博客到IPFS
    • 创建一个浏览器APP来在节点之间交换文件
    • dag API
    • IPFS + Ethereum BlockChain
    • 如何使用IPFS PubSub Room构建应用程序
    • 如何使用CRDTIPFS建立协作编辑应用程序

7. Web前端 - Product

  1. 概述
  2. 设置上传到区块链的种子数据
  3. HTML/React 设置
  4. 渲染产品
  5. 展示产品列表
  6. 实现产品提交表单
  7. 上传表单数据到IPFS
  8. 保存

8. Web前端 - 拍卖

  1. React 前端
  2. JS 实现拍卖逻辑
  3. 锁定和显示出价

9. 托管服务(Escrow Service)

  1. 概述
  2. 托管智能合约(Escrow Contract)
  3. 声明获胜者
  4. 发行资金

10. 产品离线(Products Offchain)

  1. 概述
  2. MongoDB设置
  3. 产品定义
  4. NodeJS app 设置
  5. Solidity Events
  6. 存储产品
  7. 查看产品

11. 项目效果










12. 技术交流

  • 区块链技术交流QQ群:348924182
  • 进微信群请加微信:liyc1215
  • 「区块链部落」官方公众号

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
2月前
|
安全 区块链
区块链农场游戏系统开发运营版/玩法详情/规则方案/案例设计/项目源码
Developing a blockchain farm game system is an interesting and challenging task. Here is a design solution that can help you get started developing such a system
|
5月前
|
供应链 监控 安全
企业如何搭建自己的联盟链 | 区块链落地项目运用开发
企业如何搭建自己的联盟链 | 区块链落地项目运用开发
|
7月前
|
供应链 安全 物联网
区块链去中心化交易所源码|去中心化交易系统开发
随着区块链技术的发展,应用的扩展,区块链软件开√发也随之应用到物联网、供应链管理等领域,其中包含区块链交Y所系统,区块链去中心化交Y所,依托于区块链技术,具有去中心化、匿名性、信息不可纂改等特点
|
1月前
|
安全 AndFix 区块链
区块链3D元宇宙游戏系统开发规则玩法/步骤指南/源码项目
Developing a blockchain metaverse 3D game system is a complex and innovative process that requires comprehensive consideration of blockchain technology, game design and development, and virtual reality (VR). The following is the general process for developing the system:
|
4月前
|
算法 数据管理 区块链
区块链合约代币质押项目系统开发模式详情
多链是一种新兴的区块链技术,其分片技术被称为“多链分片”
|
6月前
|
安全 Cloud Native Go
开源与区块链:去中心化的未来
开源与区块链:去中心化的未来
62 0
开源与区块链:去中心化的未来
|
7月前
|
存储 运维 安全
怎么开发DAPP区块链 | 去中心化应用模式系统搭建
 DAPP的优势在于区/块链特有的数据确权、价值传递功能,DAPP在用户认证流程变更、J易安全、行业生产关系变更、减少运维成本、降低技术开发成本等方面具有较大的优势,也能大幅提升用户体验。
|
7月前
|
安全 区块链 数据安全/隐私保护
区块链Swap博饼交易所兑换系统开发项目方案详情
Web3则是一种更高级的互联网技术,它基于区块链技术,并通过去中心化
|
7月前
|
SQL 安全 网络安全
区块链交易所系统开发(稳定版)/开发案例/详细逻辑/规则方案丨区块链链交易所源码项目
The source code parsing of blockchain exchanges involves a large amount of technical details and complexity. The following is an overview and explanation of the common components and functions of blockchain exchange source code
|
7月前
|
SQL 安全 区块链
交易所系统开发(案例项目)丨区块链交易所系统开发(稳定版)/成熟技术/步骤逻辑/源码教程
The development of a blockchain exchange system involves complex technologies and functions.

热门文章

最新文章