Swift et iOS
Les États membres Swift SDK l'espace de travail en amont est le IrohaSwift Swift l'emballage IrohaSwift/. Son manifeste d'emballage définit trois produits bibliothécairesIrohaSwift, IrohaSwiftMobileTransports, et IrohaSwiftTransferUIet cible iOS 15+ et macOS 12+ avec Swift outils 5.9.
Le paquet dépend de l'objectif binaire natif NoritoBridge. La résolution du paquet valide ../dist/NoritoBridge.xcframework avant la construction, et les chemins de transaction ou de cryptographie Connect lancent des erreurs non disponibles lorsque les symboles natifs ne sont pas chargés.
Swift Gestionnaire du colis
Lorsqu'il s'agit de développer contre un espace de travail déconnecté SwiftPM dans le local IrohaSwift/ L'identité du paquet utilisée par Package.swift est IrohaSwift:
dependencies: [
.package(name: "IrohaSwift", path: "/path/to/iroha/IrohaSwift")
],
targets: [
.target(
name: "YourApp",
dependencies: [
.product(name: "IrohaSwift", package: "IrohaSwift")
]
)
]Ajustez le chemin pour votre application. Ne copiez pas le chemin examples/ios/ConnectMinimalApp actuel tel qu'il est; ce manifeste résoudra ../../IrohaSwift à examples/IrohaSwift.
Avant de résoudre le paquet, assurez-vous que le pont existe à la racine de l'espace de travail:
cd /path/to/iroha
make bridge-xcframeworkIl en résulte dist/NoritoBridge.xcframework; IrohaSwift/Package.swift le renvoie à ../dist/NoritoBridge.xcframework.
CocoaPods
La base de code contient également: IrohaSwift/IrohaSwift.podspec. Il déclare que le IrohaSwift une capsule, Swift 5.9 et iOS 15. Le podspec tire Swift les sources provenant du référentiel principal; le pont natif doit toujours être présent et lié pour le codage des transactions, non-édition25519 signature, et connecte crypto.
Démarrage rapide
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)
}Essayez Taira En lisant seulement
Commencez par une sonde HTTP simple pour confirmer que l'appareil ou le simulateur peut atteindre l'extrémité publique 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))
}Utilisez la même vérification URLSession pour https://taira.sora.org/v1/assets/definitions?limit=5 pendant que vous construisez UI et réessayez le comportement. Passez à IrohaSDK envoyez des aides seulement après que l'application a chargé du matériel de signature d'un stockage sécurisé et que le compte soit financé sur Taira.
Pour créer et soumettre une transaction, utilisez l'assistant IrohaSDK. Ils appellent le codeur de transaction natif à support bridge:
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)
}Le compte canonique IDs et la définition de l'actif sans préfixe canonique Base58 IDs sont validés par TransferRequest, MintRequest, BurnRequest, ShieldRequest et UnshieldRequest avant signature.
Réservation de fonds propres
Swift crée des instructions d'escrow sur le marché et anonymes en tant que chargements utiles de Norito JSON par l'intermédiaire de NativeEscrowInstructionBuilders ou des aides équivalentes IrohaSDK.build*Escrow*. Voir Native Asset Escrow pour les exemples, les champs de preuve anonymes et le jeton d'autorisation de résolution des différends.
La signature
Keypair est la commodité Ed25519 API. Pour d'autres algorithmes, construisez un IrohaSDK avec defaultSigningAlgorithm et utilisez generateSigningKey() ou signingKey(fromSeed:):
let pqSdk = IrohaSDK(
baseURL: torii.baseURL,
defaultSigningAlgorithm: .mlDsa
)
let signingKey = try pqSdk.generateSigningKey()Les États membres SigningAlgorithm enum comprend actuellement l'édition 25519, secp256k1, BLS les variantes normales et petites, ML-DSA, GOST R 34.10-2012 ensembles de paramètres, et SM2. Le support du pont natif est requis en dehors de la voie de commodité Ed25519.
Connectez
Le client Connect est mis en œuvre dans la source Swift, avec des codecs cryptographiques et de cadres pris en charge par 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 gère les commandes d'ouverture et de fermeture, les lectures chiffrées des enveloppes, les touches de direction, le contrôle du débit, les flux d'événements, les flux de balance et les journaux de diagnostic.
Couverture actuelle
La source Swift comprend actuellement les éléments suivants:
ToriiClientHTTP auxiliaires pour les comptes, les actifs, les pseudonymes, les pages explorateurs, RWA, les contrats, le multisig, la gouvernance, les abonnements, la disponibilité des données, les actif confidentiels, l'état du nœud/temps d'exécution, la santé, les mesures et les flux SSEIrohaSDKconstructeurs d'opérations et auxiliaires de soumission/poll pour le transfert, la menthe, la combustion, le bouclier, l'absence de bouclier; ZK le transfert, ZK l'enregistrement des actifs, les métadonnées, les réclamations d'identification, l'en enregistrement multisigne et les instructions de gouvernance;- soutien à la file d'attente des transactions par l'intermédiaire de
PendingTransactionQueueetFilePendingTransactionQueue; - adresse de compte et I105 auxiliaires par l'intermédiaire de
AccountAddresset deAccountId - Surfaces de signage Ed25519, secp256k1, ML-DSA, BLS, GOST et SM2, avec support de pont natif lorsque cela est nécessaire
- les constructeurs de charges utiles d'instructions en fiducie natives pour le marché et les fiducieux anonymes
- Connectez WebSocket, le cadre, la cryptographie, la session, la file d'attente, la répétition et les aides de diagnostic
- Préparation Kagemusha, remplissage et rachat typés, état d'exploitation, note, paquet de pairs, reçu et modèles de flux QR
- SoraFS, aides à la disponibilité des données et aux pièces jointes de preuve
API Exemples
Utiliser IrohaSwift/Sources/IrohaSwift pour la mise en œuvre publique et IrohaSwift/Tests/IrohaSwiftTests pour les exemples d'utilisation testés provenant de la même révision de source.
Références à la source
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