Skip to content

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:

swift
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:

bash
cd /path/to/iroha
make bridge-xcframework

Isto 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

swift
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:

swift
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:

swift
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:):

swift
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:

swift
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:

  • ToriiClient HTTP 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 IrohaSDK e 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 PendingTransactionQueue e FilePendingTransactionQueue
  • Endereço de conta e auxiliares I105 através do AccountAddress e do AccountId
  • 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.swift
  • IrohaSwift/IrohaSwift.podspec
  • IrohaSwift/Sources/IrohaSwift/ToriiClient.swift
  • IrohaSwift/Sources/IrohaSwift/TxBuilder.swift
  • IrohaSwift/Sources/IrohaSwift/TransactionEncoder.swift
  • IrohaSwift/Sources/IrohaSwift/ConnectClient.swift
  • IrohaSwift/Sources/IrohaSwift/ConnectSession.swift