Android Library
Android Wallet Offline Signature Library Development Guide
Introduction
When developers need to use Android native client to generate mnemonic
, mnemonic To private key
, create address
, registered address
, transfer
, deployment contract
, call contract
, vote
, etc., WaykiChain provides Android's offline signature library for its use.
Sourcecode and library
Android native wallet offline signature library compiled based on Golang
language offline signature library. source code:
https://github.com/WaykiChain/wicc-wallet-utils-go
Android native wallet offline signature library download url:
https://github.com/WaykiChain/wicc-wallet-utils-go/releases/download/v1.0/and-wiccwallet.aar
Instructions
Import the signature library
Put and-wiccwallet.aar
in the libs
directory of the corresponding project.
Add api fileTree(dir: 'libs', include: ['*.jar','*.aar'])
to the corresponding file.
Instructions for use
* The Mainnet wallet address has a length of 34 characters starting with the letter W
and a network parameter 2
.
* The Testnet wallet address has a length of 34 characters starting with the letter w
and a network parameter 1
.
* The Mainnet wallet private key has a length of 34 characters starting with the letter P
and a network parameter 2
.
* The Testnet wallet private key has a length of 34 characters starting with the letter Y
and a network parameter 1
.
Generating mnemonic
By default, a mnemonic with 12 words is generated.
String mnemonics=Wiccwallet.generateMnemonics();
String[] words=mnemonics.split(" ");
Mnemonic To private key for Mainnet
String privateKey=Wiccwallet.getPrivateKeyFromMnemonic(mnemonics,2);
Generating address for Mainnet
String address=Wiccwallet.getAddressFromMnemonic(mnemonics,2);
Get registered address signature
If you want to use the created address, you need to spend 10000sawi
fees to register. Before you register, make sure you have a certain WICC balance.
//Get the wallet registration signature
RegisterAccountTxParam registerAccountTxParam=new RegisterAccountTxParam();
registerAccountTxParam.setFees(10000);//miners fee at least 0.0001wicc
registerAccountTxParam.setValidHeight(95762);/block height
Try {
String signTx=Wiccwallet.
signRegisterAccountTx(privateKey,registerAccountTxParam);
} catch (Exception e) {
e.printStackTrace();
}
Getting a transfer signature
CommonTxParam commonTxParam=new CommonTxParam();
commonTxParam.setDestAddr("");//payment address
commonTxParam.setFees(10000);//Mining fee is at least 0.0001wicc
commonTxParam.setSrcRegId("");//The id obtained by the wallet registration
commonTxParam.setValidHeight(95762);//block height
commonTxParam.setValues(100000000);//transfer 1 wicc
Try {
String commonTx=Wiccwallet.signCommonTx(privateKey,commonTxParam);
} catch (Exception e) {
e.printStackTrace();
}
Get the deployment contract signature
RegisterContractTxParam registerContractTxParam=new RegisterContractTxParam();
registerContractTxParam.setDescription("Contract description");
registerContractTxParam.setFees (110000000); / / deployment contract tip is best set a little bigger
registerContractTxParam.setScript("contract".getBytes());
registerContractTxParam.setSrcRegId("");//The registration id of the wallet of the deployment contract
registerContractTxParam.setValidHeight(95762);//block height
Try {
String signTx= Wiccwallet.signRegisterContractTx(privateKey,registerContractTxParam);
} catch (Exception e) {
e.printStackTrace();
}
Get the call contract signature
CallContractTxParam callContractTxParam=new CallContractTxParam();
callContractTxParam.setAppId("");//Registered id of smart contract
callContractTxParam.setContractHex("f20312312");//call contract assembly field
callContractTxParam.setFees(10000);
callContractTxParam.setSrcRegId("");//your wallet registration id
callContractTxParam.setValidHeight(95762);//block height, need to be available at any time
callContractTxParam.setValues(100000000);//The amount does not have to be filled, depending on whether the contract needs
Try {
Wiccwallet.signCallContractTx(privateKey, callContractTxParam);
} catch (Exception e) {
e.printStackTrace();
}
Getting a voting signature
DelegateTxParam delegateTxParam=new DelegateTxParam();
delegateTxParam.setValidHeight(95762);//block height, need to be available at any time
delegateTxParam.setSrcRegId("");//your wallet registration id
delegateTxParam.setFees(10000);
OperVoteFunds funds=new OperVoteFunds();
OperVoteFund fund=new OperVoteFund();
fund.setVoteValue(10000);//votes
fund.setPubKey(hexString2binaryString("03aaee970fec78b646a61b7c61b170ac7e0bfb47faef2b641074ad9f4ed75b31b8"));//The public key of the address at which the vote was obtained
Funds.add(fund);
Try {
String delegateTx= Wiccwallet.signDelegateTx(privateKey,delegateTxParam);
} catch (Exception e) {
e.printStackTrace();
}