冷钱包-go
源码和库
Golang
https://github.com/WaykiChain/wicc-wallet-utils-go
使用方法
详见github仓库test示例代码以及说明。或参考以下
拉取代码
维基链go语言离线签名钱包库
// 命令行语句拉取
go get github.com/WaykiChain/wicc-wallet-utils-go
go get github.com/btcsuite
查看是否拉取下来
近入到 github.com 目录
#resquest
> ll
#respond
total 0
drwxr-xr-x 3 hpy staff 96B 7 18 11:38 WaykiChain
如果存在WaykiChain,则拉取成功
调用接口
1、进入WaykiChain/wicc-wallet-utils-go 目录,新建目录wiccwallet,将以下文件,放入wiccwallet下
-rw-r--r-- 1 hpy staff 1.8K 7 16 10:38 Mnemonic.go
-rw-r--r-- 1 hpy staff 12K 7 16 10:38 WaykiChainTransaction_test.go
-rw-r--r-- 1 hpy staff 11K 7 16 10:38 WaykichainParams.go
-rw-r--r-- 1 hpy staff 30K 7 16 17:54 WaykichainWallet.go
-rw-r--r-- 1 hpy staff 2.6K 7 16 10:38 WaykichainWallet_test.go
最终结果为
➜ wicc-wallet-utils-go git:(master) ✗ ll
total 40
-rw-r--r-- 1 hpy staff 1.0K 7 16 10:38 LICENSE
-rw-r--r-- 1 hpy staff 11K 7 16 10:38 README.md
drwxr-xr-x 36 hpy staff 1.1K 7 16 10:38 commons
drwxr-xr-x 46 hpy staff 1.4K 7 18 12:06 crypto
drwxr-xr-x 3 hpy staff 96B 7 16 10:38 demo
drwxr-xr-x 7 hpy staff 224B 7 18 11:36 wiccwallet
drwxr-xr-x 10 hpy staff 320B 7 16 10:38 wordlists
➜ wiccwallet git:(master) ✗ ll
total 136
-rw-r--r-- 1 hpy staff 1.8K 7 16 10:38 Mnemonic.go
-rw-r--r-- 1 hpy staff 12K 7 16 10:38 WaykiChainTransaction_test.go
-rw-r--r-- 1 hpy staff 11K 7 16 10:38 WaykichainParams.go
-rw-r--r-- 1 hpy staff 30K 7 16 17:54 WaykichainWallet.go
-rw-r--r-- 1 hpy staff 2.6K 7 16 10:38 WaykichainWallet_test.go
2、在wicc-wallet-utils-go新建一个文件,调用相关接口,例如,创造一个testApi.go文件,内容如下:
package main
import (
"fmt"
"github.com/WaykiChain/wicc-wallet-utils-go/wiccwallet"
)
func main(){
TestGenerateMnemonics()
}
/*
生成助记词
generate Mnemonics
*/
func TestGenerateMnemonics() {
mnemonic := wiccwallet.GenerateMnemonics()
if mnemonic == "" {
fmt.Println("GenerateMnemonics err!")
}
fmt.Println("mnemonic=", mnemonic)
}
3、 编译
go install ../WaykiChain/wicc-wallet-utils-go
成功后会在go相对应的bin目录下生产wicc-wallet-utils-go可执行文件
-rwxr-xr-x 1 hpy staff 2.9M 7 18 14:47 wicc-wallet-utils-go
4、运行
> ./wicc-wallet-utils-go
#respond
mnemonic= season almost helmet dice match hero suggest ice grab transfer cradle warfare
创建私钥(钱包地址、公钥)
详细请参考信息: src/github.com/WaykiChain/wicc-wallet-utils-go/wiccwallet/WaykichainWallet_test.go
1、生成12个助记词
#Resquest
mnemonic := GenerateMnemonics()
#Respond
mnemonic= season almost helmet dice match hero suggest ice grab transfer cradle warfare
2、助记词生成钱包私钥
提供助记词和网络类型(WAYKI_MAINTNET
:"主网"; WAYKI_TESTNET
:"测试网"),返回私钥。主网私钥大写P开头,测试网大写Y开头。
# Resquest
mnemonic := "empty regular curve turtle student prize toy accuse develop spike scatter ginger"
privateKey, _ := GetPrivateKeyFromMnemonic(mnemonic, WAYKI_MAINTNET)
#Respond
privateKey = PjX5M3fPH2LF4PJv9prKGJGAGbApo3ffnBGh9oV8xchbHAZFoLie
3、通过私钥获得公钥
publicKey,_:=GetPubKeyFromPrivateKey("Y6J4aK6Wcs4A3Ex4HXdfjJ6ZsHpNZfjaS4B9w7xqEnmFEYMqQd13")
4、获得钱包地址
1、通过私钥获取钱包地址
address := GetAddressFromPrivateKey(privateKey, WAYKI_MAINTNET)
2、通过助记词获取钱包地址
mnemonic := "empty regular curve turtle student prize toy accuse develop spike scatter ginger"
address := GetAddressFromMnemonic(mnemonic, WAYKI_MAINTNET)
交易签名
使用私钥对交易进行签名,您可以通过Bass服务提交离线签名rawtx交易。
BassNetwork | ApiAddr |
---|---|
TestNetwork | https://baas-test.wiccdev.org/v2/api/swagger-ui.html#!/ |
ProdNetwork | https://baas.wiccdev.org/v2/api/swagger-ui.html#!/ |
提交交易 Submit raw string:
Mainnet https://baas.wiccdev.org/v2/api/swagger-ui.html#!/transaction-controller/offlinTransactionUsingPOST ,
TestNet https://baas-test.wiccdev.org/v2/api/swagger-ui.html#!/transaction-controller/offlinTransactionUsingPOST
获得区块高度 Get block height:
MainNethttps://baas.wiccdev.org/v2/api/swagger-ui.html#!/block-controller/getBlockCountUsingPOST,
TestNet https://baas-test.wiccdev.org/v2/api/swagger-ui.html#!/block-controller/getBlockCountUsingPOST
交易转账
详细请参考信息: src/github.com/WaykiChain/wicc-wallet-utils-go/wiccwallet/WaykiChainTransaction_test.go
1、钱包转账交易
多币种转账交易,支持多种币种转账
接口:SignUCoinTransferTx(privateKey, &txParam)
fee Minimum 100000 sawi
Example
// Resquest
func TestSignUCoinTransferTx(t *testing.T) {
privateKey := "Y6J4aK6Wcs4A3Ex4HXdfjJ6ZsHpNZfjaS4B9w7xqEnmFEYMqQd13"
var txParam UCoinTransferTxParam
txParam.FeeSymbol = string(commons.WICC)
txParam.Fees = 1000000
txParam.ValidHeight = 12345
txParam.SrcRegId = ""
txParam.Dests=NewDestArr()
dest1:=Dest{string(commons.WICC),1000000, "wLKf2NqwtHk3BfzK5wMDfbKYN1SC3weyR4"}
txParam.Dests.Add(&dest1)
txParam.PubKey = "036c5397f3227a1e209952829d249b7ad0f615e43b763ac15e3a6f52627a10df21"
txParam.Memo = ""
hash, err := SignUCoinTransferTx(privateKey, &txParam)
if err != nil {
t.Error("UCoinTransferTx err: ", err)
}
println(hash)
}