dad-ts-sdk
Version:
Comprehensive TypeScript library for the Ontology blockchain.
241 lines (216 loc) • 11.5 kB
text/typescript
import { PrivateKey } from '../src/crypto/PrivateKey';
import { RestClient, Struct } from '../src/index';
import { WebsocketClient } from '../src/network/websocket/websocketClient';
import { createCodeParamsScript, deserializeItem } from '../src/transaction/scriptBuilder';
import { num2hexstring, reverseHex, str2hexstr, StringReader } from '../src/utils';
import { Account } from './../src/account';
import { Address } from './../src/crypto/address';
import { Parameter, ParameterType } from './../src/smartcontract/abi/parameter';
import { makeInvokeTransaction, signTransaction } from './../src/transaction/transactionBuilder';
describe('test smarct contract params', () => {
const socketClient = new WebsocketClient();
const restClient = new RestClient();
const privateKey = new PrivateKey('7c47df9664e7db85c1308c080f398400cb24283f5d922e76b478b5429e821b93');
const account = Account.create(privateKey, '123456', 'test');
console.log(account.address.serialize());
test('test params Array', async () => {
const contract = reverseHex('ab01641c418af066402075c78dc8cb8279a7c074');
const contractAddr = new Address(contract);
const method = 'testHello';
const params = [
new Parameter('op', ParameterType.String, 'test'),
new Parameter('args', ParameterType.Array,
[
new Parameter('arg1', ParameterType.Boolean, false),
new Parameter('arg2', ParameterType.Integer, 3),
new Parameter('arg3', ParameterType.ByteArray, account.address.serialize()),
new Parameter('arg4', ParameterType.String, 'arg4')
]
)
];
const tx = makeInvokeTransaction(method, params, contractAddr, '500', '20000', account.address);
signTransaction(tx, privateKey);
const res = await socketClient.sendRawTransaction(tx.serialize(), false, true);
console.log(JSON.stringify(res));
}, 10000);
test('test_list', async () => {
const contract = reverseHex('16edbe366d1337eb510c2ff61099424c94aeef02');
const contractAddr = new Address(contract);
const method = 'testHello';
const params = [
new Parameter('args', ParameterType.Array,
[
new Parameter('arg1', ParameterType.String, 'test')
]
)
];
console.log(JSON.stringify(params));
const tx = makeInvokeTransaction(method, params, contractAddr, '500', '20000', account.address);
signTransaction(tx, privateKey);
const res = await socketClient.sendRawTransaction(tx.serialize(), false, true);
console.log(JSON.stringify(res));
}, 10000);
test('test_map', async () => {
const contract = reverseHex('16edbe366d1337eb510c2ff61099424c94aeef02');
const contractAddr = new Address(contract);
const method = 'testMap';
const params = [
new Parameter('args', ParameterType.Map,
{ key : new Parameter('', ParameterType.String, 'test'),
key2: new Parameter('', ParameterType.String, 'test')
}
)
];
const tx = makeInvokeTransaction(method, params, contractAddr, '500', '20000', account.address);
signTransaction(tx, privateKey);
const res = await restClient.sendRawTransaction(tx.serialize(), true);
console.log(JSON.stringify(res));
}, 10000);
test('testGetmap', async () => {
const contract = reverseHex('16edbe366d1337eb510c2ff61099424c94aeef02');
const contractAddr = new Address(contract);
const method = 'testGetMap';
const params = [
new Parameter('args', ParameterType.Map,
{
key: new Parameter('', ParameterType.String, 'test')
}
)
];
const tx = makeInvokeTransaction(method, params, contractAddr, '500', '20000', account.address);
signTransaction(tx, privateKey);
const res = await restClient.sendRawTransaction(tx.serialize(), true);
console.log(JSON.stringify(res));
}, 10000);
test('test_mapInMap', async () => {
const contract = reverseHex('16edbe366d1337eb510c2ff61099424c94aeef02');
const contractAddr = new Address(contract);
const method = 'testMapInMap';
const params = [
new Parameter('args', ParameterType.Map,
{
key: new Parameter('', ParameterType.String, 'hello2'),
key2: new Parameter('', ParameterType.ByteArray, 'aabb'),
key3: new Parameter('', ParameterType.Integer, 100),
key4: new Parameter('', ParameterType.Boolean, true),
key5: new Parameter('', ParameterType.Array, [
new Parameter('', ParameterType.String, 'hello'),
new Parameter('', ParameterType.Integer, 100)
]),
key6: new Parameter('', ParameterType.Map, {
key: new Parameter('', ParameterType.String, 'hello2'),
key1: new Parameter('', ParameterType.Boolean, true),
key3: new Parameter('', ParameterType.Integer, 100)
})
}
)
];
const tx = makeInvokeTransaction(method, params, contractAddr, '500', '20000', account.address);
signTransaction(tx, privateKey);
const res = await restClient.sendRawTransaction(tx.serialize(), true);
console.log(JSON.stringify(res));
}, 10000);
test('test_mapInNestedMap', async () => {
const contract = reverseHex('16edbe366d1337eb510c2ff61099424c94aeef02');
const contractAddr = new Address(contract);
const method = 'testMapInMap';
const params = [
new Parameter('dataParam', ParameterType.Map, {
name: new Parameter('name', ParameterType.String, 'dataParamName'),
type: new Parameter('type', ParameterType.String, 'Array'),
value: new Parameter('value', ParameterType.Array, [
new Parameter('dataParam', ParameterType.Map, {
name: new Parameter('name', ParameterType.String, 'dataParamName'),
type: new Parameter('type', ParameterType.String, 'Integer'),
value: new Parameter('value', ParameterType.Integer, 100)
}),
new Parameter('dataParam', ParameterType.Map, {
name: new Parameter('name', ParameterType.String, 'dataParamName'),
type: new Parameter('type', ParameterType.String, 'Integer'),
value: new Parameter('value', ParameterType.Integer, 200)
}),
new Parameter('dataParam', ParameterType.Map, {
name: new Parameter('name', ParameterType.String, 'dataParamName'),
type: new Parameter('type', ParameterType.String, 'String'),
value: new Parameter('value', ParameterType.String, 'String51')
})
,
new Parameter('dataParam', ParameterType.Map, {
name: new Parameter('name', ParameterType.String, 'dataParamName'),
type: new Parameter('type', ParameterType.String, 'Boolean'),
value: new Parameter('value', ParameterType.Boolean, true)
})
])
})
];
const tx = makeInvokeTransaction(method, params, contractAddr, '500', '20000', account.address);
signTransaction(tx, privateKey);
const res = await restClient.sendRawTransaction(tx.serialize(), true);
console.log(JSON.stringify(res));
}, 10000);
test('deserialize_item', () => {
const hex = '820600036b6579000668656c6c6f3200046b6579320002aabb00046b65793302016400046b657934010100046b6579358002000568656c6c6f02016400046b657936820300036b6579000668656c6c6f3200046b657931010100046b657933020164';
const sr = new StringReader(hex);
const val = deserializeItem(sr);
expect(val.get('key5').length).toEqual;
console.log(val);
});
test('exchange', async () => {
const contract = '7dffd39e53be06f104f443857f9115ec55212b43';
const contractAddr = new Address(reverseHex(contract));
const method = 'Exchange';
const parameters = [
new Parameter('from', ParameterType.ByteArray, 'fb0948cc37048b785c2f1e5056632794ece84af4'),
new Parameter('to', ParameterType.ByteArray, 'a6bfa95fae5a7c50b6ae63ffed44eb94106393fe'),
new Parameter('fromSymbol', ParameterType.String, 'Token1'),
new Parameter('toSymbol', ParameterType.String, 'Token2'),
new Parameter('value', ParameterType.Integer, 10)
];
const tx = makeInvokeTransaction(method, parameters, contractAddr, '500', '20000');
const res = await socketClient.sendRawTransaction(tx.serialize(), true, false);
console.log(JSON.stringify(res));
});
test('fomo3dBuy', async () => {
console.log('hex: ' + str2hexstr(''));
const contract = '9361fc1e3a628e1aa46b3d58dde051530f0f5aa0';
const contractAddr = new Address(reverseHex(contract));
const method = 'Buy';
const parameters = [
new Parameter('playerAddr', ParameterType.ByteArray, account.address.toHexString()),
new Parameter('amountInCoin', ParameterType.Int, 150314570501736060),
new Parameter('team', ParameterType.Int, 1),
new Parameter('useVault', ParameterType.Boolean, false),
new Parameter('referrer', ParameterType.String, '')
];
const tx = makeInvokeTransaction(method, parameters, contractAddr, '500', '20000');
signTransaction(tx, privateKey);
const res = await socketClient.sendRawTransaction(tx.serialize(), false, true);
console.log(JSON.stringify(res));
});
test('getCurrentRound', async () => {
const contract = 'dedc8c61d03dcc3387737fbddbe8096300be84de';
const contractAddr = new Address(reverseHex(contract));
const method = 'getCurrentRound';
const tx = makeInvokeTransaction(method, [], contractAddr);
const res = await socketClient.sendRawTransaction(tx.serialize(), true);
console.log(res);
});
test('checkNumber', async () => {
const contract = reverseHex('9e092590a023a0a7519a56a37c0c2a8deea27e73');
const contractAddr = new Address(contract);
const params = [
new Parameter('args', ParameterType.Array,
[
18, 33, 5139, 12849, 2368291, 3551794, 353637396, 1178681665, 94842983701,
353551602001, 43044802274854, 114771766698594,
new Parameter('', ParameterType.Long, '14978884054759223'),
new Parameter('', ParameterType.Long, '32778036993815411')
]
)
];
const tx = makeInvokeTransaction('checkNumberList', params, contractAddr);
const rest = new RestClient();
const res = await rest.sendRawTransaction(tx.serialize(), true);
console.log(JSON.stringify(res));
}, 10000);
});