Swift и iOS
В настоящее время Swift SDK доставленный рабочим пространством вверх по течению 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 на 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 из основного хранилища; родный мост все еще должен быть присутствующим и связанным для кодирования транзакций, подписи не-Ed25519 и криптовалюты 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 Читайте только
Начните с простых исследований 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()Enum SigningAlgorithm в настоящее время включает 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, кадр, крипто, сеанс, очередь, воспроизведение и помощник диагностики.
- Готовность кагемуши, напечатанное дополнение и выкуп, состояние эксплуатации, записка, параллельный пакет, расписка и модели потока 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