SwiftyEOS是一个用于与EOS交互的开源框架,用Swift编写。可以在iOS和macOS上使用。
特点:
- EOS密钥对生成
- 私钥导入
- 签名哈希
- 基本的RPC API(链/历史)可查询客户端
- 交易(EOS token 转账)
- 帮助类处理iOS上的脱机钱包
- 在iOS上加密/解密导入私钥
如何使用它
- 1.将
Libraries
和Sources
文件夹复制到项目中,不需要main.swift
。
- 2.如果不是针对iOS平台,请删除
Sources/Utils/iOS
。
- 3.将
Libraries/include
添加到Header搜索路径中。
- 4.将
Libraries/include/Bridging-Header.h
设置为Objective-C Bridging Header。如果你有自己的bridging header,请复制该文件中的所有导入内容并粘贴到你自己的文件中。
- 5.编译然后等结果
密钥对生成
SwiftyEOS现在支持secp256k1密钥对。
secp256r1密钥对生成有bug但我无法弄清楚原因。从cleos
创建的单元测试创建密钥--r1
不会通过。你可能不会将secp256r1视为一个选项,因为cleos wallet
命令也无法导入这些键。
生成随机密钥对:
let (pk, pub) = generateRandomKeyPair(enclave: .Secp256k1)
很容易对吧?
print("private key: \(pk!.wif())")
print("public key : \(pub!.wif())")
// private key: PVT_K1_5HxrYTdZX89zodtJhTzCk87MfNZAkiBRfFvSX8kacYjtwaDpTkL
// public key : PUB_K1_4yDYdmcVcXxAxeNsUWRG7x9FKQE4HbJZdzgZFv1AYxk6oSVcLd
PVT_K1_
和PUB_K1_
前缀是标准密钥表示的一部分。但是EOS系统和SwiftyEOS也支持旧方式:
print("private key: \(pk!.rawPrivateKey())")
print("public key : \(pub!.rawPublicKey())")
// private key: 5HxrYTdZX89zodtJhTzCk87MfNZAkiBRfFvSX8kacYjtwaDpTkL
// public key : EOS4yDYdmcVcXxAxeNsUWRG7x9FKQE4HbJZdzgZFv1AYxk6oSVcLd
导入现有密钥:
let importedPk = try PrivateKey(keyString: "5HxrYTdZX89zodtJhTzCk87MfNZAkiBRfFvSX8kacYjtwaDpTkL")
let importedPub = PublicKey(privateKey: importedPk