dad-ts-sdk
Version:
Comprehensive TypeScript library for the Ontology blockchain.
87 lines (72 loc) • 17 kB
text/typescript
/*
* Copyright (C) 2018 The ontology Authors
* This file is part of The ontology library.
*
* The ontology is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The ontology is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with The ontology. If not, see <http://www.gnu.org/licenses/>.
*/
import DeployCode from '../src/transaction/payload/deployCode';
import { Transaction, TxType } from '../src/transaction/transaction';
import { buildRestfulParam, buildRpcParam, buildTxParam, Default_params, makeDeployCodeTransaction,
makeInvokeTransaction, sendRawTxRestfulUrl, signTransaction
} from '../src/transaction/transactionBuilder';
import { ab2hexstring, ab2str, num2hexstring , reverseHex, str2hexstr } from '../src/utils';
import axios from 'axios';
import { ONT_NETWORK, TEST_NODE, TEST_ONT_URL, MAIN_NODE, MAIN_ONT_URL } from '../src/consts';
import AbiFunction from '../src/smartcontract/abi/abiFunction';
import AbiInfo from '../src/smartcontract/abi/abiInfo';
import { Parameter } from '../src/smartcontract/abi/parameter';
import TxSender from '../src/transaction/txSender';
import { Address } from '../src/crypto';
import { RestClient } from '../src/index';
import json from '../src/smartcontract/data/idContract.abi';
import { VmCode, VmType } from '../src/transaction/vmcode';
import { Account } from './../src/account';
import { PrivateKey } from './../src/crypto/PrivateKey';
describe('test deploy contract', () => {
const privateKey = new PrivateKey('7c47df9664e7db85c1308c080f398400cb24283f5d922e76b478b5429e821b93');
const account = Account.create(privateKey, '123456', 'test');
console.log(account.address.toBase58());
const ontid = '6469643a6f6e743a5452616a31684377615135336264525450635a78596950415a364d61376a6351564b';
const abiInfo = AbiInfo.parseJson(JSON.stringify(json));
const txSender = new TxSender(TEST_ONT_URL.SOCKET_URL);
// tslint:disable-next-line:max-line-length
const attestClaimAvmCode = '015ac56b6a00527ac46a51527ac46a00c3046e616d659c6424006a51c3c0519e640700006c7566616a51c300c36a52527ac46a52c36581186c7566616a00c30673796d626f6c9c6424006a51c3c0519e640700006c7566616a51c300c36a52527ac46a52c365fe176c7566616a00c30b746f74616c537570706c799c6424006a51c3c0519e640700006c7566616a51c300c36a52527ac46a52c36571176c7566616a00c30962616c616e63654f669c6432006a51c3c0529e640700006c7566616a51c300c36a53527ac46a51c351c36a52527ac46a53c36a52c37c65d0166c7566616a00c3087472616e736665729c645f006a51c3c0549e640700006c7566616a51c300c36a54527ac46a51c351c36a55527ac46a51c352c36a52527ac46a51c353c36a56527ac46a54c36a55c36a52c36a56c353795179557275517275527952795472755272756568146c7566616a00c30d7472616e736665724d756c74699c640c006a51c36580136c7566616a00c307617070726f76659c645f006a51c3c0549e640700006c7566616a51c300c36a57527ac46a51c351c36a58527ac46a51c352c36a52527ac46a51c353c36a56527ac46a57c36a58c36a52c36a56c35379517955727551727552795279547275527275651a126c7566616a00c30c617070726f76654d756c74699c640c006a51c36536116c7566616a00c309616c6c6f77616e63659c6440006a51c3c0539e640700006c7566616a51c300c36a57527ac46a51c351c36a58527ac46a51c352c36a52527ac46a57c36a58c36a52c352726573106c7566616a00c30c7472616e7366657246726f6d9c646c006a51c3c0559e640700006c7566616a51c300c36a58527ac46a51c351c36a54527ac46a51c352c36a55527ac46a51c353c36a52527ac46a51c354c36a56527ac46a58c36a54c36a55c36a52c36a56c3547951795672755172755379527955727552727565d70c6c7566616a00c3117472616e7366657246726f6d4d756c74699c640c006a51c365de0b6c7566616a00c304696e69749c6417006a51c3c0009e640700006c75666165910a6c7566616a00c308636f6d706f756e649c6432006a51c3c0529e640700006c7566616a51c300c36a53527ac46a51c351c36a59527ac46a53c36a59c37c6511016c7566616a00c30a62616c616e6365734f669c6424006a51c3c0519e640700006c7566616a51c300c36a53527ac46a53c365f8036c7566616a00c30e746f74616c42616c616e63654f669c6424006a51c3c0519e640700006c7566616a51c300c36a53527ac46a53c365a3046c7566616a00c3046d696e749c6432006a51c3c0529e640700006c7566616a51c300c36a52527ac46a51c351c36a5a527ac46a52c36a5ac37c6519086c756661006c756657c56b6a00527ac4044e616d656a51527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a00c36a51c37c657b0a7c681253797374656d2e53746f726167652e47657461640700516c756661006c7566006c7566011fc56b6a00527ac46a51527ac40101010201030104010501060107010858c176c96a52527ac40742616c616e63656a53527ac40b546f74616c537570706c796a54527ac46a00c3656c14756a00c3659614750051525354555657c176c96a55527ac40000000000000057c176c96a56527ac4070080c6a47e8d036a57527ac4006a5d527ac46a55c3c06a5e527ac4616a5dc36a5ec39f644c006a55c36a5dc3c36a58527ac46a5dc351936a5d527ac46a00c36a52c36a58c3c37c659d126a59527ac46a59c36a56c36a58c37bc46a57c36a59c3a064baff6a59c36a57527ac462afff6161616a57c300a06a51c36a57c3a161650914756a51c3009e640b006a51c36a57527ac461006a5f527ac46a55c3c06a60527ac4616a5fc36a60c39f640a016a55c36a5fc3c36a58527ac46a5fc351936a5f527ac46a52c36a58c3c36a53c37c650f096a00c37c6508096a5a527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a5ac36a56c36a58c3c36a57c3945272681253797374656d2e53746f726167652e50757461681953797374656d2e53746f726167652e476574436f6e74657874616a52c36a58c3c36a54c37c6598086a52c36a58c3c365f4116a57c3945272681253797374656d2e53746f726167652e507574616a00c3006a52c36a58c3c36a57c35379517955727551727552795279547275527275087472616e7366657255c1681553797374656d2e52756e74696d652e4e6f7469667962f1fe6161616a52c357c36a5b527ac46a5bc3657f116a5c527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a5bc36a54c37c65ee076a5cc36a57c3935272681253797374656d2e53746f726167652e50757461681953797374656d2e53746f726167652e476574436f6e74657874616a5bc36a53c37c65aa076a00c37c65a3076a00c36a5bc37c659f106a57c3935272681253797374656d2e53746f726167652e50757461006a00c36a5bc36a57c35379517955727551727552795279547275527275087472616e7366657255c1681553797374656d2e52756e74696d652e4e6f74696679516c75665bc56b6a00527ac40101010201030104010501060107010858c176c96a51527ac40742616c616e63656a52527ac4005152535455565758c176c96a53527ac4000000000000000058c176c96a54527ac4006a57527ac46a53c3c06a58527ac4616a57c36a58c39f6473006a53c36a57c3c36a55527ac46a57c351936a57527ac46a51c36a55c3c36a56527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a56c36a52c37c6588066a00c37c6581067c681253797374656d2e53746f726167652e476574616a54c36a55c37bc46288ff6161616a54c36c75665bc56b6a00527ac40101010201030104010501060107010858c176c96a51527ac40742616c616e63656a52527ac4005152535455565758c176c96a53527ac4006a54527ac4006a57527ac46a53c3c06a58527ac4616a57c36a58c39f6474006a53c36a57c3c36a55527ac46a57c351936a57527ac46a51c36a55c3c36a56527ac46a54c3681953797374656d2e53746f726167652e476574436f6e74657874616a56c36a52c37c65ad056a00c37c65a6057c681253797374656d2e53746f726167652e47657461936a54527ac46287ff6161616a54c36c75660117c56b22415166344d7a7531594a72687a39663361526b6b77536d396e3371685847536834707514616f2a4a38396ff203ea01e6c070ae421bb8ce2d6a00527ac40101010201030104010501060107010858c176c96a51527ac4044e616d656a52527ac40653796d626f6c6a53527ac40742616c616e63656a54527ac40b546f74616c537570706c796a55527ac4005152535455565758c176c96a56527ac4056e616d6531056e616d6532056e616d6533056e616d6534056e616d6535056e616d6536056e616d6537056e616d653858c176c96a57527ac4035053310350533203505333035053340350533503505336035053370350533858c176c96a58527ac403400d0303400d0303400d0303400d0303400d0303400d030350c3000058c176c96a59527ac4006a5f527ac46a56c3c06a60527ac4616a5fc36a60c39f6493016a56c36a5fc3c36a5a527ac46a5fc351936a5f527ac46a57c36a5ac3c36a5b527ac46a58c36a5ac3c36a5c527ac46a59c36a5ac3c36a5d527ac46a51c36a5ac3c36a5e527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a5ec36a52c37c65d0036a5bc35272681253797374656d2e53746f726167652e50757461681953797374656d2e53746f726167652e476574436f6e74657874616a5ec36a53c37c6590036a5cc35272681253797374656d2e53746f726167652e50757461681953797374656d2e53746f726167652e476574436f6e74657874616a5ec36a55c37c6550036a5dc35272681253797374656d2e53746f726167652e50757461681953797374656d2e53746f726167652e476574436f6e74657874616a5ec36a54c37c6510036a00c37c6509036a5dc35272681253797374656d2e53746f726167652e50757461006a00c36a5ec36a5dc35379517955727551727552795279547275527275087472616e7366657255c1681553797374656d2e52756e74696d652e4e6f746966796268fe616161516c756660c56b6a00527ac46a51527ac422415166344d7a7531594a72687a39663361526b6b77536d396e3371685847536834707514616f2a4a38396ff203ea01e6c070ae421bb8ce2d6a52527ac40742616c616e63656a53527ac40b546f74616c537570706c796a54527ac46a52c3681b53797374656d2e52756e74696d652e436865636b5769746e6573736165c20c756a00c36561f765b80c756a00c3656d0b6a55527ac46a51c36a55c3936a56527ac46a56c36a55c3a065960c75681953797374656d2e53746f726167652e476574436f6e74657874616a00c36a54c37c65c5016a56c35272681253797374656d2e53746f726167652e50757461681953797374656d2e53746f726167652e476574436f6e74657874616a00c36a53c37c6585016a52c37c657e016a51c36a52c36a00c37c65770a935272681253797374656d2e53746f726167652e50757461006a52c36a00c36a51c35379517955727551727552795279547275527275087472616e7366657255c1681553797374656d2e52756e74696d652e4e6f74696679516c75665bc56b22415166344d7a7531594a72687a39663361526b6b77536d396e3371685847536834707514616f2a4a38396ff203ea01e6c070ae421bb8ce2d6a00527ac40b496e697469616c697a65646a51527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a51c37c681253797374656d2e53746f726167652e47657461916485006a00c3681b53797374656d2e52756e74696d652e436865636b5769746e65737361519c645f0065e6fa6a52527ac46a52c3519c644200681953797374656d2e53746f726167652e476574436f6e74657874616a51c304545255455272681253797374656d2e53746f726167652e50757461516c7566610a696e6974206572726f72f061006c756655c56b6a00527ac46a51527ac46a00c3015f7e6a51c37e6c756659c56b6a00527ac4006a52527ac46a00c3c06a53527ac4616a52c36a53c39f64b0006a00c36a52c3c36a51527ac46a52c351936a52527ac46a51c3c0559e642c00277472616e7366657246726f6d4d756c7469206661696c6564202d20696e707574206572726f7221f0616a51c300c36a51c351c36a51c352c36a51c353c36a51c354c35479517956727551727553795279557275527275653e00009c647aff2a7472616e7366657246726f6d4d756c7469206661696c6564202d207472616e73666572206572726f7221f0624bff616161516c7566011fc56b6a00527ac46a51527ac46a52527ac46a53527ac46a54527ac40742616c616e63656a55527ac407417070726f76656a56527ac46a00c3653809756a00c3656209756a51c3655b09756a52c3655409756a53c3650af4656109756a53c36a55c37c65acfe6a51c37c65a5fe6a57527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a57c37c681253797374656d2e53746f726167652e476574616a58527ac46a58c36a54c3a2650609756a53c36a55c37c6551fe6a52c37c654afe6a59527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a59c37c681253797374656d2e53746f726167652e476574616a5a527ac46a53c36a56c37c6501fe6a51c37c65fafd6a00c37c65f3fd6a5b527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a5bc37c681253797374656d2e53746f726167652e476574616a5c527ac46a54c36a5cc3a06437002f796f7520617265206e6f7420616c6c6f77656420746f20776974686472617720746f6f206d616e7920746f6b656e73f0620001616a54c36a5cc39c647a00681953797374656d2e53746f726167652e476574436f6e74657874616a5bc37c681553797374656d2e53746f726167652e44656c65746561681953797374656d2e53746f726167652e476574436f6e74657874616a58c36a54c3947c681553797374656d2e53746f726167652e44656c65746561627e0061681953797374656d2e53746f726167652e476574436f6e74657874616a5bc36a5cc36a54c3945272681253797374656d2e53746f726167652e50757461681953797374656d2e53746f726167652e476574436f6e74657874616a57c36a58c36a54c3945272681253797374656d2e53746f726167652e5075746161681953797374656d2e53746f726167652e476574436f6e74657874616a59c36a5ac36a54c3935272681253797374656d2e53746f726167652e507574616a51c36a52c36a53c36a54c35379517955727551727552795279547275527275087472616e7366657255c1681553797374656d2e52756e74696d652e4e6f74696679516c756658c56b6a00527ac46a51527ac46a52527ac407417070726f76656a53527ac46a52c36a53c37c65ccfb6a00c37c65c5fb6a51c37c65befb6a54527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a54c37c681253797374656d2e53746f726167652e476574616c756659c56b6a00527ac4006a52527ac46a00c3c06a53527ac4616a52c36a53c39f64a0006a00c36a52c3c36a51527ac46a52c351936a52527ac46a51c3c0549e64270022617070726f76654d756c7469206661696c6564202d20696e707574206572726f7221f0616a51c300c36a51c351c36a51c352c36a51c353c35379517955727551727552795279547275527275653800009c6484ff24617070726f76654d756c7469206661696c6564202d20617070726f7665206572726f7221f0625bff616161516c75660111c56b6a00527ac46a51527ac46a52527ac46a53527ac407417070726f76656a54527ac46a00c365f204756a00c3651c05756a51c3651505756a52c365cbef652205756a00c36a52c37c6573036a55527ac46a55c36a53c3a2650805756a52c36a54c37c6553fa6a00c37c654cfa6a51c37c6545fa6a56527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a56c36a53c35272681253797374656d2e53746f726167652e507574616a00c36a51c36a52c36a53c3537951795572755172755279527954727552727508617070726f76616c55c1681553797374656d2e52756e74696d652e4e6f74696679516c756659c56b6a00527ac4006a52527ac46a00c3c06a53527ac4616a52c36a53c39f64a3006a00c36a52c3c36a51527ac46a52c351936a52527ac46a51c3c0549e642800237472616e736665724d756c7469206661696c6564202d20696e707574206572726f7221f0616a51c300c36a51c351c36a51c352c36a51c353c35379517955727551727552795279547275527275653a00009c6483ff267472616e736665724d756c7469206661696c6564202d207472616e73666572206572726f7221f06258ff616161516c75660118c56b6a00527ac46a51527ac46a52527ac46a53527ac40742616c616e63656a54527ac46a00c3652f03756a52c36516ee656d03756a00c3654f03756a51c3654803756a52c36a54c37c65aaf86a55527ac46a55c36a00c37c659bf86a56527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a56c37c681253797374656d2e53746f726167652e476574616a57527ac46a53c36a57c3a0640700006c7566616a53c36a57c39c643e00681953797374656d2e53746f726167652e476574436f6e74657874616a56c37c681553797374656d2e53746f726167652e44656c6574656162410061681953797374656d2e53746f726167652e476574436f6e74657874616a56c36a57c36a53c3945272681253797374656d2e53746f726167652e50757461616a55c36a51c37c65bff76a58527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a58c37c681253797374656d2e53746f726167652e476574616a59527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a58c36a59c36a53c3935272681253797374656d2e53746f726167652e507574616a00c36a51c36a52c36a53c35379517955727551727552795279547275527275087472616e7366657255c1681553797374656d2e52756e74696d652e4e6f74696679516c756656c56b6a00527ac46a51527ac40742616c616e63656a52527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a51c36a52c37c65bdf66a00c37c65b6f67c681253797374656d2e53746f726167652e476574616c756655c56b6a00527ac40b546f74616c537570706c796a51527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a00c36a51c37c655ef67c681253797374656d2e53746f726167652e476574616c756655c56b6a00527ac40653796d626f6c6a51527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a00c36a51c37c650bf67c681253797374656d2e53746f726167652e476574616c756655c56b6a00527ac4044e616d656a51527ac4681953797374656d2e53746f726167652e476574436f6e74657874616a00c36a51c37c65baf57c681253797374656d2e53746f726167652e476574616c756655c56b6a00527ac46a00c3681b53797374656d2e52756e74696d652e436865636b5769746e65737361651f0075516c756655c56b6a00527ac46a00c3c001149c65080075516c756656c56b6a00527ac46a00c36307006509007561516c756653c56b09f4f4f3f3f2f2f1f100f0006c75665ec56b6a00527ac46a51527ac46a51c36a00c3946a52527ac46a52c3c56a53527ac4006a54527ac46a00c36a55527ac461616a00c36a51c39f6433006a54c36a55c3936a56527ac46a56c36a53c36a54c37bc46a54c351936a54527ac46a55c36a54c3936a00527ac462c8ff6161616a53c36c7566';
const url = 'http://polaris1.ont.io:20334';
const restClient = new RestClient(url);
test('test deploy with avm code', async () => {
const tx = makeDeployCodeTransaction(attestClaimAvmCode,
'name', '1.0', 'alice', 'testmail', 'desc', true, '500', '30000000');
tx.payer = account.address;
signTransaction(tx, privateKey);
const result = await restClient.sendRawTransaction(tx.serialize());
expect(result.Error).toEqual(0);
}, 10000 );
test('get_contract', async () => {
const contract = Address.fromVmCode(attestClaimAvmCode);
const codeHash = contract.toHexString();
// tslint:disable:no-console
console.log('contract address: ' + contract.serialize());
console.log('codeHash: ' + codeHash);
const result = await restClient.getContract(codeHash);
console.log(result);
expect(result.Result).toBeTruthy();
}, 10000);
test('getContract', async () => {
const restClient = new RestClient(MAIN_ONT_URL.REST_URL);
const hash = '36bb5c053b6b839c8f6b923fe852f91239b9fccc';
const contract = reverseHex(hash);
const res = await restClient.getContract(hash);
console.log(res);
});
});