首页 > 其他分享 >基于以太坊Ethereum & IPFS的去中心化Ebay区块链项目实战

基于以太坊Ethereum & IPFS的去中心化Ebay区块链项目实战

时间:2023-10-21 09:45:22浏览次数:46  
标签:IPFS 前端 eBay Ebay 产品 中心化 区块 我们

基于以太坊Ethereum & IPFS的去中心化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. 项目效果

标签:IPFS,前端,eBay,Ebay,产品,中心化,区块,我们
From: https://www.cnblogs.com/add1188/p/17778478.html

相关文章

  • 智安网络|从区块链到社交网络:解析去中心化的意义与应用
    在当今数字化的世界中,一个越来越常见的概念是“去中心化”。从区块链技术到金融系统,从社交网络到数据存储,去中心化被认为是一种前所未有的方式来重新定义和改变传统的中心化结构。那么,去中心化到底是什么?首先,去中心化是一种思想和哲学,旨在消除中心化权力和控制。传统的中心化结构通......
  • DApp智能合约去中心化软件
      DApp,全称DecentralizedApplication,经常使用的人都知道,它是基于去中心化的应用程序的方向,dapp是通过智能化的合约技术实现,是在上链上运行的,是去中心化的应用软件。  DApp智能合约去中心化软件功能的主要核心,就是无需提供去中心化的服务器,所有的数据都是存储在链上的,具有......
  • 亚马逊、eBay等电商如何提高店铺吸引力?
    在如今竞争激烈的电商领域,店铺排名对于吸引顾客和增加销售至关重要。什么是测评?测评是指买家购买商品,然后给卖家店铺进行综合点评,在亚马逊称为反馈和评论。通常来说,卖家发布商品信息后,联系买家,然后在亚马逊平台选购商品,当买家收到商品后,对卖家的店铺进行综合服务点评。综合服务包括......
  • 亚马逊、eBay等电商卖家如何做测评提高店铺吸引力?
    在如今竞争激烈的电商领域,店铺排名对于吸引顾客和增加销售至关重要。本文将介绍如何测评并提升店铺在eBay和亚马逊等电商平台的排名。什么是亚马逊测评?亚马逊测评是指亚马逊的买家购买商品,然后给卖家店铺进行综合点评,在亚马逊称为反馈和评论。通常来说,亚马逊的卖家发布商品信息后,联......
  • 去中心化交易所(DEX)锁仓质押系统开发【源码合约部署】
    锁仓质押系统是一种机制,通过质押资产以获取治理代币奖励。用户提供质押以支持项目,并获得相应的治理代币奖励。这种机制旨在改进现有的金融体系,让个人与个人可以通过区块链直接服务彼此的金融需求,实现去中心化金融(DeFi)的目标。此外,锁仓质押系统也为去中心化交易所(DEX)、金融应用......
  • 可伸缩性最佳实践:来自eBay的经验(转)
    在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力。我们所做的每一项架构及设计决策,身前身后都能看到它的踪影。当我们面对的是全世界数以亿计的用户,每天的页面浏览量超过10亿,系统中的数据量要用皮字节(1015或250)来计算——可伸缩性是生死交关的问题。在一个可伸缩的架构中,资源的消......
  • PtahDAO普塔道:探索信托投资领域的创新之路.PtahDAO普塔道是一个去中心化信托投资交易
    PtahDAO普塔道:探索信托投资领域的创新之路信托资产配置方式本身具有低风险、高收益的特点,但传统的信托投资交易平台却存在着中心化、不透明、不公平的问题,导致用户的权益受到损害,投资体验不佳。为了解决这些问题,PtahDAO普塔道应运而生,作为全球首个DAO治理资产信托计划的金融平台,它......
  • 防关联浏览器可以帮亚马逊、eBay、Shopee等电商卖家做什么?
    作为电商卖家,你需要不断探索新产品、寻找稳定的货源,对市场趋势时刻保持敏感,不断地给自己的产品增加曝光度,优化listing,还必须了解竞争对手以及保证每个店铺的账号安全等等,其中的门道多不胜数。那么有没有什么工具可以帮助电商卖家提高工作效率呢?VMLogin指纹浏览器是专为电商卖家多账......
  • [GPT] 用dogecoin接受付款,如何实现收款回调,不借助中心化的第三方
     要在不借助中心化的第三方的情况下实现Dogecoin的收款回调,您可以按照以下步骤进行操作: 1.设置一个用于接收收款回调的URL:您需要在您的网站或应用程序中设置一个用于接收收款回调的URL。这个URL将用于接收来自发送Dogecoin的用户的交易信息。 2.创建一个Dogecoin地址:为......
  • IPFS开发
    服务端下载https://github.com/ipfs/ipfs-desktop/releasesWindows版本是下载exe的安装程序。服务端安装安装的步骤参照官方的说明文档,应该是默认安装就可以了。https://docs.ipfs.tech/install/ipfs-desktop/#windowsIPFS客户端Nuget包的安装Install-PackageIpfs.Http.C......