Работа со стандартом FA1.2 используя LIGO и TaquitoРабота со стандартом FA1.2 используя LIGO и Taquito

Вступление

Данный раздел направлен на то, чтобы показать каким образом можно создавать (развертывать и инициировать контракт FA1.2, написанным на PascaLIGO, используя Taquito toolkit.

Taquito является библиотекой TypeScript, которая позволяет более легко взаимодействовать с блокчейном Tezos, а также со смарт-контрактами. Разработчики могут вызывать точки входа контрактов, как если бы они просто были объектами JavaScript или TypeScrypt.

Мы создадим смарт-контракт FA1.2 на тестовой сети Tezos. 

 

Когда мы создаем контракт, то нам нужно инициировать хранилище самого контракта с начальными значениями. Два параметра в которых мы заинтересованы — это количество токенов, а также адрес на котором будет хранится эмиссия.

До того как мы создадим контракт, нам понадобится адрес Tezos, а также немного токенов Tezos для оплаты за газ, которая взимается за вызов смарт-контракта. Стоимость газа оплачивается исключительно через токен Tezos(XTZ), но никак не с помощью лично созданных вами токенов.

 

Чтобы получить новый адрес в тестнете, посетите сайт Крана: faucet.tzalpha.net и нажмите на кнопку «Get ꜩ» 

 

Сохраните файл крана на ваш компьютер и назовите его faucet.json. Открыв сам файл, вы сможете там найти название собственности pkh, которое имеет Tezos адрес контракта, начинающийся со значения tz1. Скопируйте этот адрес, так как он вам понадобится в следующем шаге. 

 

Создание FA1.2 Контракта

Вы можете использовать Taquito для создания контракта, но для краткости этого материала, мы используем LIGO web-ide, для разворачивания нового смарт-контракта в сети Tezos.

  • Документация по созданию смарт-контрактов с помощью инструмента Taquito может быть найдена по этой ссылке.

 

  • LIGO Web-IDE использует Taquito,и вы можете найти его открытый код по следующей ссылке.

  • Пример создания смарт-контракта FA1.2 стандарта используя Taquito (и другого) может быть найден здесь  

 

Для того чтобы запустить ваш смарт-контракт следуйте следующим инструкциям: 

 

  1. Нажмите на ссылку LIGO, чтобы открыть полноценную имплементацию PascaLIGO со стандартом контракта FA1.2
  2. Выполните “Deploy” смарт контракта в «Configure». 
  3. В поле ‘Storage‘ вы должны увидеть изначальные данные по этому смарт контракту. Произведите обновление двух значений: * Замените YOUR_TZ_ADDRESS на адрес, который вы скопировали ранее с файла крана .json. * Замените оба значения TOKENS на то количество токенов, которые вы хотите выпустить. 
  4. Когда вы выберете “Deploy”,  далее нажмите на ‘Run”. После этого, развёртывание контракта должно начаться (обычно занимает несколько минут) 
  5. Когда развертывание контракта успешно завершилось, скопируйте адрес созданного контракта. (Одним из таких способов будет просмотр адреса смарт контракта через любой Blockchain explorer)

 

Теперь только что созданный контракт уже имеет эмитированные токен, выделенные на ваш новый адрес Tezos из вашего ключа крана.

 

Использование Taquito Для Трансфера токенов Контракта

Давайте используем Taquito для трансфера токенов!

Мы предполагаем, что у вас есть новый TypeScript или JavaScript проект, и вы используете npm. 

 

Установите Taquito в ваш новый проект :

npm install @taquito/taquito

 

Создайте новый файл для нашего примера, который называется fa_taquito.ts

 

Импортируйте основной пакет Taquito в ваш проект

const { Tezos } = require(‘@taquito/taquito’)

 

Следующий код загружает и импортирует приватный ключ из файла faucet.json, который мы создали ранее. Код использует подпись в памяти Taquito, которая удобна для разработки и тестирования, но не рекомендуется ее использование в продакшне. Используйте настоящий кошелёк или HSM с поддержкой удаленной подписи.

const fs = require(«fs»);
const { email, password, mnemonic, secret } = JSON.parse(fs.readFileSync(‘./faucet.json’).toString())

Tezos.setProvider({ rpc: ‘https://api.tez.ie/rpc/babylonnet’ })
Tezos.importKey(email, password, mnemonic.join(» «), secret)

 

Далее мы должны сделать запрос для контракта в сеть, который мы создали ранее.

await const contract = await Tezos.contract.at(‘KT1…your_address_from_earlier’)

 

Когда этот код выполняется, Taquito извлекает код контракта из сети и динамически генерирует методы для вашего объекта контракта, которые соответствуют точкам входа FA1.2. Эти методы похожи на ‘абстракцию’, которая предоставляется Taquito для более интуитивного взаимодействия со смарт контрактами с точки зрения языка JavaScript.

Теперь мы можем выполнить трансфер наших токенов между нашим адресом и другим адресом.

Перевод двух токенов является таким же простым, как и вызов функции contract.methods.transfer(). В первую очередь давайте настроим переменные src и dst. 


const pkhSrc = await Tezos.signer.publicKeyHash())
const pkhDst =  «tz1eY5Aqa1kXDFoiebL28emyXFoneAoVg1zh».

 

Теперь нам нужно сделать вызов метода в нашем контракте:

const op = await contract.methods.transfer(pkhSrc, pkhDst, «2»).send()
await op.confirmation()
const storage = await contract.storage()


Теперь мы можем запросить баланс для каждого адреса следующим образом:


console.log((await storage.ledger.get(pkhSrc)).balance)
console.log((await storage.ledger.get(pkhDst)).balance)

 

Теперь вы обладаете базовыми знаниями по взаимодействию со стандартом контракта FA1.2 на блокчейне Tezos с использованием Taquito. Мы использовали LIGO в этом уроке, но Taquito работает с любым смарт-контрактом Tezos. 

 

Не можете найти то, что искали?

Контакты

Готов работать с Tezos Ukraine?

Контакты