Skip to content

Swift va iOS ​

O ' zbekiston Respublikasining Swift SDK Yuqori oqimdagi ish o'rinlari tomonidan jo'natilgan IrohaSwift Swift toʻplam IrohaSwift/. Uning paket manifestida uchta kutubxona mahsulotlari aniqlanadiIrohaSwift, IrohaSwiftMobileTransports, va IrohaSwiftTransferUI va iOS 15+ va macOS 12+ ni maqsad qilib qo'ydi Swift asboblar 5.9.

Paket natijali NoritoBridge ikkilamchi maqsadga bog'liq. Paket rezolyutsiyasi qurishdan oldin ../dist/NoritoBridge.xcframework ni tasdiqlaydi, natijali ramzlar yuklanmaganida esa tranzaksiya yoki Connect kripto yo'llari ko'prik mavjud bo'lmagan xatolarni tashlaydi..

Swift Paket boshqaruvchisi ​

O'rnatilgan ish maydonlariga qarshi rivojlanayotganda, SwiftPM mahalliy IrohaSwift/ to'plamlar direktoriyasi. Package.swift bo ' lmoqda IrohaSwift:

swift
dependencies: [
    .package(name: "IrohaSwift", path: "/path/to/iroha/IrohaSwift")
],
targets: [
    .target(
        name: "YourApp",
        dependencies: [
            .product(name: "IrohaSwift", package: "IrohaSwift")
        ]
    )
]

Ilova uchun yo'lni o'zgartiring. Joriy examples/ios/ConnectMinimalApp yo'lini mavjud bo'lgani kabi nusxa ko'rsatmang; bu manifest ../../IrohaSwift ni examples/IrohaSwift ga aylantiradi.

To'plamni hal qilishdan oldin, ko'prik ish joyining ildizida mavjudligiga ishonch hosil qiling:

bash
cd /path/to/iroha
make bridge-xcframework

Bu dist/NoritoBridge.xcframework ni hosil qiladi; IrohaSwift/Package.swift uni ../dist/NoritoBridge.xcframework deb ataydi.

CocoaPods ​

Kod bazasida shuningdek: IrohaSwift/IrohaSwift.podspec. O ' zbekiston Respublikasining IrohaSwift kapsula, Swift 5.9 va iOS 15. Podspec olib tashlaydi Swift asosiy ma'muriyatdan olingan manbalar; natijali ko'prik hali ham mavjud bo'lishi va bitim kodlash uchun u bilan bog'lanish kerak, Ed25519 bo'lmagan imzolar va Connect kripto.

Tez ishga tushirish ​

swift
import Foundation
import IrohaSwift

let torii = ToriiClient(baseURL: URL(string: "http://127.0.0.1:8080")!)
let sdk = IrohaSDK(toriiClient: torii)

let keypair = try Keypair.generate()
let accountId = try keypair.accountId()

if #available(iOS 15.0, macOS 12.0, *) {
    let balances = try await torii.getAssets(accountId: accountId)
    print("balances:", balances)
}

Taira Faqat o'qishga harakat qiling ​

Qurilma yoki simulyator ommaviy Taira oxirgi nuqtasiga yetishi mumkinligini tasdiqlash uchun oddiy HTTP sondasi bilan boshlang:

swift
import Foundation

if #available(iOS 15.0, macOS 12.0, *) {
    let url = URL(string: "https://taira.sora.org/status")!
    let (data, response) = try await URLSession.shared.data(from: url)

    if let http = response as? HTTPURLResponse {
        print("status:", http.statusCode)
    }
    print(String(decoding: data, as: UTF8.self))
}

Shunga oʻxshash foydalanish URLSession tekshirish uchun https://taira.sora.org/v1/assets/definitions?limit=5 Oʻzingiz qurayotganingizda . UI va xulq-atvorni yana sinab ko'ring. IrohaSDK qo'llab-quvvatlovchilarni faqat dasturiy ta'minot xavfsiz saqlashdan imzolash materialini yuklaganidan va hisobvaraq moliyalashtirilganidan so'ng yuboradi Taira.

Transaksiyani tuzish va jo'natish uchun IrohaSDK yordamchisidan foydalaning. Ular mahalliy ko'prik qo'llab-quvvatlangan tranzaksiya kodlovchiga murojaat qiladilar:

swift
let transfer = TransferRequest(
    chainId: "00000000-0000-0000-0000-000000000000",
    authority: accountId,
    assetDefinitionId: "66owaQmAQMuHxPzxUN3bqZ6FJfDa",
    quantity: "1",
    destination: accountId,
    description: "demo",
    feePayment: .authority(chargeLimits: [], gasLimit: nil)
)

if #available(iOS 15.0, macOS 12.0, *) {
    let status = try await sdk.submitAndWait(
        transfer: transfer,
        keypair: keypair
    )
    print(status.content.status.kind)
}

TransferRequest, MintRequest, BurnRequest, ShieldRequest, va UnshieldRequest kanonik hisobni tasdiqlash IDs va kanonik prefikssiz Base58 aktivlari ta'rifi IDs imzolashdan oldin.

Native escrow ​

Swift bozor va anonim eskrov ko'rsatmalarini Norito JSON yordamchilari orqali NativeEscrowInstructionBuilders yoki ekvivalent IrohaSDK.build*Escrow* yordamchilari sifatida yaratadi. Misollar uchun Native Asset Escrow, anonim dalillar maydonlari va nizolarni hal qilish ruxsatnomasi tokenini ko'ring.

Imzolash ​

Keypair - bu Ed25519 qulayligi API. Boshqa algoritmlar uchun IrohaSDK ni defaultSigningAlgorithm bilan quring va generateSigningKey() yoki signingKey(fromSeed:) dan foydalaning:

swift
let pqSdk = IrohaSDK(
    baseURL: torii.baseURL,
    defaultSigningAlgorithm: .mlDsa
)
let signingKey = try pqSdk.generateSigningKey()

O ' zbekiston Respublikasining SigningAlgorithm enum hozirda Ed25519, secp256k1ni o'z ichiga oladi; BLS Oddiy va kichik variantlar, ML-DSA, GOST R 34.10-2012 parametrlar to'plamlari va SM2. Ed25519 qulaylik yo'li tashqarisida mahalliy ko'prikni qo'llab-quvvatlash talab etiladi.

Ulanish ​

Connect mijozi Swift manbasida, NoritoBridge tomonidan qo'llab-quvvatlanadigan kripto va ramka kodeklari bilan amalga oshiriladi:

swift
let sessionID = Data(repeating: 0, count: 32) // replace with the session bytes
let sid = "<session-id-from-/v1/connect/session>"
let request = try ConnectClient.makeWebSocketRequest(
    baseURL: URL(string: "https://node.example")!,
    sid: sid,
    role: .app,
    token: "<token>"
)

let client = ConnectClient(request: request)
await client.start()

let session = ConnectSession(sessionID: sessionID, client: client)
let keyPair = try ConnectCrypto.generateKeyPair()

ConnectSession ochish va yopish nazoratlarini, shifrlangan zarfni o'qish, yo'nalish kalitlari, oqimlarni boshqarish, hodisalar oqimi, muvozanat oqimlari va tashxis jurnallarini boshqaradi.

Joriy qamrov ​

Swift manbai hozirda quyidagilarni o'z ichiga oladi:

  • ToriiClient HTTP hisoblar, aktivlar, aliaslar, qidiruv sahifalari, RWA, shartnomalar, multisig, boshqaruv, obunalar, ma'lumotlar mavjudligi, maxfiy aktivlar, node/runtime holati, sog'liqni saqlash, metrikalar va SSE oqimlari yordamchilari
  • IrohaSDK tranzaksiya quruvchilari va transfer, mint, yoqish, shield, shieldsiz o'tkazish, ZK transfer, ZK aktivlarni ro'yxatga olish, metadatalar, identifikator talablari, multisig ro'yxatdan o'tkazish va boshqaruv yo'l-yo'riqlariga ko'maklashuvchilar
  • PendingTransactionQueue va FilePendingTransactionQueue orqali amalga oshirilayotgan operatsiyalar safida qo'llab-quvvatlash
  • AccountAddress va AccountId orqali hisob-kitob manzili va I105 yordamchilari
  • Ed25519, secp256k1, ML-DSA, BLS, GOST va SM2 imzolash yuzalari, agar kerak bo'lsa, mahalliy ko'prikni qo'llab-quvvatlash
  • bozor va anonim depozit uchun mahalliy eskrov yo'l-yo'riqlari yordamchi yukni qurishchilar
  • WebSocket, ramka, kripto, seans, navbat, takrorlash va tashxis yordamchilari bilan bog'laning
  • Kagemusha tayyorligi, tiklangan to'ldirish va to'lov, operatsion holat, yozuv, tengdoshlar to'plami, rasvot va QR oqim modeli
  • SoraFS, ma'lumotlar mavjudligi va tasdiqlovchi ilovalar yordamchilari

API Misollar ​

Umumiy amalga oshirish uchun IrohaSwift/Sources/IrohaSwift va bir xil manba tekshiruvidan olingan sinovdan o'tgan foydalanish misollari uchun IrohaSwift/Tests/IrohaSwiftTests dan foydalaning.

Ma'lumotlar manbai ​

  • IrohaSwift/Package.swift
  • IrohaSwift/IrohaSwift.podspec
  • IrohaSwift/Sources/IrohaSwift/ToriiClient.swift
  • IrohaSwift/Sources/IrohaSwift/TxBuilder.swift
  • IrohaSwift/Sources/IrohaSwift/TransactionEncoder.swift
  • IrohaSwift/Sources/IrohaSwift/ConnectClient.swift
  • IrohaSwift/Sources/IrohaSwift/ConnectSession.swift