Search in sources :

Example 41 with World

use of co.rsk.test.World in project rskj by rsksmart.

the class Web3ImplTest method callFromAddressInWallet.

@Test
public void callFromAddressInWallet() throws Exception {
    World world = new World();
    Account acc1 = new AccountBuilder(world).name("notDefault").balance(Coin.valueOf(10000000)).build();
    Block genesis = world.getBlockByName("g00");
    /* contract compiled in data attribute of tx
        contract greeter {

            address owner;
            modifier onlyOwner { if (msg.sender != owner) throw; _ ; }

            function greeter() public {
                owner = msg.sender;
            }
            function greet(string param) onlyOwner constant returns (string) {
                return param;
            }
        } */
    Transaction tx = new TransactionBuilder().sender(acc1).gasLimit(BigInteger.valueOf(100000)).gasPrice(BigInteger.ONE).data("60606040525b33600060006101000a81548173ffffffffffffffffffffffffffffffffffffffff02191690836c010000000000000000000000009081020402179055505b610181806100516000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063ead710c41461003c57610037565b610002565b34610002576100956004808035906020019082018035906020019191908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050909091905050610103565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156100f55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6020604051908101604052806000815260200150600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561017357610002565b81905061017b565b5b91905056").build();
    List<Transaction> txs = new ArrayList<>();
    txs.add(tx);
    Block block1 = new BlockBuilder(world).parent(genesis).transactions(txs).build();
    world.getBlockChain().tryToConnect(block1);
    Web3Impl web3 = createWeb3Mocked(world);
    web3.personal_newAccountWithSeed("default");
    web3.personal_newAccountWithSeed("notDefault");
    Web3.CallArguments argsForCall = new Web3.CallArguments();
    argsForCall.from = TypeConverter.toJsonHex(acc1.getAddress().getBytes());
    argsForCall.to = TypeConverter.toJsonHex(tx.getContractAddress().getBytes());
    argsForCall.data = "0xead710c40000000000000000000000000000000000000000000000000000000064617665";
    String result = web3.eth_call(argsForCall, "latest");
    org.junit.Assert.assertEquals("0x0000000000000000000000000000000000000000000000000000000064617665", result);
}
Also used : TransactionBuilder(co.rsk.test.builders.TransactionBuilder) World(co.rsk.test.World) AccountBuilder(co.rsk.test.builders.AccountBuilder) BlockBuilder(co.rsk.test.builders.BlockBuilder) Test(org.junit.Test)

Example 42 with World

use of co.rsk.test.World in project rskj by rsksmart.

the class Web3ImplTest method getBlockByHash.

@Test
public void getBlockByHash() throws Exception {
    World world = new World();
    Web3Impl web3 = createWeb3(world);
    Block genesis = world.getBlockChain().getBestBlock();
    Block block1 = new BlockBuilder(world).difficulty(10).parent(genesis).build();
    block1.setBitcoinMergedMiningHeader(new byte[] { 0x01 });
    org.junit.Assert.assertEquals(ImportResult.IMPORTED_BEST, world.getBlockChain().tryToConnect(block1));
    Block block1b = new BlockBuilder(world).difficulty(block1.getDifficulty().asBigInteger().longValue() - 1).parent(genesis).build();
    block1b.setBitcoinMergedMiningHeader(new byte[] { 0x01 });
    Block block2b = new BlockBuilder(world).difficulty(2).parent(block1b).build();
    block2b.setBitcoinMergedMiningHeader(new byte[] { 0x02 });
    org.junit.Assert.assertEquals(ImportResult.IMPORTED_NOT_BEST, world.getBlockChain().tryToConnect(block1b));
    org.junit.Assert.assertEquals(ImportResult.IMPORTED_BEST, world.getBlockChain().tryToConnect(block2b));
    String block1HashString = "0x" + block1.getHash();
    String block1bHashString = "0x" + block1b.getHash();
    String block2bHashString = "0x" + block2b.getHash();
    Web3.BlockResult bresult = web3.eth_getBlockByHash(block1HashString, false);
    Assert.assertNotNull(bresult);
    org.junit.Assert.assertEquals(block1HashString, bresult.hash);
    org.junit.Assert.assertEquals("0x00", bresult.extraData);
    org.junit.Assert.assertEquals(0, bresult.transactions.length);
    org.junit.Assert.assertEquals(0, bresult.uncles.length);
    bresult = web3.eth_getBlockByHash(block1bHashString, true);
    Assert.assertNotNull(bresult);
    org.junit.Assert.assertEquals(block1bHashString, bresult.hash);
    bresult = web3.eth_getBlockByHash(block2bHashString, true);
    Assert.assertNotNull(bresult);
    org.junit.Assert.assertEquals(block2bHashString, bresult.hash);
}
Also used : World(co.rsk.test.World) BlockBuilder(co.rsk.test.builders.BlockBuilder) Test(org.junit.Test)

Example 43 with World

use of co.rsk.test.World in project rskj by rsksmart.

the class Web3ImplTest method getCode.

@Test
public void getCode() throws Exception {
    World world = new World();
    Web3Impl web3 = createWeb3(world);
    web3.repository = world.getRepository();
    Account acc1 = new AccountBuilder(world).name("acc1").balance(Coin.valueOf(100000000)).build();
    byte[] code = new byte[] { 0x01, 0x02, 0x03 };
    world.getRepository().saveCode(acc1.getAddress(), code);
    Block genesis = world.getBlockChain().getBestBlock();
    genesis.setStateRoot(world.getRepository().getRoot());
    genesis.flushRLP();
    world.getBlockChain().getBlockStore().saveBlock(genesis, genesis.getCumulativeDifficulty(), true);
    Block block1 = new BlockBuilder(world).parent(genesis).build();
    org.junit.Assert.assertEquals(ImportResult.IMPORTED_BEST, world.getBlockChain().tryToConnect(block1));
    String accountAddress = Hex.toHexString(acc1.getAddress().getBytes());
    String scode = web3.eth_getCode(accountAddress, "0x1");
    Assert.assertNotNull(scode);
    org.junit.Assert.assertEquals("0x" + Hex.toHexString(code), scode);
}
Also used : AccountBuilder(co.rsk.test.builders.AccountBuilder) World(co.rsk.test.World) BlockBuilder(co.rsk.test.builders.BlockBuilder) Test(org.junit.Test)

Example 44 with World

use of co.rsk.test.World in project rskj by rsksmart.

the class Web3ImplTest method getUnknownTransactionReceipt.

@Test
public void getUnknownTransactionReceipt() throws Exception {
    ReceiptStore receiptStore = new ReceiptStoreImpl(new HashMapDB());
    World world = new World(receiptStore);
    Web3Impl web3 = createWeb3(world, receiptStore);
    Account acc1 = new AccountBuilder().name("acc1").build();
    Account acc2 = new AccountBuilder().name("acc2").build();
    Transaction tx = new TransactionBuilder().sender(acc1).receiver(acc2).value(BigInteger.valueOf(1000000)).build();
    String hashString = tx.getHash().toHexString();
    Assert.assertNull(web3.eth_getTransactionReceipt(hashString));
}
Also used : ReceiptStoreImpl(org.ethereum.db.ReceiptStoreImpl) TransactionBuilder(co.rsk.test.builders.TransactionBuilder) AccountBuilder(co.rsk.test.builders.AccountBuilder) HashMapDB(org.ethereum.datasource.HashMapDB) World(co.rsk.test.World) ReceiptStore(org.ethereum.db.ReceiptStore) Test(org.junit.Test)

Example 45 with World

use of co.rsk.test.World in project rskj by rsksmart.

the class AccountBuilderTest method createAccountWithBalanceAndCode.

@Test
public void createAccountWithBalanceAndCode() {
    World world = new World();
    byte[] code = new byte[] { 0x01, 0x02, 0x03 };
    Coin balance = Coin.valueOf(10);
    Account account = new AccountBuilder(world).name("acc1").balance(balance).code(code).build();
    Assert.assertNotNull(account);
    Assert.assertTrue(account.getEcKey().hasPrivKey());
    Assert.assertEquals(balance, world.getRepository().getBalance(account.getAddress()));
    Assert.assertArrayEquals(code, world.getRepository().getCode(account.getAddress()));
}
Also used : Coin(co.rsk.core.Coin) Account(org.ethereum.core.Account) AccountBuilder(co.rsk.test.builders.AccountBuilder) World(co.rsk.test.World) Test(org.junit.Test)

Aggregations

World (co.rsk.test.World)134 Test (org.junit.Test)114 BlockBuilder (co.rsk.test.builders.BlockBuilder)36 AccountBuilder (co.rsk.test.builders.AccountBuilder)33 WorldDslProcessor (co.rsk.test.dsl.WorldDslProcessor)24 DslParser (co.rsk.test.dsl.DslParser)23 Block (org.ethereum.core.Block)20 Blockchain (org.ethereum.core.Blockchain)19 SyncConfiguration (co.rsk.net.sync.SyncConfiguration)15 TransactionBuilder (co.rsk.test.builders.TransactionBuilder)15 BlockGenerator (co.rsk.blockchain.utils.BlockGenerator)14 TransactionPoolImpl (co.rsk.core.bc.TransactionPoolImpl)14 ArrayList (java.util.ArrayList)13 SimpleEthereum (org.ethereum.rpc.Simples.SimpleEthereum)13 BlockChainImpl (co.rsk.core.bc.BlockChainImpl)11 SimpleMessageChannel (co.rsk.net.simples.SimpleMessageChannel)11 ProofOfWorkRule (co.rsk.validators.ProofOfWorkRule)11 BigInteger (java.math.BigInteger)10 DummyBlockValidationRule (co.rsk.validators.DummyBlockValidationRule)9 Account (org.ethereum.core.Account)8