Swift და iOS
Swift SDK გადაგზავნილი upstream სამუშაო სივრცე არის IrohaSwift Swift პაკეტი ქვეშ IrohaSwift/. მისი პაკეტის მანიფესტი განსაზღვრავს სამი ბიბლიოთეკის პროდუქტებიIrohaSwift, IrohaSwiftMobileTransports და IrohaSwiftTransferUIდა მიზნად ისახავს iOS 15+ და macOS 12+ Swift ინსტრუმენტების 5.9.
პაკეტი დამოკიდებულია NoritoBridge ბინარული სამიზნეზე. პაკეტის რეზოლუცია ადასტურებს ../dist/NoritoBridge.xcframework მშენებლობამდე, ხოლო ტრანზაქციის ან Connect კრიპტოვალუტების გზები ტრიალებენ ხიდის არანაირ შეცდომებს, როდესაც ბინური სიმბოლოები არ არის დატვირთული.
Swift შეფუთვის მენეჯერი
ჩაკეტილი სამუშაო სივრცის მიმართ განვითარებისას, მიუთითეთ SwiftPM ადგილობრივ IrohaSwift/ პაკეტის დირექტორში. Package.swift-ს მიერ გამოყენებული პაკეტის იდენტობა არის IrohaSwift:
dependencies: [
.package(name: "IrohaSwift", path: "/path/to/iroha/IrohaSwift")
],
targets: [
.target(
name: "YourApp",
dependencies: [
.product(name: "IrohaSwift", package: "IrohaSwift")
]
)
]შეცვალეთ თქვენი აპლიკაციის გზა. არ გადაწეროთ მიმდინარე examples/ios/ConnectMinimalApp გზა, როგორც არის; ეს მანიფესტი გადაწყვეტს ../../IrohaSwift to examples/IrohaSwift.
პაკეტის გადაჭრამდე, დარწმუნდით, რომ ხიდი არსებობს სამუშაო სივრცეში ფესვზე:
cd /path/to/iroha
make bridge-xcframeworkაღნიშნული პროდუქტი წარმოადგენს dist/NoritoBridge.xcframework; IrohaSwift/Package.swift უწოდებს მას როგორც ../dist/NoritoBridge.xcframework.
CocoaPods
კოდის ბაზა ასევე შეიცავს IrohaSwift/IrohaSwift.podspec. იგი აცხადებს IrohaSwift პოდს, Swift 5.9 და iOS 15. პოდსპექი იზიდავს Swift წყაროებს მთავარ საცავიდან; მშობლიური ხიდი ჯერ კიდევ უნდა არსებობდეს და დაკავშირებული იყოს ტრანზაქციის კოდირებისთვის, არა-Ed25519 ხელმოწერისთვის და კრიპტო კავშირისთვის.
სწრაფი დასაწყისი
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 მხოლოდ წაკითხვა
დაიწყეთ მარტივი HTTP სონდის გამოყენებით, რათა დაადასტუროთ, რომ მოწყობილობა ან სიმულატორი შეიძლება მიაღწიოს საზოგადოებრივ Taira საბოლოო წერტილს:
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))
}გამოიყენეთ იგივე URLSession შეამოწმება https://taira.sora.org/v1/assets/definitions?limit=5, როდესაც თქვენ აშენებთ UI და კვლავ სცადეთ ქცევა. გადადით IrohaSDK-მდე დააბრუნეთ დამხმარეები მხოლოდ მას შემდეგ, რაც აპლიკაცია ატვირთავს ხელმოწერის მასალას უსაფრთხო შენახვისგან და ანგარიში ფინანსდება Taira.
ტრანზაქციის შესაქმნელად და წარსადგენად, გამოიყენეთ IrohaSDK დამხმარეები. ისინი ეძახიან ადგილობრივ ხიდზე მხარდაჭერილ ტრანზაკციულ კოდირებას:
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, და UnshieldRequest კანონიკური ანგარიშის დამტკიცება IDs და კანონიკური არასწორი Base58 აქტივის განსაზღვრა IDs მანამდე, სანამ ხელმოწერა.
ადგილობრივი საფინანსო ანაზღაურება
Swift ქმნის ბაზრის და ანონიმური საფინანსო ინსტრუქციებს, როგორც Norito JSON სასარგებლო ტვირთები NativeEscrowInstructionBuilders ან ექვივალენტული IrohaSDK.build*Escrow* დამხმარეების მეშვეობით. იხილეთ Native Asset Escrow მაგალითებისთვის, ანონიმურ მტკიცებულებების ველები და დავების განმუხტვის ნებართვის ჯილდო.
ხელმოწერა
Keypair არის Ed25519 კომფორტი API. სხვა ალგორითმებისათვის, შეიქმნას IrohaSDK defaultSigningAlgorithm და გამოიყენოს generateSigningKey() ან signingKey(fromSeed:):
let pqSdk = IrohaSDK(
baseURL: torii.baseURL,
defaultSigningAlgorithm: .mlDsa
)
let signingKey = try pqSdk.generateSigningKey()SigningAlgorithm enum ამჟამად მოიცავს Ed25519, secp256k1, BLS ნორმალურ და მცირე ვარიანტებს, ML-DSA, GOST R 34.10-2012 პარამეტრების ნაკრებებს და SM2. Ed25519 მოსახერხებელი ბილიკის მიღმა საჭიროა ადგილობრივი ხიდების მხარდაჭერა.
გაერთიანება
კონექტის კლიენტი განხორციელებულია Swift წყაროზე, კრიპტო და ჩარჩო კოდეკებით, რომელსაც მხარს უჭერს NoritoBridge:
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 მართავს ღია და დახურული კონტროლი, კოდირებული ფურცლის წაკითხვა, მიმართულების გასაღები, ნაკადის მართვა, მოვლენების ნაკადები, ბალანსის ნაკადები და დიაგნოსტიკური ჟურნალები.
ამჟამინდელი მოცულობა
Swift წყარო ამჟამად მოიცავს:
ToriiClientHTTP დამხმარეები ანგარიშებზე, აქტივებზე, საფირმოზე, Explorer-გვერდებზე, RWA, ხელშეკრულებებზე, multisig-ზე, მმართველობაზე, აბონენტებზე, მონაცემთა ხელმისაწვდომობაზე, კონფიდენციალურ აქტივებს, კვანძის/სტარტაიმის სტატუსზე, ჯანმრთელობაზე, მაჩვენებლებსა და SSE ნაკადებზე.IrohaSDKტრანზაქციების შემქმნელები და გადაცემის/გამოკითხვის დამხმარეები ტრანსფერისთვის, მონტაჟისთვის, წვისთვის, ტყვეობისთვის, უტყვილისათვის, ZK გადარიცხვა, ZK აქტივების რეგისტრაცია, მეტა მონაცემები, საიდენტიფიკაციო მოთხოვნები, მრავალფუნქციური რეგისტრაციისა და მმართველობის ინსტრუქციები- მიმდინარე ტრანზაქციული რიგის მხარდაჭერა
PendingTransactionQueueდაFilePendingTransactionQueueსაშუალებით - საანგარიშო მისამართი და I105 დამხმარე პირები
AccountAddressდაAccountId - Ed25519, secp256k1, ML-DSA, BLS, GOST და SM2 საფორმაციო ზედაპირები, საჭიროების შემთხვევაში ადგილობრივი ხიდების მხარდაჭერით.
- ადგილობრივი საფინანსო ინსტრუქციის სასარგებლო ტვირთების მშენებლები ბაზრისთვის და ანონიმური საფინანსოსათვის
- დააკავშიროთ WebSocket, ჩარჩო, კრიპტო, სესია, რიგები, გათამაშება და დიაგნოსტიკის დამხმარეები
- კაგემუშას მზადყოფნა, ჩაწერილი დამატება და გამოსყიდვა, ექსპლუატაციის სტატუსი, შენიშვნა, თანამოაზრე ბუნდი, მიღება და QR ნაკადის მოდელები.
- SoraFS, მონაცემთა ხელმისაწვდომობისა და დასამტკიცებელი მიმაგრების დამხმარეები
API მაგალითები
გამოიყენეთ IrohaSwift/Sources/IrohaSwift საჯარო დანერგვისთვის და IrohaSwift/Tests/IrohaSwiftTests იგივე წყაროს რევიზიიდან გამოკვლეული გამოყენების მაგალითებისთვის.
წყაროების მითითებები
IrohaSwift/Package.swiftIrohaSwift/IrohaSwift.podspecIrohaSwift/Sources/IrohaSwift/ToriiClient.swiftIrohaSwift/Sources/IrohaSwift/TxBuilder.swiftIrohaSwift/Sources/IrohaSwift/TransactionEncoder.swiftIrohaSwift/Sources/IrohaSwift/ConnectClient.swiftIrohaSwift/Sources/IrohaSwift/ConnectSession.swift