Swift e iOS
O Swift SDK enviado pelo espaço de trabalho upstream é o pacote IrohaSwift Swift sob IrohaSwift/. Seu manifesto de pacote define três produtos da bibliotecaIrohaSwift, IrohaSwiftMobileTransports e IrohaSwiftTransferUIe visa iOS 15+ e macOS 12+ com as ferramentas Swift 5.9.
O pacote depende do alvo binário nativo NoritoBridge. A resolução do pacote valida ../dist/NoritoBridge.xcframework antes da construção, e os caminhos de transação ou criptomoeda Connect lançam erros não disponíveis quando os símbolos nativos não são carregados.
Swift Gestor de embalagens
Quando se desenvolve contra um espaço de trabalho chequeado, apontar SwiftPM no diretório local de pacotes IrohaSwift/. A identidade do pacote utilizada por Package.swift é IrohaSwift:
dependencies: [
.package(name: "IrohaSwift", path: "/path/to/iroha/IrohaSwift")
],
targets: [
.target(
name: "YourApp",
dependencies: [
.product(name: "IrohaSwift", package: "IrohaSwift")
]
)
]Ajuste o caminho para o seu aplicativo. Não copie o caminho atual examples/ios/ConnectMinimalApp como está; esse manifesto resolve ../../IrohaSwift para examples/IrohaSwift.
Antes de resolver o pacote, verifique se a ponte existe na raiz do espaço de trabalho:
cd /path/to/iroha
make bridge-xcframeworkIsto produz dist/NoritoBridge.xcframework; o IrohaSwift/Package.swift refere-se a ele como ../dist/NoritoBridge.xcframework.
CocoaPods
A base de código também contém IrohaSwift/IrohaSwift.podspec. Ela declara o pod IrohaSwift, Swift 5.9, e iOS 15. O podspec tira fontes Swift do repositório principal; a ponte nativa ainda tem que estar presente e ligada para codificação de transações, assinatura não-Ed25519 e criptografia Connect.
Rapido arranque
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)
}Tente Taira Apenas leitura
Comece com uma sonda HTTP simples para confirmar que o dispositivo ou simulador pode atingir o ponto final público 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))
}Use o mesmo cheque de URLSession para https://taira.sora.org/v1/assets/definitions?limit=5 enquanto você está construindo UI e tente novamente o comportamento. Passe para IrohaSDK enviar auxiliares somente depois que o aplicativo carregue material de assinatura do armazenamento seguro e a conta é financiada em Taira.
Para criar e enviar uma transação, use os auxiliares IrohaSDK. Estes chamam o codificador de transação nativo apoiado por ponte:
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, e UnshieldRequest validação da conta canônica IDs e definição de ativo base58 canónica sem prefixo IDs Antes de assinar.
Empréstimo de crédito nativo
Swift constrói instruções de mercado e garantia anônima como cargas úteis de Norito JSON através de NativeEscrowInstructionBuilders ou auxiliares equivalentes IrohaSDK.build*Escrow*. Veja Native Asset Escrow para exemplos, campos de prova anônimos e o token de permissão para resolver disputas.
Assinatura
Keypair é a conveniência Ed25519 API. Para outros algoritmos, construa um IrohaSDK com defaultSigningAlgorithm e use generateSigningKey() ou signingKey(fromSeed:):
let pqSdk = IrohaSDK(
baseURL: torii.baseURL,
defaultSigningAlgorithm: .mlDsa
)
let signingKey = try pqSdk.generateSigningKey()A Comissão SigningAlgorithm Enum inclui atualmente a Ed25519, secp256k1, BLS variantes normais e pequenas, ML-DSA, GOST R 34.10-2012 conjuntos de parâmetros, e SM2. É necessário o apoio da ponte nativa fora do caminho de conveniência Ed25519.
Conectar
O cliente Connect é implementado na fonte Swift, com codecs criptográficos e de quadros suportados por 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 manuseia controles de abertura e fechamento, leitura criptografada do envelope, teclas de direcção, controle de fluxo, fluxos de eventos, fluxos equilíbrio e diários de diagnóstico.
Cobertura atual
A fonte Swift inclui atualmente:
ToriiClientHTTP auxiliares para contas, ativos, pseudónimos, páginas de exploradores, RWA, contratos, multisig, governança, subscrições, disponibilidade de dados, ativos confidenciais, estado do nó/tipo de execução, saúde, métricas e fluxos SSE.- Construtores de transacções
IrohaSDKe submetedores/assistentes de votação para transferência, moeda, queima, escudo, não escudo, transferência ZK, registo de ativos ZK, metadados, reivindicações de identificação, registo multisig e instruções de governança. - Apoio à fila de transações pendente através de
PendingTransactionQueueeFilePendingTransactionQueue - Endereço de conta e auxiliares I105 através do
AccountAddresse doAccountId - Superfícies de assinatura Ed25519, secp256k1, ML-DSA, BLS, GOST e SM2, com suporte ponteiro nativo quando necessário.
- Construtores de cargas úteis de instruções nativas em custódia para mercado e custódia anônima
- Conectar WebSocket, quadro, cripto, sessão, fila, repetição e auxiliares de diagnóstico.
- Preparação Kagemusha, reabastecimento e resgate digitado, estado de operação, nota, pacote entre pares, recibo e modelos de fluxo QR
- SoraFS, auxiliares para a disponibilidade de dados e para a correcção da ligação
API exemplos
Usar IrohaSwift/Sources/IrohaSwift para a implementação pública e IrohaSwift/Tests/IrohaSwiftTests para os exemplos de utilização testados da mesma revisão da fonte.
Referências de fontes
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