Search in sources :

Example 1 with ProgramCreate

use of io.nuls.contract.vm.program.ProgramCreate in project nuls by nuls-io.

the class VoteTest method testBatch.

public byte[] testBatch(byte[] prevStateRoot, List transactions) throws IOException {
    long start = System.currentTimeMillis();
    ProgramExecutor track = programExecutor.begin(prevStateRoot);
    for (int i = 0; i < transactions.size(); i++) {
        long transactionStart = System.currentTimeMillis();
        Object transaction = transactions.get(i);
        if (transaction instanceof ProgramCreate) {
            ProgramCreate create = (ProgramCreate) transaction;
            ProgramExecutor txTrack = track.startTracking();
            ProgramResult programResult = txTrack.create(create);
            txTrack.commit();
            System.out.println(programResult);
        } else if (transaction instanceof ProgramCall) {
            ProgramCall call = (ProgramCall) transaction;
            ProgramExecutor txTrack = track.startTracking();
            ProgramResult programResult = txTrack.call(call);
            txTrack.commit();
            System.out.println(programResult);
        }
        System.out.println("交易" + i + ", 耗时:" + (System.currentTimeMillis() - transactionStart) + "ms");
    }
    long time = System.currentTimeMillis() - start;
    System.out.println("完成" + transactions.size() + "笔交易, 耗时:" + time + "ms,平均:" + (time / transactions.size()) + "ms");
    System.out.println("提交");
    long commitStart = System.currentTimeMillis();
    track.commit();
    System.out.println("提交耗时:" + (System.currentTimeMillis() - commitStart) + "ms");
    byte[] root = track.getRoot();
    System.out.println("stateRoot: " + Hex.toHexString(root));
    System.out.println("总耗时:" + (System.currentTimeMillis() - start) + "ms");
    return root;
}
Also used : ProgramCreate(io.nuls.contract.vm.program.ProgramCreate) ProgramResult(io.nuls.contract.vm.program.ProgramResult) ProgramExecutor(io.nuls.contract.vm.program.ProgramExecutor) ProgramCall(io.nuls.contract.vm.program.ProgramCall)

Example 2 with ProgramCreate

use of io.nuls.contract.vm.program.ProgramCreate in project nuls by nuls-io.

the class VoteTest method createTransactions.

public List createTransactions() throws IOException {
    List transactions = new ArrayList();
    ProgramCreate programCreate = new ProgramCreate();
    programCreate.setContractAddress(NativeAddress.toBytes(ADDRESS));
    programCreate.setSender(NativeAddress.toBytes(SENDER));
    programCreate.setPrice(1);
    programCreate.setGasLimit(1000000);
    programCreate.setNumber(1);
    InputStream in = new FileInputStream(ContractTest.class.getResource("/vote_contract").getFile());
    // InputStream in = new FileInputStream("C:\\workspace\\nuls-vote\\out\\artifacts\\contract\\contract.jar");
    byte[] contractCode = IOUtils.toByteArray(in);
    programCreate.setContractCode(contractCode);
    programCreate.args("10000");
    transactions.add(programCreate);
    return transactions;
}
Also used : ProgramCreate(io.nuls.contract.vm.program.ProgramCreate) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) FileInputStream(java.io.FileInputStream)

Example 3 with ProgramCreate

use of io.nuls.contract.vm.program.ProgramCreate in project nuls by nuls-io.

the class VoteTest method testOne.

public byte[] testOne(byte[] prevStateRoot, List transactions) throws IOException {
    long start = System.currentTimeMillis();
    for (int i = 0; i < transactions.size(); i++) {
        long transactionStart = System.currentTimeMillis();
        Object transaction = transactions.get(i);
        if (transaction instanceof ProgramCreate) {
            ProgramCreate create = (ProgramCreate) transaction;
            // ProgramExecutor txTrack = track.startTracking();
            ProgramExecutor track = programExecutor.begin(prevStateRoot);
            ProgramResult programResult = track.create(create);
            track.commit();
            System.out.println(programResult);
            prevStateRoot = track.getRoot();
            System.out.println("stateRoot: " + Hex.toHexString(prevStateRoot));
        } else if (transaction instanceof ProgramCall) {
            ProgramCall call = (ProgramCall) transaction;
            // ProgramExecutor txTrack = track.startTracking();
            ProgramExecutor track = programExecutor.begin(prevStateRoot);
            ProgramResult programResult = track.call(call);
            track.commit();
            System.out.println(programResult);
            prevStateRoot = track.getRoot();
            System.out.println("stateRoot: " + Hex.toHexString(prevStateRoot));
        }
        System.out.println("交易" + i + ", 耗时:" + (System.currentTimeMillis() - transactionStart) + "ms");
    }
    long time = System.currentTimeMillis() - start;
    System.out.println("完成" + transactions.size() + "笔交易, 耗时:" + time + "ms,平均:" + (time / transactions.size()) + "ms");
    // System.out.println("总耗时:" + (System.currentTimeMillis() - start) + "ms");
    return prevStateRoot;
}
Also used : ProgramCreate(io.nuls.contract.vm.program.ProgramCreate) ProgramResult(io.nuls.contract.vm.program.ProgramResult) ProgramExecutor(io.nuls.contract.vm.program.ProgramExecutor) ProgramCall(io.nuls.contract.vm.program.ProgramCall)

Example 4 with ProgramCreate

use of io.nuls.contract.vm.program.ProgramCreate in project nuls by nuls-io.

the class CrowdsaleTest method testCreate.

@Test
public void testCreate() throws IOException {
    InputStream in = new FileInputStream(ContractTest.class.getResource("/crowdsale_contract").getFile());
    byte[] contractCode = IOUtils.toByteArray(in);
    ProgramCreate programCreate = new ProgramCreate();
    programCreate.setContractAddress(NativeAddress.toBytes(CROWDSALE_ADDRESS));
    programCreate.setSender(NativeAddress.toBytes(SENDER));
    programCreate.setPrice(1);
    programCreate.setGasLimit(1000000);
    programCreate.setNumber(1);
    programCreate.setContractCode(contractCode);
    programCreate.args("1535012808001", "1635012808001", "10", WALLET_ADDRESS, "20000000", TOKEN_ADDRESS, "10000000");
    System.out.println(programCreate);
    byte[] prevStateRoot = Hex.decode("68def44ff5e8cfaede55b572b78064f549a07683fa2a09e44ae252aa50b10ec0");
    ProgramExecutor track = programExecutor.begin(prevStateRoot);
    ProgramResult programResult = track.create(programCreate);
    track.commit();
    System.out.println(programResult);
    System.out.println("stateRoot: " + Hex.toHexString(track.getRoot()));
    System.out.println();
    sleep();
}
Also used : ProgramCreate(io.nuls.contract.vm.program.ProgramCreate) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) ProgramResult(io.nuls.contract.vm.program.ProgramResult) ProgramExecutor(io.nuls.contract.vm.program.ProgramExecutor) FileInputStream(java.io.FileInputStream) Test(org.junit.Test)

Aggregations

ProgramCreate (io.nuls.contract.vm.program.ProgramCreate)4 ProgramExecutor (io.nuls.contract.vm.program.ProgramExecutor)3 ProgramResult (io.nuls.contract.vm.program.ProgramResult)3 ProgramCall (io.nuls.contract.vm.program.ProgramCall)2 FileInputStream (java.io.FileInputStream)2 InputStream (java.io.InputStream)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Test (org.junit.Test)1