Урок 1

去中心化市场与Remix集成开发环境

在本课中,我们将首先学习去中心化市场的基本概念及其运作原理。紧接着,我们将熟悉Remix集成开发环境,并编写一个简单的Solidity合约。

什么是去中心化市场?

在传统的电子商务市场(如亚马逊和eBay)中,存在一个中央机构促进买卖双方之间的交易。这个中央机构掌控着交易过程、维护产品列表,并管理争议解决。虽然这种中心化模式具有一些优势,但也存在审查风险、高额费用和对信任的依赖等问题。

去中心化市场则利用区块链技术实现无需中介的点对点交易。它消除了对信任的需要,因为交易是透明的,并可以由区块链上的所有参与者验证。OpenBazaar和Origin Protocol便是典型的去中心化市场案例。

Remix集成开发环境介绍

Remix集成开发环境(IDE)是一款功能强大的开源工具,专为开发以太坊智能合约而设计。它可以直接在浏览器中运行,您无需在电脑上安装任何软件。

您可以通过访问https://remix.ethereum.org来使用Remix IDE。在浏览器中打开Remix后,您会看到如下三个面板:

  1. 左侧面板:您可以在此处创建、导入和管理您的Solidity文件。此外,您还可以使用各种插件来进行合约的编译、测试、调试和部署等操作。

  2. 中间面板:这是代码编辑器,用于编写和编辑Solidity代码。

  3. 右侧面板:此面板提供了各种工具,用于编译合约,在以太坊网络(可以是真实的以太坊网络,也可以是JavaScript VM模拟环境)上部署合约,以及运行您部署的合约。

编写您的第一份Solidity合约Item

在本部分,我们将开始编写我们的第一份Solidity合约。该合约将代表我们市场中的一个基本商品(item)。

首先,在Remix中单击左侧面板顶部的第二个图标(文件图标)创建一个新文件。中间面板上将出现一个新对话框。输入Item.sol作为文件名,然后单击“OK”。

创建好文件后,就可以开始编写我们的合约了:

Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

contract Item {
    // Define an event that will be fired when a new item is created
    event NewItem(uint itemId, string itemName, uint itemPrice);

    // Each Item has an id, a name and a price
    struct ItemStruct {
        string name;
        uint price;
    }

    // Array to hold all the items
    ItemStruct[] public items;

    // Function to create a new item
    function createItem(string memory _name, uint _price) public {
        items.push(ItemStruct(_name, _price));
        emit NewItem(items.length - 1, _name, _price);
    }
}

这份合约的各个部分都代表什么含义呢?下面,我们将一步步进行探讨:

  1. SPDX License Identifier:这是一种表达合约许可证的标准方式。//SPDX-License-Identifier:MIT行表示该合约使用宽松的MIT许可。

  2. Pragma指令:pragma solidity ^0.8.6;指明合约是使用Solidity 0.8.6版本编写的。符号^表示它也将兼容任何更新的版本,但不包括0.9.0版本。

  3. 合约定义:contract Item {...}定义了一个名为Item的新合约。这是我们编写合约的状态变量和函数的地方。

  4. 事件定义:event NewItem(uint itemId, string itemName, uint itemPrice);定义了一个事件,每当创建新Item时,我们都可以发出事件。事件是智能合约记录外部各方可以监听的活动的一种方式。

  5. 结构定义:struct ItemStruct {...} 定义了一个新的数据类型ItemStruct,它表示一个带有名称价格的商品。

  6. 状态变量:ItemStruct[] public items;定义了一个状态变量item,它保存了一个ItemStruct数组,public关键字会自动创建一个getter函数,允许任何人访问商品列表。

  7. 函数定义:function createItem(string memory _name, uint _price) public {...}定义了一个公共函数,任何人都可以调用它来创建一个新商品。该函数接收名称和价格作为参数,创建一个新的ItemStruct,将其添加到item数组中,并发出一个NewItem事件。
    要编译此合约,请转到右侧面板并单击顶部的第三个图标(Solidity徽标)。在这里,您可以编译合约。单击“Compile”按钮,如果所有信息都正确,您的合约将编译成功。

此时,左侧面板可能会弹出一个问题:

关于Swarm或IPFS的问题是关于Remix将用来存储合约元数据的方法。

  1. IPFS:星际文件系统(IPFS)是一种旨在创建永久和去中心化网络的协议。它就像一个单一的BitTorrent Swarm,在一个Git存储库中交换对象。

  2. Swarm:Swarm是一个分布式存储和内容分发服务,是以太坊Web3堆栈的原生基础层服务。它允许一组节点存储和分发数据。
    在编译合约时,Solidity编译器会生成一个包含应用程序二进制接口(ABI)和字节码等信息的JSON文件,这是合约的元数据。将元数据存储在去中心化存储网络上可确保其永久可用,还可用于验证合约的源代码。

如果您不打算在Etherscan或其他区块链浏览器上验证合约,而只是出于学习目的,您可以在Swarm或IPFS中任选其一使用,或者直接忽略,并继续下一步的学习。请记住,目前的重点是了解如何编写、编译和部署合约。

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
Каталог
Урок 1

去中心化市场与Remix集成开发环境

在本课中,我们将首先学习去中心化市场的基本概念及其运作原理。紧接着,我们将熟悉Remix集成开发环境,并编写一个简单的Solidity合约。

什么是去中心化市场?

在传统的电子商务市场(如亚马逊和eBay)中,存在一个中央机构促进买卖双方之间的交易。这个中央机构掌控着交易过程、维护产品列表,并管理争议解决。虽然这种中心化模式具有一些优势,但也存在审查风险、高额费用和对信任的依赖等问题。

去中心化市场则利用区块链技术实现无需中介的点对点交易。它消除了对信任的需要,因为交易是透明的,并可以由区块链上的所有参与者验证。OpenBazaar和Origin Protocol便是典型的去中心化市场案例。

Remix集成开发环境介绍

Remix集成开发环境(IDE)是一款功能强大的开源工具,专为开发以太坊智能合约而设计。它可以直接在浏览器中运行,您无需在电脑上安装任何软件。

您可以通过访问https://remix.ethereum.org来使用Remix IDE。在浏览器中打开Remix后,您会看到如下三个面板:

  1. 左侧面板:您可以在此处创建、导入和管理您的Solidity文件。此外,您还可以使用各种插件来进行合约的编译、测试、调试和部署等操作。

  2. 中间面板:这是代码编辑器,用于编写和编辑Solidity代码。

  3. 右侧面板:此面板提供了各种工具,用于编译合约,在以太坊网络(可以是真实的以太坊网络,也可以是JavaScript VM模拟环境)上部署合约,以及运行您部署的合约。

编写您的第一份Solidity合约Item

在本部分,我们将开始编写我们的第一份Solidity合约。该合约将代表我们市场中的一个基本商品(item)。

首先,在Remix中单击左侧面板顶部的第二个图标(文件图标)创建一个新文件。中间面板上将出现一个新对话框。输入Item.sol作为文件名,然后单击“OK”。

创建好文件后,就可以开始编写我们的合约了:

Solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

contract Item {
    // Define an event that will be fired when a new item is created
    event NewItem(uint itemId, string itemName, uint itemPrice);

    // Each Item has an id, a name and a price
    struct ItemStruct {
        string name;
        uint price;
    }

    // Array to hold all the items
    ItemStruct[] public items;

    // Function to create a new item
    function createItem(string memory _name, uint _price) public {
        items.push(ItemStruct(_name, _price));
        emit NewItem(items.length - 1, _name, _price);
    }
}

这份合约的各个部分都代表什么含义呢?下面,我们将一步步进行探讨:

  1. SPDX License Identifier:这是一种表达合约许可证的标准方式。//SPDX-License-Identifier:MIT行表示该合约使用宽松的MIT许可。

  2. Pragma指令:pragma solidity ^0.8.6;指明合约是使用Solidity 0.8.6版本编写的。符号^表示它也将兼容任何更新的版本,但不包括0.9.0版本。

  3. 合约定义:contract Item {...}定义了一个名为Item的新合约。这是我们编写合约的状态变量和函数的地方。

  4. 事件定义:event NewItem(uint itemId, string itemName, uint itemPrice);定义了一个事件,每当创建新Item时,我们都可以发出事件。事件是智能合约记录外部各方可以监听的活动的一种方式。

  5. 结构定义:struct ItemStruct {...} 定义了一个新的数据类型ItemStruct,它表示一个带有名称价格的商品。

  6. 状态变量:ItemStruct[] public items;定义了一个状态变量item,它保存了一个ItemStruct数组,public关键字会自动创建一个getter函数,允许任何人访问商品列表。

  7. 函数定义:function createItem(string memory _name, uint _price) public {...}定义了一个公共函数,任何人都可以调用它来创建一个新商品。该函数接收名称和价格作为参数,创建一个新的ItemStruct,将其添加到item数组中,并发出一个NewItem事件。
    要编译此合约,请转到右侧面板并单击顶部的第三个图标(Solidity徽标)。在这里,您可以编译合约。单击“Compile”按钮,如果所有信息都正确,您的合约将编译成功。

此时,左侧面板可能会弹出一个问题:

关于Swarm或IPFS的问题是关于Remix将用来存储合约元数据的方法。

  1. IPFS:星际文件系统(IPFS)是一种旨在创建永久和去中心化网络的协议。它就像一个单一的BitTorrent Swarm,在一个Git存储库中交换对象。

  2. Swarm:Swarm是一个分布式存储和内容分发服务,是以太坊Web3堆栈的原生基础层服务。它允许一组节点存储和分发数据。
    在编译合约时,Solidity编译器会生成一个包含应用程序二进制接口(ABI)和字节码等信息的JSON文件,这是合约的元数据。将元数据存储在去中心化存储网络上可确保其永久可用,还可用于验证合约的源代码。

如果您不打算在Etherscan或其他区块链浏览器上验证合约,而只是出于学习目的,您可以在Swarm或IPFS中任选其一使用,或者直接忽略,并继续下一步的学习。请记住,目前的重点是了解如何编写、编译和部署合约。

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.