Swift およびiOS
労働組合 Swift SDK アウトストリームワークスペースで運送されるのは IrohaSwift Swift 下のパッケージ IrohaSwift/. そのパッケージマニストでは3つの図書館製品が定義されていますIrohaSwift, IrohaSwiftMobileTransports, そして IrohaSwiftTransferUIおよびiOS 15+とmacOS 12+を対象とする Swift 道具 5.9.
パッケージはネイティブ NoritoBridge バイナリーターゲットに依存します.パッケージ解像度は構築前に ../dist/NoritoBridge.xcframework を有効化し,ネイティブシンボルがロードされていない場合,トランザクションまたはConnect暗号経路はブリッジ利用できないエラーを投げ出します.
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 5.9とiOS 15で,podspecが引っ張ります Swift メインリポジトリからのソース;ネイティブブリッジは依然として存在し,トランザクションコーディングのためにリンクする必要があります.エド25519以外の署名,そして Connect暗号.
スピードスタート
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 エド25519の便利性です 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,契約,マルチシグ,ガバナンス,サブスクリプション,データ利用可能性,機密資産,ノード/ランタイム状態,健康,メトリック,および SSE ストリームIrohaSDKトランザクション作成者および移転,ミント,バーン,シールド,アンシールド, ZK 移転, ZK 資産登録,メタデータ,識別請求,マルチシグ登録,ガバナンス指示の提出/投票援助者PendingTransactionQueueとFilePendingTransactionQueue経由で取引のキューサポートを待機しているAccountAddressとAccountId経由で口座アドレスおよび I105 助手- 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