冷钱包-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)
}