import 'package:bip39/bip39.dart' as bip39;
import 'package:shared_preferences/shared_preferences.dart';
import 'package:sacco/sacco.dart';
1.調用bip39庫生成助記詞,先暫時用shared_preferences存儲著
List mnemonic;
連接節點
final networkInfo = NetworkInfo(name: "", bech32Hrp: "cosmos", lcdUrl: "http://172.168.0.78:1317");
void getMnemonic() async{
String randomMnemonic = await bip39.generateMnemonic();
mnemonic = randomMnemonic.split(" ");//將助記詞轉換成List類型
prefs.setStringList("mnemonic", mnemonic);
}
2.調用sacco庫用之前存儲的助記詞創建錢包對象
wallet() async{
SharedPreferences prefs = await SharedPreferences.getInstance();
var mnemonicString = prefs.getStringList("mnemonic");
Wallet wallet = Wallet.derive(mnemonicString, networkInfo);
return wallet;
? }
獲取錢包地址:
Wallet wa = await wallet();
print("地址"+wa.bech32Address);
3.發送一個交易
final message = StdMsg(
? type: "cosmos-sdk/MsgSend",
value: {
? ? "from_address": "cosmos1huydeevpz37sd9snkgul6070mstupukw00xkw9",
? ? "to_address": "cosmos18rwfv9yj7u4zmahv4y299ft086j704cxal9mtf",
? ? "amount": [
? ? ? {"denom": "zcoin", "amount": "1"}
? ? ]
? },
);
//簽名交易
final stdTx = TxBuilder.buildStdTx(stdMsgs: [message]);
//發送交易
final signedStdTx = await TxSigner.signStdTx(
? ? ? ? ? ? ? ? ? ? ? ? ? ? wallet: wa, stdTx: stdTx);
? ? ? ? ? ? ? ? ? ? ? ? final result = await TxSender.broadcastStdTx(
? ? ? ? ? ? ? ? ? ? ? ? ? wallet: wallet,
? ? ? ? ? ? ? ? ? ? ? ? ? stdTx: signedStdTx,
? ? ? ? ? ? ? ? ? ? ? );
? ? ? ? ? ? ? ? ? ? ? ? if (result.success) {
? ? ? ? ? ? ? ? ? ? ? ? ? print("Tx send successfully. Hash: ${result.hash}");
? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? print("Tx send error: ${result.error.errorMessage}");? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? }