Swift እና iOS
የ Swift SDK በቅድመ-መንገድ የሥራ ቦታ የተላከው IrohaSwift Swift ፓኬጅ በ IrohaSwift/ ስር ነው ። የእሱ ፓኬጅ ማኒፌስት ሶስት የቤተ-መጽሐፍት ምርቶችን ይገልጻል IrohaSwift ፣ IrohaSwiftMobileTransports እና IrohaSwiftTransferUIእና iOS 15+ እና macOS 12+ ን በ Swift መሳሪያዎች 5.
ፓኬጁ በአገሬው NoritoBridge በሁለትዮሽ ዒላማ ላይ የተመሠረተ ነው። የፓኬጅ ጥራት ከመገንባቱ በፊት ../dist/NoritoBridge.xcframework ያረጋግጣል ፣ እና የአገሬው ምልክቶች ባልጫኑበት ጊዜ የግብይት ወይም የግንኙነት ምስጠራ መንገዶች ድልድይ የማይገኙ ስህተቶችን ይጥላሉ ።
Swift የፓኬጅ አስተዳዳሪ
ከተሰረዘ የስራ ቦታ ጋር ሲነፃፀር በአካባቢው IrohaSwift/ ጥቅል ማውጫ ውስጥ SwiftPM ን ያመልክቱ። በ 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 ወደ examples/IrohaSwift ይለወጣል።
ጥቅሉን ከመፍታትዎ በፊት ድልድዩ በስራ ቦታ ሥር ላይ እንዳለ ያረጋግጡ:
cd /path/to/iroha
make bridge-xcframeworkይህ dist/NoritoBridge.xcframework ያስገኛል፤ IrohaSwift/Package.swift ../dist/NoritoBridge.xcframework በማለት ይጠቅሳል።
CocoaPods
የኮድ መሰረት ደግሞ ይዟል IrohaSwift/IrohaSwift.podspec. ይህ ይገልጻል IrohaSwift ካፕል፣ Swift 9 እና iOS 15. የ podspec ይጎትታል Swift ከዋናው የመረጃ ቋት ምንጮች; የአገር ውስጥ ድልድይ አሁንም መኖር አለበት እና ለግብይት ኮዲንግ የተገናኘ መሆን አለበት ፣ ኤድ 25519 ያልሆነ ፊርማ፣ እና ኮንክሪፕት.
ፈጣን ጅምር
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 ንባብ ብቻ ይሞክሩ
መሣሪያው ወይም ሲምዩተሩ ወደ Taira የህዝብ መጨረሻ ነጥብ መድረሱን ለማረጋገጥ ቀላል የሆነ HTTP ምርመራ ይጀምሩ:
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. ከኤድ 25519 ምቾት መንገድ ውጭ የአገር ውስጥ ድልድይ ድጋፍ ያስፈልጋል ።
አገናኝ
የ ‹Connect› ደንበኛ በ Swift ምንጭ ውስጥ ተተግብሯል ፣ በ NoritoBridge የተደገፉ crypto እና ክፈፍ ኮዴኮች:
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 ፣ ውል ፣ ባለብዙ ስም ፣ አስተዳደር ፣ ምዝገባዎች ፣ የመረጃ ተደራሽነት ፣ ሚስጥራዊ ሀብቶች ፣ ኖድ / የስራ ሰዓት ሁኔታ ፣ ጤና ፣ መለኪያዎች እና SSE ዥረቶችIrohaSDKየግብይት ገንቢዎች እና ለዝውውር ፣ ለወፍጮ ፣ ለማቃጠል ፣ ለመከላከያ ፣ ለመከላከል የማይችል ፣ ለዝውዋር ፣ ለ ZK ዝውውር ፣ ZK ንብረቶች ምዝገባ ፣ ሜታዳታ ፣ የመለየት ጥያቄዎችን ፣ ባለብዙ ምልክቶች ምዝገባ እና የአስተዳደር መመሪያዎችን የሚያቀርቡ/የሚዘረዙ ረዳቶች- በ
PendingTransactionQueueእናFilePendingTransactionQueueበኩል የሚደረገውን የግብይት ረድፍ ድጋፍ - የሂሳብ አድራሻ እና I105 ረዳቶች በ
AccountAddressእናAccountIdበኩል - Ed25519, secp256k1, ML-DSA, BLS, GOST, እና SM2 ፊርማ ወለሎች, አስፈላጊ ከሆነ የአገር ውስጥ ድልድይ ድጋፍ ጋር.
- የገበያ ቦታ እና የማይታወቁ የኤስኮር መመሪያ ተጠቃሚ ጭነት ገንቢዎች
- አገናኝ WebSocket, ክፈፍ, crypto, ክፍለ ጊዜ, ረድፍ, መልሶ ማጫወት, እና የምርመራ ረዳቶች
- የ 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