Search in sources :

Example 1 with ProgramExecutor

use of io.nuls.contract.vm.program.ProgramExecutor 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 ProgramExecutor

use of io.nuls.contract.vm.program.ProgramExecutor 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 3 with ProgramExecutor

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

the class CrowdsaleTest method balanceOf.

public void balanceOf(byte[] prevStateRoot) throws IOException {
    ProgramCall programCall = new ProgramCall();
    programCall.setContractAddress(NativeAddress.toBytes(TOKEN_ADDRESS));
    programCall.setSender(NativeAddress.toBytes(SENDER));
    programCall.setPrice(1);
    programCall.setGasLimit(1000000);
    programCall.setNumber(1);
    programCall.setMethodName("balanceOf");
    programCall.setMethodDesc("");
    programCall.args(BUYER);
    ProgramExecutor track = programExecutor.begin(prevStateRoot);
    ProgramResult programResult = track.call(programCall);
    track.commit();
    System.out.println(programResult);
    System.out.println("stateRoot: " + Hex.toHexString(track.getRoot()));
    System.out.println();
    sleep();
}
Also used : ProgramResult(io.nuls.contract.vm.program.ProgramResult) ProgramExecutor(io.nuls.contract.vm.program.ProgramExecutor) ProgramCall(io.nuls.contract.vm.program.ProgramCall)

Example 4 with ProgramExecutor

use of io.nuls.contract.vm.program.ProgramExecutor 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)

Example 5 with ProgramExecutor

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

the class CrowdsaleTest method testBuyTokens.

@Test
public void testBuyTokens() throws IOException {
    byte[] prevStateRoot = Hex.decode("5d62069546b3da54d9ae5ba3bdddcbe38a1a99b63c41846667b94288cec455ab");
    balanceOf(prevStateRoot);
    ProgramCall programCall = new ProgramCall();
    programCall.setContractAddress(NativeAddress.toBytes(CROWDSALE_ADDRESS));
    programCall.setSender(NativeAddress.toBytes(SENDER));
    programCall.setValue(new BigInteger("1000"));
    programCall.setPrice(1);
    programCall.setGasLimit(1000000);
    programCall.setNumber(1);
    programCall.setMethodName("buyTokens");
    programCall.setMethodDesc("");
    programCall.args(BUYER);
    System.out.println(programCall);
    ProgramExecutor track = programExecutor.begin(prevStateRoot);
    ProgramResult programResult = track.call(programCall);
    track.commit();
    System.out.println(programResult);
    System.out.println("stateRoot: " + Hex.toHexString(track.getRoot()));
    System.out.println();
    balanceOf(track.getRoot());
    sleep();
}
Also used : ProgramResult(io.nuls.contract.vm.program.ProgramResult) BigInteger(java.math.BigInteger) ProgramExecutor(io.nuls.contract.vm.program.ProgramExecutor) ProgramCall(io.nuls.contract.vm.program.ProgramCall) Test(org.junit.Test)

Aggregations

ProgramExecutor (io.nuls.contract.vm.program.ProgramExecutor)5 ProgramResult (io.nuls.contract.vm.program.ProgramResult)5 ProgramCall (io.nuls.contract.vm.program.ProgramCall)4 ProgramCreate (io.nuls.contract.vm.program.ProgramCreate)3 Test (org.junit.Test)2 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 BigInteger (java.math.BigInteger)1