Swift ו-iOS
ה- Swift SDK שנשלח על ידי חלל העבודה העליון הוא החבילה IrohaSwift Swift תחת IrohaSwift/. מוניפסט החבילה שלו מגדיר שלושה מוצרי ספריה IrohaSwift, IrohaSwiftMobileTransports, ו IrohaSwiftTransferUI, ומטרת ל- iOS 15+ ו- macOS 12+ עם כלים של Swift 5.9.
החבילה תלויה במטרה השתינית המקומית NoritoBridge. החלטת החבילה מאשרת ../dist/NoritoBridge.xcframework לפני בניית, וטיולים של טרנזקציה או קונקט קריפטו זורקים טעויות שאינן זמינות כשסמלים מקומיים אינם מותאמים.
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")
]
)
]תקן את הנתיב עבור האפליקציה שלך. אל תישכף את הנתיba הנוכחית examples/ios/ConnectMinimalApp כפי שהיא; המוניסטר הזה פותר ../../IrohaSwift ל 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, וConnect crypto.
התחלה מהירה
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*. ראה אבטחת נכסים מקומיים לדוגמאות, שדות הוכחה אנונימיים, ואת סימן רשות פתרון מחלוקת.
חתימה
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.
חיבור
לקלינט Connect מתבצע במקור 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 עוזרים לחשבונות, נכסים, שם כינוי, דפים של חוקר, RWA, חוזים, מלטסיג, ממשל, מחברות, זמינות נתונים, נכסים סודיים, מצב הערך/זמן הפעלה, בריאות, מדידות, וזרמים SSEIrohaSDKבונים עסקאות ועוזרים להגיש/הצבעה עבור העברה, מנטה, שריפה, כיסוי, ללא כיסוי. ZK העברה, ZK רישום נכסים, מטא-מנתונים, דרישות מזהה, רישום רב סיג, הוראות לניהול.- תמיכה בשורה של עסקאות בהמתנה דרך
PendingTransactionQueueוFilePendingTransactionQueue - כתובת חשבון ועוזרי I105 באמצעות
AccountAddressוAccountId - גבי חתימה Ed25519, secp256k1, ML-DSA, BLS, GOST ו SM2, עם תמיכה בישר מקומית, כאשר זה נחוץ.
- הוראות אבטחה מקומית לבניית מטען מועיל לשוק ואבטחה אנונימית
- חיבור WebSocket, מסגרת, קריפטו, ישיבה, בתור, חזרה, ועוזרי דיאגנסטיקה
- הכנות של Kagemusha, תוספת וחיסוי טייפ, מצב הפעולה, פתק, חבילת עמיתים, קבלה ומודלים של זרם 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