BlockChainKit
🔏 BlockChainKit🔏
BlockChainKit是一个Swif库,提供8种语言的助记词生成和验证(NSLinguisticTagger
来自动检测助记词语言,您不需要设置语言
它还提供了使用Ethereum.RawTransaction
创建原始交易的功能,支持Ethereum和ERC-20代币,.sign(privateKey: Data, chainID: Int)
运行良好
2019-11-12
ETH的输入支持小数。
2019-10-18
现在您可以在Ethereum签名中设置自定义ChainID。
2019-10-15
支持CIC签名功能。
2019-06-04
支持使用以下方式为Bitcoin签名交易:
- 发送方和接收方地址
- 私钥WIF
- 未支出交易
- 金额
用法
创建助记词
// default is 128 bytes to create mnemonic with 12 words
let mnemonic = Mnemonic.create()
// create mnemonic with 15, 18, 21, 24 words by different strength
let mnemonicWith160Bytes = Mnemonic.create(strength: .words15)
let mnemonicWith192Bytes = Mnemonic.create(strength: .words18)
let mnemonicWith224Bytes = Mnemonic.create(strength: .words21)
let mnemonicWith256Bytes = Mnemonic.create(strength: .words24)
验证助记词
do {
try Mnemonic.valdiate(mnemonic)
} catch {
if let error = error as? MnemonicError {
switch error {
case .length: // length should be 12, 15, 18, 21, 24
case .invalid: // validate mnemonic with check sum
case let .words(words): // contains invalid words
}
}
}
// valdiate with specific language
try Mnemonic.valdiate(mnemonic, wordlist: .English)
从助记词创建种子
Mnemonic.createSeed(mnemonic).toHexString()
从种子创建私钥和公钥
let node = HDNode(seed: seed)
let BIP32RootKey = node.privateExtendedKey()
Base58 编码和解码
do {
try Base58.encode(node.privateExtendedKey())
} catch {
if let error = error as? BaseCodableError {
switch error {
case .decode: // decode error
case .encode: // encode error
}
}
}
并提供了一种协议来实现指定基数的编码或解码。
// you can create a new base with alphabet
struct Base58: BaseCodable {
static let alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
}
衍生
// BTC - m/44'/0'/0'
let account = node.derived(.hardened(44)).derived(.hardened(0)).derived(.hardened(0))
// BTC - m/44'/0'/0'/0
let chain = account.derived(.notHardened(0))
// BTC - m/44'/0'/0'/0/0
let addressNode = chain.derived(.notHardened(0))
let BTCPrivateKey = addressNode.WIF()
// ETH - m/44'/60'/0'/0/0
let ETHAccount = node.derived(.hardened(44)).derived(.hardened(60)).derived(.hardened(0))
let ETHPrivateKey = ETHAccount.derived(.notHardened(0)).derived(.notHardened(0)).ethPrivateKey
从私钥创建以太坊地址
let address = Ethereum.address(privateKey: privateKey)
从私钥创建比特币地址
let address = Bitcoin.address(privateKey: privateKey)
创建一个以太坊交易
let rawTransaction = Ethereum.RawTransaction(nonce: "0x6e",
gasPrice: "0x040000000000",
gasLimit: "0x060000",
toAddress: "0x85b7ca161C311d9A5f0077d5048CAdFace89a267",
value: "0x015950000000000000000000",
data: "")
// chainID supports zero, mainnet = 1, morden = 2, ropsten = 3, rinkeby = 4, goerli = 5, kovan = 42
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md
//
try rawTransaction.sign(privateKey: privateKeyData, chainID: .mainnet)
// Create a BNB
// contract: 0xB8c77482e45F1F44dE1745F52C74426C631bDD52
let ERC20Transaction = Ethereum.RawTransaction(nonce: "0x6e",
gasPrice: "0x040000000000",
gasLimit: "0x060000",
toAddress: "0x85b7ca161C311d9A5f0077d5048CAdFace89a267",
value: "0x015950000000000000000000",
contract: "0xB8c77482e45F1F44dE1745F52C74426C631bDD52")
try ERC20Transaction.sign(privateKey: privateKeyData, chainID: .mainnet)
创建一个比特币交易
// sign with from address, to address, amount, uxtos and wif of private key
let rawTransaction = try Bitcoin.sign(from: fromAddress,
to: toAddress,
amount: amount,
unspentTransactions: uxtos,
wif: wif)
// version 1.3.3 supports extend output
let output = BTCTransactionOutput(opReturnAddress: String)
let rawTransaction = try Bitcoin.sign(from: fromAddress,
to: toAddress,
amount: amount,
unspentTransactions: uxtos,
wif: wif,
extendOutput: output)
创建一个CIC交易
// version 1.4.0 supports
let parameter = CIC.CICSignParameter(privateKey: "d03353d9ea60e4a2277c1fcf35b858a46c6f60001a8a5ddd32b48f234ee0b9ca",
address: "cxf431130f518b149fed3d6dfb485741954ed4d2d1",
balance: "100000000000000000",
type: "cic",
fee: "100000000000000000",
nonce: "31",
coin: "cic")
let rawTransaction = CIC.sign(parameter: parameter)
特性
- BIP32
- BIP39
- BIP44
- BIP55
- ETH交易签名
- ETH ERC-20交易签名
- BTC交易签名
- CIC交易签名
要求
- iOS 11.0+
- Xcode 10.2
- Swift 5.1
安装
BlockChainKit通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中
pod 'BlockChainKit', '~> 1.4.6'
作者
捐赠
- 比特币地址 -
1GxDDqxBWUfAEgkWiPv2fJowB54gPMnrQr
- 以太坊地址 -
0x85b7ca161C311d9A5f0077d5048CAdFace89a267
许可证
BlockChainKit 遵循 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。