Package org.ethereum.facade

Examples of org.ethereum.facade.Repository


    @Test  // get/set code
    public void test6() {

        String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
        Repository repository = worldManager.getRepository();

        byte[] code = repository.getCode(Hex.decode(addr));
        assertTrue(code == null);
    }
View Full Code Here


        byte[] contractB_addr_bytes = Hex.decode(contractB_addr);
        byte[] codeB = Hex.decode(code_b);

        ProgramInvokeMockImpl pi =  new ProgramInvokeMockImpl();
        pi.setOwnerAddress(contractB_addr_bytes);
        Repository repository = pi.getRepository();

        repository.createAccount(contractA_addr_bytes);
        repository.saveCode(contractA_addr_bytes, codeA);

        repository.createAccount(contractB_addr_bytes);
        repository.saveCode(contractB_addr_bytes, codeB);

        repository.createAccount(caller_addr_bytes);
        repository.addBalance(caller_addr_bytes, new BigInteger("100000000000000000000"));


        // ****************** //
        //  Play the program  //
        // ****************** //
        VM vm = new VM();
        Program program = new Program(codeB, pi);

        try {
            while(!program.isStopped())
                vm.step(program);
        } catch (RuntimeException e) {
            program.setRuntimeFailure(e);
        }


        System.out.println();
        System.out.println("============ Results ============");


        System.out.println("*** Used gas: " + program.getResult().getGasUsed());


        DataWord value_1 = repository.getStorageValue(contractA_addr_bytes, new DataWord(00));
        DataWord value_2 = repository.getStorageValue(contractA_addr_bytes, new DataWord(01));


        repository.close();
        assertEquals(expectedVal_1, value_1.longValue());
        assertEquals(expectedVal_2, value_2.longValue());

        // TODO: check that the value pushed after exec is 1
    }
View Full Code Here

        String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
        String codeString = "7f60c860005461012c602054000000000000000000000000000000000000000000600060206000f200";
        String codeHash = "8f0d7fc8cc6fdd688fa58ae9256310069f5659ed2a8a3af994d80350fbf1e798";

        Repository repository = worldManager.getRepository();

        byte[] code0 = repository.getCode(Hex.decode(addr));
        repository.createAccount(Hex.decode(addr));
        repository.saveCode(Hex.decode(addr), Hex.decode(codeString));
        byte[] code1 = repository.getCode(Hex.decode(addr));
        AccountState accountState = repository.getAccountState(Hex.decode(addr));

        assertTrue(code0 == null);
        assertEquals(codeString, Hex.toHexString(code1));
        assertEquals(codeHash, Hex.toHexString(accountState.getCodeHash()));
    }
View Full Code Here

    @Test  // get/set code
    public void test8() {

        byte[] addr = Hex.decode("cd2a3d9f938e13cd947ec05abc7fe734df8dd826");
        Repository repository = worldManager.getRepository();

        byte[] code0 = repository.getCode(addr);
        repository.createAccount(addr);
        byte[] code1 = repository.getCode(addr);
        AccountState accountState = repository.getAccountState(addr);
        assertTrue(code0 == null);
        assertNull(code1);
        assertArrayEquals(EMPTY_DATA_HASH, accountState.getCodeHash());
    }
View Full Code Here

        String addr = "cd2a3d9f938e13cd947ec05abc7fe734df8dd826";
        byte[] keyBytes = Hex.decode("c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470");
        DataWord key = new DataWord(keyBytes);

        Repository repository = worldManager.getRepository();

        DataWord value = repository.getStorageValue(Hex.decode(addr), key);
        assertNull(value);
    }
View Full Code Here

    @Test // storage set/get
    public void test10() {

        byte[] addr = Hex.decode("cd2a3d9f938e13cd947ec05abc7fe734df8dd826");
        byte[] code = Hex.decode("00");
        Repository repository = worldManager.getRepository();

        repository.createAccount(addr);
        repository.saveCode(addr, code);
        byte[] keyBytes = Hex.decode("cd2a3d9f938e13cd947ec05abc7fe734df8dd826");
        DataWord key = new DataWord(keyBytes);
        byte[] valueBytes = Hex.decode("0F4240");
        DataWord value = new DataWord(valueBytes);
        repository.addStorageRow(addr, key, value);
        DataWord fetchedValue = repository.getStorageValue(addr, key);
        assertEquals(value, fetchedValue);
    }
View Full Code Here

        byte[] codeA = Hex.decode("600b60005260166020526021604052602c6060526037608052604260a05260c06000f2");
        byte[] codeB = Hex.decode("6000601f5360e05960e05952600060c05901536060596020015980602001600b9052806040016016905280606001602190526080905260007377045e71a7a2c50903d88e564cd72fab11e820516103e8f1602060000260a00160200151600052");

        ProgramInvokeMockImpl pi =  new ProgramInvokeMockImpl();
        pi.setOwnerAddress(contractB_addr_bytes);
        Repository repository  = pi.getRepository();
        repository.createAccount(contractA_addr_bytes);
        repository.saveCode(contractA_addr_bytes, codeA);

        repository.createAccount(contractB_addr_bytes);
        repository.saveCode(contractB_addr_bytes, codeB);

        repository.createAccount(caller_addr_bytes);
        repository.addBalance(caller_addr_bytes, new BigInteger("100000000000000000000"));

        // ****************** //
        //  Play the program  //
        // ****************** //
        VM vm = new VM();
        Program program = new Program(codeB, pi);

        try {
            while(!program.isStopped())
                vm.step(program);
        } catch (RuntimeException e) {
            program.setRuntimeFailure(e);
        }

        System.out.println();
        System.out.println("============ Results ============");
        System.out.println("*** Used gas: " + program.getResult().getGasUsed());

        DataWord value1 = program.memoryLoad(new DataWord(32));
        DataWord value2 = program.memoryLoad(new DataWord(64));
        DataWord value3 = program.memoryLoad(new DataWord(96));
        DataWord value4 = program.memoryLoad(new DataWord(128));
        DataWord value5 = program.memoryLoad(new DataWord(160));
        DataWord value6 = program.memoryLoad(new DataWord(192));

        repository.close();

        assertEquals(expectedVal_1, value1.longValue());
        assertEquals(expectedVal_2, value2.longValue());
        assertEquals(expectedVal_3, value3.longValue());
        assertEquals(expectedVal_4, value4.longValue());
View Full Code Here

        byte[] addr = Hex.decode("cd2a3d9f938e13cd947ec05abc7fe734df8dd826");
        byte[] code = Hex.decode("00");
        String expectedStorageHash = "a737c40a4aa895fb9eb464536c376ee7c2c08eb733c8fd2353fcc62dc734f075";

        Repository repository = worldManager.getRepository();

        repository.createAccount(addr);
        repository.saveCode(addr, code);

        byte[] keyBytes = Hex.decode("03E8");
        DataWord key1 = new DataWord(keyBytes);

        keyBytes = Hex.decode("03E9");
        DataWord key2 = new DataWord(keyBytes);

        keyBytes = Hex.decode("03F0");
        DataWord key3 = new DataWord(keyBytes);

        byte[] valueBytes = Hex.decode("0F4240");
        DataWord value1 = new DataWord(valueBytes);

        valueBytes = Hex.decode("0F4241");
        DataWord value2 = new DataWord(valueBytes);

        valueBytes = Hex.decode("0F4242");
        DataWord value3 = new DataWord(valueBytes);

        repository.addStorageRow(addr, key1, value1);
        repository.addStorageRow(addr, key2, value2);
        repository.addStorageRow(addr, key3, value3);

        DataWord fetchedValue1 = repository.getStorageValue(addr, key1);
        DataWord fetchedValue2 = repository.getStorageValue(addr, key2);
        DataWord fetchedValue3 = repository.getStorageValue(addr, key3);

        AccountState accountState = repository.getAccountState(addr);
        String stateRoot = Hex.toHexString(accountState.getStateRoot());

        assertEquals(value1, fetchedValue1);
        assertEquals(value2, fetchedValue2);
        assertEquals(value3, fetchedValue3);
View Full Code Here

                        "0000000000000000000000602054602960006064f0");

        ProgramInvokeMockImpl pi =  new ProgramInvokeMockImpl();
        pi.setOwnerAddress(contractA_addr_bytes);

        Repository repository = pi.getRepository();

        repository.createAccount(contractA_addr_bytes);
        repository.saveCode(contractA_addr_bytes, codeA);

        repository.createAccount(caller_addr_bytes);

        // ****************** //
        //  Play the program  //
        // ****************** //
        VM vm = new VM();
        Program program = new Program(codeA, pi);

    try {
      while (!program.isStopped())
        vm.step(program);
    } catch (RuntimeException e) {
      program.setRuntimeFailure(e);
    }

        System.out.println();
        System.out.println("============ Results ============");

        System.out.println("*** Used gas: " + program.getResult().getGasUsed());
        // TODO: check that the value pushed after exec is the new address
        repository.close();
    }
View Full Code Here

        ProgramInvokeMockImpl pi =  new ProgramInvokeMockImpl();
        pi.setOwnerAddress(contractB_addr_bytes);
        pi.setGasLimit(10000000000000l);
       
        Repository repository  = pi.getRepository();
        repository.createAccount(contractA_addr_bytes);
        repository.saveCode(contractA_addr_bytes, codeA);
        repository.addBalance(contractA_addr_bytes, BigInteger.valueOf(23));

        repository.createAccount(contractB_addr_bytes);
        repository.saveCode(contractB_addr_bytes, codeB);
        repository.addBalance(contractB_addr_bytes, new BigInteger("1000000000000000000"));

        repository.createAccount(caller_addr_bytes);
        repository.addBalance(caller_addr_bytes, new BigInteger("100000000000000000000"));

        // ****************** //
        //  Play the program  //
        // ****************** //
        VM vm = new VM();
        Program program = new Program(codeB, pi);

        try {
            while(!program.isStopped())
                vm.step(program);
        } catch (RuntimeException e) {
            program.setRuntimeFailure(e);
        }

        System.out.println();
        System.out.println("============ Results ============");
        System.out.println("*** Used gas: " + program.getResult().getGasUsed());

        DataWord memValue1 = program.memoryLoad(new DataWord(0));
        DataWord memValue2 = program.memoryLoad(new DataWord(32));

        DataWord storeValue1 = repository.getStorageValue(contractB_addr_bytes, new DataWord(00));

        repository.close();

        assertEquals("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", memValue1.toString());
        assertEquals("aaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa", memValue2.toString());

        assertEquals("0x1", storeValue1.shortHex());
View Full Code Here

TOP

Related Classes of org.ethereum.facade.Repository

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.