冷钱包-kotlin
源码和库
Kotlin
https://github.com/WaykiChain/wicc-wallet-utils-kotlin
使用方法
详见github仓库test示例代码以及说明。或参考以下
拉取代码
// 命令行语句拉取
git clone https://github.com:WaykiChain/wicc-wallet-utils-kotlin.git
//直接到网页下载
https://github.com/WaykiChain/wicc-wallet-utils-kotlin
编译
IntelliJ IDEA
使用命令行, 查看本地jdk版本号
java -version
如果本地jdk版本号为8,则不做修改,若为14,则将gradle
:wrapper
目录下的 gradle-wrapper.properties
文件中distributionUrl
设置为
distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip
创建私钥(钱包地址、公钥)
详细请参考信息: src/test/kotlin/com/waykichain/wallet/TestWallet.kt
1、生成助记词
// Resquest:
var words = MnemonicUtil.randomMnemonicCodes()
logger.info(words.toString())
//Respond
信息: [vote, image, poverty, list, book, siren, dentist, cave, north, right, suit, liberty]
2、生成钱包
// Request
val words = "vote, image, poverty, list, book, siren, dentist, cave, north, right, suit, liberty"
val networkParameters = WaykiTestNetParams.instance //generate Testnet Address From Mnemonic
//val networkParameters = WaykiMainNetParams.instance //generate Mainnet Address From Mnemonic
val wallet= BIP44Util.generateWaykiWallet(words, networkParameters)
logger.info("\nmnemonic: $words\naddress: ${wallet.address} \n Private key: ${wallet.privateKey} \nPublic Key: ${wallet.pubKey}")
// Respond
信息:
mnemonic: vote, image, poverty, list, book, siren, dentist, cave, north, right, suit, liberty
address: waMDJew9pm5e6fT7aCaWG1yBwcPx1mW7B2
Private key: Y9wDyMys64KVhqwAVxbAB4aYDNVQ4HpRhQ7FLWFC3MhNNXz4JHot
Public Key: 02a89bd7e93f119c37a02c3397ca153c22c9631677acd1fa9cd77ea5c20f4e8f6d
3、导入私钥
// Resquest
val params = WaykiTestNetParams.instance //测试链
val privKeyWiF = “Y9wDyMys64KVhqwAVxbAB4aYDNVQ4HpRhQ7FLWFC3MhNNXz4JHot”
val key = DumpedPrivateKey.fromBase58(params, privKeyWiF).key
logger.info(Utils.HEX.encode(key.pubKeyHash))
// Respond
信息: 94ed078235cdfdb52e35c2fdf4cee77e286361fa
交易签名
使用私钥对交易进行签名,您可以通过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/test/kotlin/com/waykichain/wallet/TestTransaction.kt
1、钱包注册交易
钱包注册交易已不是必须的,你可以在其他交易通过公钥参数激活你的钱包。
// Resquest
val wallet = LegacyWallet()
val netParams = WaykiTestNetParams.instance
val privKeyWiF = "Y9XMqNzseQFSK32SvMDNF9J7xz1CQmHRsmY1hMYiqZyTck8pYae3"
val key = DumpedPrivateKey.fromBase58(netParams, privKeyWiF).key
val txParams = WaykiRegisterAccountTxParams(key.publicKeyAsHex, null, 429821, 10000, CoinType.WICC.type)
txParams.signTx(key)
val tx = wallet.createRegisterTransactionRaw(txParams)
logger.info("${tx.length} - $tx")
// Respond
信息: 230 - 0201999c7d2102a722a3a94fb41d92bcf9d54cd76ea40c8b0c223d6f0570389b775120c5e487640083e1ac0046304402205304902f6ae8470e7c294b8abe7fdd5a9847d8980914234c9ddb9b6098e473d002200ad2d0238292285394447905cb20b7275cd2daf3a68d1237a1200982b99172bc
2、钱包转账交易
// Resquest
val wallet = LegacyWallet()
val netParams = WaykiTestNetParams.instance
val srcPrivKeyWiF = "Y6J4aK6Wcs4A3Ex4HXdfjJ6ZsHpNZfjaS4B9w7xqEnmFEYMqQd13"
val srcKey = DumpedPrivateKey.fromBase58(netParams, srcPrivKeyWiF).key
val pubKey = srcKey.publicKeyAsHex //user public key
val destAddr = "wWTStcDL4gma6kPziyHhFGAP6xUzKpA5if"
val memo="test transfer"
val txParams = WaykiCommonTxParams(WaykiNetworkType.TEST_NET, 34550, pubKey,10000,1100000000000, "0-1", destAddr,memo)
txParams.signTx(srcKey)
val tx = wallet.createCommonTransactionRaw(txParams)
WaykiCommonTxParams
函数解析
WaykiCommonTxParams(networkType: WaykiNetworkType, nValidHeight: Long,pubKey:String, fees: Long, val value: Long, val srcRegId: String, destAddr: String,val memo: String)
param | func |
---|---|
networkType | 网络连接方式 : 测试网:WaykiNetworkType.TEST_NET 主网:WaykiNetworkType.MAIN_NET |
nValidHeight | 有效高度 |
pubKey | 公钥 |
fees | 矿工费用 |
value | 转账费用 |
srcRegId | 转账发起方regid |
destAddr | 接收方 |
memo | 备注 |
编译打包
执行命令
gradle jar -PwiccBuildJar
输出
build/libs/wicc-wallet-utils-2.0.0.jar
参考三方项目
https://bitcoinj.github.io/
https://github.com/bitcoin/secp256k1