FA1.2 LIGO

Робота зі стандартом FA1.2 використовуючи LIGO і Taquito

Вступ

Даний розділ спрямований на те, щоб показати яким чином можна створювати (розгортати) і ініціювати контракт FA1.2, написаним на PascaLIGO, використовуючи Taquitto toolkit.

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

Ми створимо смарт-контракт FA1.2 в тестовій мережі Tezos.

Коли ми створюємо контракт, то нам потрібно ініціювати сховище самого контракту з початковими значеннями. Два основних параметри - це кількість токенов, а також адреса на якій буде зберігається емісія.

До того як ми створимо контракт, нам знадобиться адреса Tezos, а також трохи токенов Tezos для "оплати пального", яка стягується за виклик смарт-контракту. Вартість "пального" оплачується виключно через токен Tezos (XTZ), але ніяк не за допомогою створених далі через контракт токенів.

Щоб отримати нову адресу в тестовій мережі, відвідайте сайт Вилки (eng. Faucet): 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. Коли розгортання контракту успішно завершилося, скопіюйте адресу щойно створеного контракту. (За бажанням ви можете переглянути ваш контракт через будь-який блокчейн-експлорер)

Тепер щойно створений контракт вже має емітовані токени на вашій адресі 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/carthagenet' })
Tezos.importKey(email, password, mnemonic.join(" "), secret)

Далі ми повинні зробити запит з приводу контракту, який ми створили раніше, до блокчейн мережі.

await const contract = await Tezos.contract.at('KT1...your_address_from_earlier')

Коли цей код виконується, Taquito витягує код контракту з мережі і динамічно генерує методи для вашого об'єкта контракту, які відповідають точкам входу FA1.2. Ці методи - 'абстракція', яка надається Taquito для більш інтуїтивної взаємодії зі смарт контрактами з точки зору мови JavaScript.

Тепер ми можемо виконати трансфер наших токенів між нашою адресою і іншою адресою.

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

Передача 2 токенів є такою ж простою, як і виклик функції contract.methods.transfer(). В першу чергу давайте налаштуємо змінні src і dst.

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

Тепер нам потрібно зробити виклик transfer метода в нашому контракті:

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.

Матеріали розроблені TQ Tezos перекладені українською мовою Tezos Ukraine