Освоение космоса: руководство для начинающих по созданию и развертыванию смарт-контрактов
22 февраля 2023 г.Сеть Cosmos – одна из самых многообещающих сетей блокчейнов, обеспечивающая взаимодействие между различными платформами блокчейнов. , и для разработчиков становится все более важным понимать, как создавать и развертывать смарт-контракты в этой сети.
Смарт-контракты — это самоисполняющиеся контракты, условия которых записаны непосредственно в коде. Они являются жизненно важным компонентом децентрализованных приложений и имеют решающее значение для создания надежных и прозрачных систем. Поскольку спрос на децентрализованные приложения растет, понимание и использование смарт-контрактов становится обязательным условием для разработчиков, создающих и разрабатывающих приложения в Web3.
Поддерживает ли космос смарт-контракты? Да. В этом руководстве мы узнаем об экосистеме Cosmos и о том, как создать и развернуть смарт-контракт в сети Cosmos.
Понимание сети Cosmos
Консенсус Tendermint Core движок поддерживает независимые параллельные цепочки блоков, составляющие децентрализованную сеть Cosmos. Целью Cosmos Network является создание децентрализованной сети взаимосвязанных блокчейнов, которые могут расширяться и взаимодействовать, облегчая обмен данными и ценностями между различными блокчейн-платформами.
Tendermint — это механизм консенсуса Byzantine Fault Tolerant (BFT), который обеспечивает быструю и безопасную обработку транзакций. Он позволяет группе валидаторов согласовывать состояние сети через процедура голосования. Tendermint обеспечивает более быструю обработку транзакций по сравнению с традиционными методами консенсуса, основанными на доказательстве работы, такими как те, которые используются в биткойнах и эфириуме (теперь Proof of Stake).
Использование Cosmos Network протокола Inter-Blockchain Communication (IBC) имеет решающее значение. Взаимодействие между несколькими системами блокчейнов стало возможным благодаря IBC, который позволяет передавать ценности и данные между различными блокчейнами в Cosmos Network.
Кроме того, Cosmos Network имеет звездообразную архитектуру, которая позволяет разрабатывать автономные блокчейны (лучи), которые могут взаимодействовать с Cosmos Hub (концентратором). Обмен данными и валютой между различными цепочками блоков в сети возможен благодаря Cosmos Hub, который действует как сетевой концентратор.
Масштабируемость, безопасность и совместимость — это лишь некоторые из преимуществ Cosmos Network по сравнению с другими блокчейн-платформами. В целом это интригующая и многообещающая блокчейн-сеть.
Это желательная альтернатива для разработчиков, стремящихся создавать децентрализованные приложения, благодаря своей способности обрабатывать колоссальную пропускную способность и подключать несколько блокчейнов.
Почему Космос?
Протокол Inter-Blockchain Communication (IBC) и механизм консенсуса Tendermint Core образуют основу сети Cosmos, обеспечивая обмен ценностями и данными между различными блокчейнами в сети Cosmos. Более подробно об этом говорилось в предыдущем разделе, когда мы обсуждали экосистему Cosmos.
К основным чертам Cosmos Network относятся следующие:
- Tendermint Core Consensus Engine: механизм консенсуса Byzantine Fault Tolerant, Tendermint обеспечивает быструю и безопасную обработку транзакций.
- Протокол Inter-Blockchain Communication (IBC): IBC обеспечивает связь между несколькими блокчейнами внутри Cosmos Network, обеспечивая обмен ценностями и данными.
- Cosmos Network поддерживает создание пользовательских токенов. Эти токены можно использовать в децентрализованных приложениях для представления цифровых активов или в качестве оплаты.
- Масштабируемость. Использование независимых цепочек блоков с Tendermint Core позволяет ускорить обработку транзакций и увеличить количество транзакций в секунду.
- Взаимодействие. Функция взаимодействия Cosmos Network позволяет разработчикам создавать децентрализованные приложения, взаимодействующие со многими системами блокчейна, включая Биткойн, Эфириум и другие.
- Звездообразная архитектура. Архитектура Cosmos Network с центрально-лучевой структурой позволяет разрабатывать отдельные цепочки блоков, которые могут взаимодействовать с Cosmos Hub. Центральный узел сети, Cosmos Hub, облегчает обмен деньгами и информацией между ее несколькими блокчейнами.
В следующем разделе мы подробно рассмотрим практические аспекты создания и развертывания смарт-контрактов в космической сети.
Необходимое условие
Убедимся, что Node/NPM настроен на нашем компьютере. Здесь находится руководство, если оно еще не установлено.
Настройка и установка проекта
Перейдем к терминалу. Нам потребуется cd
в любой каталог по нашему выбору, а затем выполнить следующие команды:
mkdir cosmos-project
cd cosmos-project
npm init -y
npm install --save-dev hardhat
Давайте создадим пример проекта с помощью следующей команды:
npx hardhat
Приведенная выше команда проверит, установлена ли у нас каска глобально; если нет, он загрузит его из реестра npm и запустит команду, используя загруженную версию.
Примите следующие параметры.
Давайте запустим приведенную ниже команду, чтобы убедиться, что все работает правильно.
npx hardhat test
Результат прохождения теста появится в нашей консоли.
Теперь Lock.js
можно удалить из каталога test
, а deploy.js
— из каталога scripts. После этого удалите Lock.sol
в каталоге contracts
.
==Сами папки удалять нельзя!==
Создайте смарт-контракт Greeter
В этом разделе будет создан файл Greeter.sol
в каталоге контракта со следующим фрагментом кода.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;
// Define a smart contract called "Greeter"
contract Greeter {
// Define a public variable called "greeting" of type string
string public greeting;
// Define a constructor that takes in a string and assigns it to the "greeting" variable
constructor(string memory _greeting) {
greeting = _greeting;
}
// Define a function called "setGreeting" that allows the "greeting" variable to be changed
function setGreeting(string memory _greeting) public {
greeting = _greeting;
}
// Define a function called "greet" that returns the current "greeting" variable
function greet() public view returns (string memory) {
return greeting;
}
}
В приведенном выше фрагменте кода важно отметить, что строка SPDX-License-Identifier: UNLICENSED
служит уникальным идентификатором, указывающим на то, что код нелицензирован и доступен для всех.
Тестирование смарт-контракта
Создайте новый файл с именем Greeter-test.js
в каталоге test
и добавьте в него следующий фрагмент кода.
const { expect } = require("chai");
const { ethers } = require("hardhat");
describe("Greeter", function () {
it("Should deploy the Greeter contract", async function () {
// Get the contract factory for the "Greeter" contract
const Greeter = await ethers.getContractFactory("Greeter");
// Deploy the contract to the blockchain
const greeter = await Greeter.deploy("Hello, world!");
// Wait until the contract is deployed
await greeter.deployed();
// Check that the contract's greet() method returns the expected greeting
expect(await greeter.greet()).to.equal("Hello, world!");
});
it("Should return the new greeting once it's changed", async function () {
// Get the contract factory for the "Greeter" contract
const Greeter = await ethers.getContractFactory("Greeter");
// Deploy the contract to the blockchain
const greeter = await Greeter.deploy("Hello, world!");
// Wait until the contract is deployed
await greeter.deployed();
// Check that the contract's greet() method returns the expected greeting
expect(await greeter.greet()).to.equal("Hello, world!");
// call the setGreeting method
const setGreetingTx = await greeter.setGreeting("Hola, mundo!");
// wait until the transaction is mined
await setGreetingTx.wait();
// Check that the contract's greet() method returns the new greeting
expect(await greeter.greet()).to.equal("Hola, mundo!");
});
});
Затем выполните следующую команду в терминале, чтобы скомпилировать тестовые примеры.
npx hardhat test
У нас должно получиться что-то похожее на то, что показано ниже.
Скомпилируйте и разверните смарт-контракт Greeter в сети Cosmos
Чтобы скомпилировать смарт-контракт, нам потребуется создать новый файл deploy.js
в папке scripts
и добавить в него следующий фрагмент кода.
const main = async () => {
// Get the contract factory for the "Greeter" contract
const greeterContractFactory = await hre.ethers.getContractFactory("Greeter");
// Deploy the contract to the blockchain
const greeterContract = await greeterContractFactory.deploy(
"Hello, Hardhat!"
);
// Wait until the contract is deployed
await greeterContract.deployed();
// Log the address of the deployed contract
console.log("Greeter Contract deployed to: ", greeterContract.address);
};
const runMain = async () => {
try {
// Call the main function
await main();
process.exit(0);
} catch (error) {
// Log any errors that occur
console.log(error);
process.exit(1);
}
};
// Run the main function
runMain();
В приведенном выше фрагменте кода
- Этот скрипт развертывает смарт-контракт с именем
Greeter
в блокчейне с помощью библиотеки hre.ethers. - Метод
greeterContractFactory.deploy()
развертывает новый экземпляр контракта в блокчейне.
Метод await GreeterContract.deployed()
используется для ожидания развертывания контракта.- Затем адрес развернутого контракта заносится в консоль, а затем функция
runMain()
представляет собой функцию-оболочку, которая запускает основную функцию и перехватывает любые возможные ошибки.
Затем создайте .env
в корневом каталоге проекта для хранения закрытого ключа, который мы будем использовать в файле hardhat.config.js
во время развертывания. р>
PRIVATE_KEY=
Перейдите к файлу hardhat.config.js
и добавьте следующий фрагмент кода.
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
// Specify version of solidity compiler
solidity: "0.8.17",
// Define networks to be used for testing and deployment
networks: {
// Hardhat network is a built-in development network in Hardhat
hardhat: {
},
// Local network is a network running on localhost
local : {
url: "http://localhost:8545",
},
// evmos network is a network hosted by evmos
evmos: {
url: "https://eth.bd.evmos.dev:8545",
// Use the private key specified in the .env file
accounts:[process.env.PRIVATE_KEY],
},
},
};
Это файл конфигурации для среды разработки Hardhat.
Мы развернем смарт-контракт на следующем этапе, но нам нужно убедиться, что мы финансируем наш кошелек с помощью тестового токена EVMOS (децентрализованного блокчейна с доказательством доли участия в экосистеме Cosmos). Настройте evmos на MetaMask и пополните кошелек с помощью этого evmos сайт крана.
После запроса сборщика у нас должно получиться что-то похожее на то, что показано ниже.
Теперь мы можем развернуть смарт-контракт в сети Cosmos с помощью следующей команды.
npx hardhat run --network evmos scripts/deploy.js
Проверка развертывания контракта в EVM Explorer
Посмотрим этот блок в EVM Explorer https://evm.evmos.dev
Чтобы продолжить, вы можете найти весь код для этого проекта здесь< /сильный>сильный>.
Заключение
В этой статье представлено руководство для начинающих по созданию и развертыванию смарт-контрактов в сети Cosmos. Используя среду разработки Hardhat, мы также продемонстрировали, как развернуть смарт-контракт в сети Cosmos.
Увидимся в моей следующей статье в блоге. Берегите!!!
:::информация Также опубликовано здесь. р>
:::
Оригинал