Search in sources :

Example 1 with ProgramCall

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

the class VoteTest method transactions.

public List transactions() throws IOException {
    List transactions = new ArrayList();
    for (int i = 0; i < 10; i++) {
        ProgramCall programCall = new ProgramCall();
        programCall.setContractAddress(NativeAddress.toBytes(ADDRESS));
        programCall.setSender(NativeAddress.toBytes(SENDER));
        programCall.setPrice(1);
        programCall.setGasLimit(200000);
        programCall.setNumber(1);
        programCall.setMethodName("create");
        programCall.setMethodDesc("");
        programCall.setValue(new BigInteger("10000"));
        String[][] args = new String[][] { { "投票" }, { "这是一个投票" }, { "选项1", "选项2", "选项3" }, { "1535012808000" }, { "1545197500000" }, { "true" }, { "3" }, { "true" } };
        programCall.setArgs(args);
        transactions.add(programCall);
    }
    ProgramCall programCall = new ProgramCall();
    programCall.setContractAddress(NativeAddress.toBytes(ADDRESS));
    programCall.setSender(NativeAddress.toBytes(SENDER));
    programCall.setPrice(1);
    programCall.setGasLimit(200000);
    programCall.setNumber(1);
    programCall.setMethodName("redemption");
    programCall.setMethodDesc("");
    programCall.setValue(new BigInteger("0"));
    String[][] args = new String[][] { { "1" } };
    programCall.setArgs(args);
    transactions.add(programCall);
    return transactions;
}
Also used : ArrayList(java.util.ArrayList) BigInteger(java.math.BigInteger) ArrayList(java.util.ArrayList) List(java.util.List) ProgramCall(io.nuls.contract.vm.program.ProgramCall)

Example 2 with ProgramCall

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

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

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

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

ProgramCall (io.nuls.contract.vm.program.ProgramCall)6 ProgramResult (io.nuls.contract.vm.program.ProgramResult)5 ProgramExecutor (io.nuls.contract.vm.program.ProgramExecutor)4 ProgramCreate (io.nuls.contract.vm.program.ProgramCreate)2 BigInteger (java.math.BigInteger)2 ErrorException (io.nuls.contract.vm.exception.ErrorException)1 ProgramTransfer (io.nuls.contract.vm.program.ProgramTransfer)1 ProgramInvoke (io.nuls.contract.vm.program.impl.ProgramInvoke)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Test (org.junit.Test)1