dart_chainsql_api 1.0.8 dart_chainsql_api: ^1.0.8 copied to clipboard
A Dart library implementing chainsql wallet_propose and tx-sign api.
import 'package:dart_chainsql_api/dart_chainsql_api.dart';
import 'package:dart_chainsql_api/src/utils/Util.dart';
import 'dart:convert' as convert;
void signTrustSet() {
String userSec = "xnoPBzXtMeMyMHUVTgbuqAfg1SUTb";
String userAddress = "zHb9CJAWyB4zj91VRWn96DkukG4bwdtyTh";
// String issuerAddress = "zpMZ2H58HFPB5QTycMGWSXUeF47eA8jyd4";
Map signMap = new Map();
signMap['TransactionType'] = "TrustSet";
signMap["Account"] = userAddress;
signMap["Sequence"] = 29;
signMap["Fee"] = "500";
Map limitAmount = new Map();
limitAmount['currency'] = "AAA";
limitAmount['issuer'] = "zKQwdkkzpUQC9haHFEe2EwUsKHvvwwPHsv";
limitAmount['value'] = "20000";
signMap['LimitAmount'] = limitAmount;
Map txMap = new Map();
txMap['tx_json'] = signMap;
var signTxInfo = Chainsql.signTx(txMap, userSec);
String jsonStr = convert.json.encode(signTxInfo);
print(jsonStr);
var signTxInfoMap = signTxInfo.toJson();
assert(signTxInfoMap.containsKey("tx_blob"));
assert(signTxInfoMap.containsKey("hash"));
assert(signTxInfoMap["tx_blob"]==
"1200142280000000240000001D63D5871AFD498D00000000000000000000000000004141410000000000C9D3DF7EEF4EB20D2C4F23DB7736182F42FEF2086840000000000001F473210330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD02074473045022100CE13BA8F3E0C76558E4750463151AE73B8758CCD4B0ECCA6481B6580A0FBD82E022062A711B14D357B8CB9045F0EAB29E5A687E4BBDAE7D156FB84E1AF045BC9BB608114B5F762798A53D543A014CAF8B297CFF8F2F937E8");
assert(signTxInfoMap["hash"]==
"7FD7A05AAA8A32C23D9DF7793692E9E239FF21461D230CB4D2D6EDCB63498A0F");
}
void signPayment() {
String srcSec = "xnoPBzXtMeMyMHUVTgbuqAfg1SUTb";
String srcAddress = "zHb9CJAWyB4zj91VRWn96DkukG4bwdtyTh";
String desAddress = "zpMZ2H58HFPB5QTycMGWSXUeF47eA8jyd4";
Map signMap = new Map();
signMap['TransactionType'] = "Payment";
signMap['Amount'] = "1000";
signMap["Account"] = srcAddress;
signMap["Sequence"] = 1;
signMap["Fee"] = "500";
signMap["Destination"] = desAddress;
Map txMap = new Map();
txMap['tx_json'] = signMap;
var signTxInfo = Chainsql.signTx(txMap, srcSec);
String jsonStr = convert.json.encode(signTxInfo);
print(jsonStr);
var signTxInfoMap = signTxInfo.toJson();
assert(signTxInfoMap.containsKey("tx_blob"));
assert(signTxInfoMap.containsKey("hash"));
assert(signTxInfoMap["tx_blob"]==
"120000228000000024000000016140000000000003E86840000000000001F473210330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD0207446304402203874C6642DFE53D6108964BE162E36D9809E198213221645DD282BADEBCF0AB40220133F403782CCE1DAB460A48C32F69352580F9058340A31ADE7EE94F4B80C4A988114B5F762798A53D543A014CAF8B297CFF8F2F937E883140EDBA2E944E1751BDA1FC4ACC7116C9B19394996");
assert(signTxInfoMap["hash"]==
"a24d1328315be59b70301ffaeb1f46c2b758f1c211e5f29c393114df4c1e30fb");
}
void generateWallet(){
var walletInfo = Chainsql.generateAddress();
String jsonStr = convert.json.encode(walletInfo);
print(jsonStr);
var walletMap = walletInfo.toJson();
assert(walletMap.containsKey("address"));
assert(walletMap.containsKey("secret"));
assert(walletMap.containsKey("publicKey"));
var walletFromSeed =
Chainsql.generateAddressFromStr("xpkpdVP3LKhtdSfQX3uHNs1f7jN42");
var walletFromSeedMap = walletFromSeed.toJson();
assert(walletFromSeedMap.containsKey("address"));
assert(walletFromSeedMap.containsKey("secret"));
assert(walletFromSeedMap.containsKey("publicKey"));
assert(walletFromSeedMap["address"] == "zKa9fxNT4KJwya73M4TYiCKxCQv97511Ve");
assert(walletFromSeedMap["secret"] == "xpkpdVP3LKhtdSfQX3uHNs1f7jN42");
assert(walletFromSeedMap["publicKey"] ==
"cB4e4YpAbPTLyYHmHmEBpLHCNU9TQc8jBUgERoAoQJBkhxT5fRfw");
}
void eciesTest(){
String userSecret = "xnnUqirFepEKzVdsoBKkMf577upwT";
Wallet wallet = Chainsql.generateAddressFromStr(userSecret);
String plainText = "hello,you";
var res = Chainsql.eciesEncrypt(convert.utf8.encode(plainText), wallet.publicKey);
print("encrypted:" + Util.formatBytesAsHexString(res));
var dec = Chainsql.eciesDecrypt(res, userSecret);
var strDec = convert.utf8.decode(dec);
print("decrypted:" + strDec);
assert(plainText == strDec);
}
void main() {
generateWallet();
// signPayment();
signTrustSet();
eciesTest();
}