Створюємо iOS додаток на блокчейні Near Protocol за 5 хвилин

Покроковий гайд для створення власного iOS додатку на Layer-1 блокчейні Near Protocol для новачків

--

Що таке NEAR Protocol

NEAR Protocol — це децентралізована платформа для створення масштабованих додатків на основі блокчейн-технологій з використанням технології шардингу, смарт контрактів та з зручними рівнями ключів доступу. Ця платформа володіє високою продуктивністю, низькими комісіями, зручністю використання для розробників та користувачів, а також забезпечує децентралізований контроль над даними та активами.

NEAR Protocol використовує ряд технологій та архітектурних рішень, що дозволяють підтримувати масштабованість, безпеку та швидкість виконання транзакцій.

  1. Nightshade — це протокол шардінгу, який дозволяє розподіляти операції між різними частинами мережі (шардами) для паралельної обробки транзакцій. Це забезпечує збільшення пропускної здатності та масштабованість системи.
  2. Doomslug блокчейн з довільним станом : NEAR використовує Doomslug, алгоритм консенсусу, який дозволяє швидко створювати блоки та підтверджувати транзакції, забезпечуючи високу продуктивність.
  3. Proof of Stake: NEAR використовує модель консенсусу Proof of Stake, яка дозволяє валідаторам захищати мережу шляхом ставок своїх токенів NEAR. Це забезпечує мотивацію учасників мережі підтримувати безпеку та стабільність системи.
  4. WASM (WebAssembly) для смарт контрактів: NEAR використовує WebAssembly (WASM) як віртуальну машину для виконання смарт контрактів. WASM дозволяє розробляти смарт контракти на різних мовах програмування, не тільки Solidity, а на таких як Rust, C++, та інших, і має високу швидкість виконання.
  5. Різні рівні доступу: NEAR пропонує два типи ключів — повні (Full Access) та обмежені (Function Call). Детальніше можна ознайомитись тут

NEAR Protocol може бути використаний для створення різноманітних додатків, включаючи фінансові, геймінг, соціальні мережі та інші. Завдяки своїм характеристикам, NEAR стає привабливою платформою для розробки децентралізованих додатків (dApps).

Що таке NEAR API Swift та його переваги

NEAR API Swift — це бібліотека для розробки iOS-додатків, яка спрощує взаємодію з NEAR Protocol. Вона надає зручні обгортки та абстракції, що дозволяють розробникам легко інтегрувати функціональність NEAR Protocol в свої додатки.

Переваги NEAR API Swift для розробників:

  1. Швидкий старт: Бібліотека спрощує підключення до NEAR Protocol та виконання різних операцій, таких як створення гаманців, управління ключами та виклик методів смарт-контрактів.
  2. Простота використання: NEAR API Swift надає простий та зрозумілий інтерфейс для розробників, які знайомляться з блокчейн-технологіями. Вона відповідає добре відомим патернам та практикам програмування на Swift.
  3. Зручність взаємодії з контрактами: NEAR API Swift дозволяє розробникам викликати методи контрактів, розгортати та оновлювати контракти з допомогою простих методів, що забезпечують гнучкість та контроль над транзакціями.
  4. Безпечність: Бібліотека надає засоби для безпечного зберігання та управління ключами, а також підписування транзакцій. Це допомагає забезпечити конфіденційність та безпеку даних користувачів.
  5. Масштабованість: Завдяки використанню NEAR API Swift, розробники можуть створювати масштабовані iOS-додатки з використанням переваг NEAR Protocol, таких як швидкість, низькі затрати на транзакції та масштабованість.
  6. Інтеграція з існуючими екосистемами: NEAR API Swift дозволяє легко інтегруватися з існуючими iOS-додатками та сервісами, надаючи можливість розширювати функціональність та використовувати можливості блокчейн-технологій без необхідності повного переписання коду. Це забезпечує гладкий перехід та зменшує час введення на ринок для нових продуктів та сервісів, що використовують NEAR Protocol.

У цілому, NEAR API Swift розроблено з метою спрощення розробки та інтеграції блокчейн-технологій в iOS-додатки. Вона надає розробникам зручні та ефективні засоби для взаємодії з NEAR Protocol та створення інноваційних продуктів, що забезпечують більш широке застосування блокчейну в різних галузях та відкривають нові можливості для користувачів.

Давайте розпочнемо

Для цього проекту ми будемо використовувати Xcode 14. Ми також рекомендуємо використовувати iOS MVVM Project Template, але щоб зробити цей гайд простим для розуміння, ми будемо використовувати звичайну структуру проекту для iOS.

Вихідний код з графічною складовою додатку доступний за цим посиланням. Ми в свою чергу будемо демонструвати приклади з попередньо розробленою UI складовою для наглядності.

Перш за все, ми створимо новий iOS-проект і назвемо його до прикладу “Near Wallet”. Тепер ваш проект Xcode повинен виглядати так:

Встановлення NEAR API SWIFT

Додати бібліотеку можна 2 різними способами в залежності від того, який менеджер пакетів ви використовуєте CocoaPods чи Swift Package Manager. Ми в даному прикладі будемо використовувати CocoaPods.

  1. Якщо ви використовуєте CocoaPods, створіть файл Podfile у корені вашого проекту(якщо його ще немає) і додайте наступні рядки:
platform :ios, '12.0'
use_frameworks!

target 'YourAppName' do
pod 'NearSDKSwift'
end

Замініть 'YourAppName' на назву вашого проекту, збережіть файл і виконайте команду pod install у терміналі. Це встановить NEAR API Swift і створить новий файл .xcworkspace, який вам потрібно відкрити для подальшої роботи з проектом.

2. Якщо ви використовуєте Swift Package Manager, відкрийте ваш проект у Xcode, перейдіть до меню "File">"Add Packages" і вставте посилання на репозиторій NEAR API Swift (https://github.com/near/near-sdk-swift.git). Виберіть версію бібліотеки та натисніть "Add Package". Xcode автоматично встановить пакет та додасть його до вашого проекту.

Тепер ваш проект підготовлений для роботи з NEAR API Swift. Ви можете використовувати функціональність бібліотеки для взаємодії з NEAR Protocol.

Інтеграція коду в проект

  1. Відкрийте файл ViewController.swift або інший файл, у якому ви плануєте використовувати NEAR API Swift. Додайте наступний рядок вгорі файлу, щоб імпортувати бібліотеку:
import nearclientios

2. Створимо API структуру для комфортного використання та конфігурування NEAR SDK. Для всіх тестових операцій будемо використовувати testnet версію мережі.

struct API {
static let NODE_URL = "https://rpc.testnet.near.org"
static let NETWORK_ID = "testnet"
static let JSON_RPC = "https://rpc.testnet.near.org"
static let WALLET_URL = "https://wallet.testnet.near.org"
}

3. Додайте код для ініціалізації конфігурації NEAR API Swift. Це можна зробити у методі viewDidLoad() або в іншому відповідному місці проекту:

let keyStore = SecureEnclaveKeyStore(keychain: .init(service: "example.keystore"))
keyStore.context = LAContext()
let config = NearConfig(
networkId: API.NODE_URL,
nodeUrl: URL(string: API.NETWORK_ID)!,
masterAccount: nil,
keyPath: nil,
helperUrl: nil,
initialBalance: nil,
providerType: .jsonRPC(URL(string: API.JSON_RPC)!),
signerType: .inMemory(keyStore),
keyStore: keyStore,
contractName: nil,
walletUrl: API.WALLET_URL
)
near = Near(config: config)

Перевірка успішного підключення

Щоб перевірити, чи успішно підключено NEAR API Swift та чи коректно працює бібліотека, спробуємо авторизуватися та отримати інформацію про рахунок користувача:

  1. Додайте наступний код у вашому ViewController або як дію на натиск кнопки чи іншого елементу, де ви плануєте здійснити авторизацію та отримати ключ користувача.
Task {
DefaultAuthService.shared.walletSignIn = self
try! await walletAccount!.requestSignIn(contractId: nil, title: GLOBAL.appName, presentingViewController: self)
}

Процес авторизації відбувається методом відкриття вбудованого браузера та завантаженнямnear.wallet.org вебсайту, в залежності від нашої конфігурації може відкриватися testnet чи mainnet версія.

2. Після успішної авторизації користувача ми можемо отримати інформацію по його рахунку. Виконайте нижче наведений код після авторизації:

let account = try await near!.account(accountId: walletAccount!.getAccountId())

3. Запустимо додаток на емуляторі або реальному пристрої. Ми можемо побачити інформацію про рахунок у консолі, якщо підключення та взаємодія з NEAR Protocol успішні.

Для демонстрації ми розробили додаток в якому можна ознайомитись з базовим функціоналом та розпочати розробку власного на основі існуючого коду та прикладів.

Надсилання токенів

Для того щоб здійснити надсилання токенів перш за все необхідно Near конвертувати в YoctoNear, ви можете помножити значення NEAR на 10*24 або використати конвертер Near -> YoctoNear.

func convertNearToYoctoNear(near: Decimal) -> Decimal {
let nearConversionFactor = pow(Decimal(10), 24)
let yoctoNearAmount = near * nearConversionFactor
return yoctoNearAmount
}

Для того щоб здійснити відправку токенів необхідно виконати функцію sendMoney з вказанням параметрів.

let result = try await account.sendMoney(receiverId: "reciever.textnet", amount: convertNearToYoctoNear(near: 1))

Щоб перевірити успішність надсилання транзакції можна звернутись доresult, який являється об’єктом nearclientios та містить детальну інформацію про транзакцію.

public struct FinalExecutionOutcome: Decodable, Equatable {
public let transaction: Transaction
public let status: FinalExecutionStatus
public let transactionOutcome: ExecutionOutcomeWithId
public let receiptsOutcome: [ExecutionOutcomeWithId]
public let receipts: AnyDecodable?
}

В актуальному гайді ми дізналися яким чином можна за декілька хвилин підключити до iOS проекту NEAR SDK та почати його використовувати. Найбільшою перевагою використання бібліотеки являється високий рівень абстракції, що дозволяє здійснювати розробку додатку максимально швидко та з мінімальною кількістю непередбачуваних ситуацій.

Near Ukraine Guild 🇺🇦 це швидкозростаюча спільнота з України, що націлена на надання високоякісного освітнього контенту та допомоги для розвитку сильної спільноти розробників/підприємців/ентузіастів в екосистемі Near Protocol

--

--