TVM SDK (everscale, venom, gosh) 的 Swift 客户端

SPM SPM

Swift 是一种强类型语言,长期以来不仅用于 iOS 开发。Apple 正在积极将其推广到新的平台,如今它几乎可以用于任何任务。因此,此实现提供了 TVM (toncoin, everscale, venom, gosh) SDK 在多个平台上的工作,包括移动电话的原生平台。请允许我提醒您,swift 也可以为 android 构建。

操作系统 结果
MacOS
Linux
iOS
Windows 即将推出

获取 api 密钥和 TVM 端点

您需要在这里获取 API-KEY https://dashboard.evercloud.dev

用法

所有请求都是异步的

import EverscaleClientSwift

var config: TSDKClientConfig = .init()
config.network = TSDKNetworkConfig(endpoints: ["https://net.ton.dev"])
let client: TSDKClientModule = .init(config: config)

// Crypto
client.crypto.factorize(TSDKParamsOfFactorize(composite: "17ED48941A08F981")) { (response) in
    print(response.result?.factors)
}

// Boc
let payload: TSDKParamsOfParse = .init(boc: "te6ccgEBAQEAWAAAq2n+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE/zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzSsG8DgAAAAAjuOu9NAL7BxYpA")
client.boc.parse_message(payload) { (response) in
    if let result = response.result, let parsed: [String: Any] = result.parsed.toDictionary() {
        print(parsed["id"])
        print(parsed["src"])
        print(parsed["dst"])
    }
}

错误

client.crypto.factorize(TSDKParamsOfFactorize(composite: "17ED48941A08F981")) { (response) in
    if let error = response.error {
        print(error.data.toJSON())
        print(error.code)
    }
}

为 Linux 和 MacOS 设置 TONSDK

使用 bash 脚本安装 sdk

  1. 这会将 SDK 下载到当前目录,编译它并将库符号链接添加到您的系统
cd everscale-client-swift
  1. 要安装或更新 SDK 版本,只需运行以下命令
bash scripts/install_tonsdk.sh

手动安装 sdk(如果您在使用脚本 install_tonsdk.sh 时遇到任何问题)

剧透:手动安装
  1. 将 Rust 安装到您的操作系统

  2. git 克隆 https://github.com/tonlabs/ever-sdk

  3. cd ./SDK

  4. cargo update

  5. cargo build --release

  6. 复制或创建动态库的符号链接
    macOS
    ./SDK/target/release/libton_client.dylib

    /usr/local/lib/libton_client.dylib

    Linux
    ./SDK/target/release/libton_client.so

    /usr/lib/libton_client.so

  7. 创建 pkgConfig 文件

macOS
/usr/local/lib/pkgconfig/libton_client.pc

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: ton_client
Description: ton_client
Version: 1.0.0
Cflags: -I${includedir}
Libs: -L${libdir} -lton_client

Linux
/usr/lib/pkgconfig/libton_client.pc

prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: ton_client
Description: ton_client
Version: 1.0.0
Cflags: -I${includedir}
Libs: -L${libdir} -lton_client
  1. 复制或创建文件的符号链接
    /SDK/ton_client/client/tonclient.h

    MacOS
    /usr/local/include/tonclient.h
    Linux
    /usr/include/tonclient.h

为 iOS 设置 TONSDK

  1. 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh || true && \
source ~/.profile
  1. 安装 "cargo lipo"
rustup target add aarch64-apple-ios x86_64-apple-ios || true && \
cargo install cargo-lipo
  1. 为 iOS 构建 SDK

转到您的项目文件夹并

git clone https://github.com/tonlabs/SDK.git || true && \
cd ./SDK
git pull --ff-only || true && \
cargo update || true && \
cargo lipo --release

⚠️等待安装

  1. 在 xcode 中,文件 > 添加文件到 “您的项目名称” 导航到 ./SDK/ton_client/tonclient.h

  2. 创建桥接文件。在 xcode 中,文件 > 新建 > 文件,选择 Header File,设置名称,例如 Tonclient-Bridging-Header.h

并添加

#include <stdbool.h>

#import "tonclient.h"

像这样

#ifndef Tonclient_Bridging_Header_h
#define Tonclient_Bridging_Header_h

#include <stdbool.h>
#import "tonclient.h"

#endif
  1. 添加 Tonclient-Bridging-Header.h 的路径 $(PROJECT_DIR)/Tonclient-Bridging-Header.h

  1. 添加库搜索路径(包含 libton_client.a 的目录路径)$(PROJECT_DIR)/SDK/target/universal/release

  1. 文件 > Swift Packages > Add Package Dependency https://github.com/nerzh/ton-client-swift

  1. 构建项目...

测试

如果您使用 Xcode 进行测试

请为您的 xcode 方案设置自定义工作目录为项目文件夹。这对于此库文件夹的相对路径 "./" 是必要的。您可以使用 xcode 编辑方案菜单 Product > Scheme > Edit Scheme 菜单 Run 子菜单 Options 启用复选框 “Use custom directory” 并添加自定义工作目录。

或者,如果上述变体不可用,则在文件 path_to_this_library/.swiftpm/xcode/xcshareddata/xcschemes/TonClientSwift.xcscheme 中,将标签 "LaunchAction" 设置为此库的绝对路径,并带有选项
useCustomWorkingDirectory = "YES"
customWorkingDirectory = "/path_to_this_library"

测试

  1. 在 everscale-client-swift 的根目录中创建 .env.debug 文件,内容为 NET TON DEV
server_address=https://net.ton.dev
giver_address=0:653b9a6452c7a982c6dc92b2da9eba832ade1c467699ebb3b43dca6d77b780dd
giver_abi_name=Giver
giver_function=grant

可选: 如果您需要,为测试安装本地 NodeSE

server_address=https://:80
giver_abi_name=GiverNodeSE_v2
giver_amount=10000000000
  1. 运行测试
    MacOS
    在 Xcode 中运行测试
    Linux
    swift test --generate-linuxmain
    swift test --enable-test-discovery

更新 SDK

cd everscale-client-swift
bash api_generate.sh