Search in sources :

Example 1 with SolidityType

use of org.aion.solidity.SolidityType in project aion by aionnetwork.

the class SolidityTypeTest method testStaticArray2.

@Test
public void testStaticArray2() throws Exception {
    List<byte[]> x = new ArrayList<>();
    x.add(Hex.decode("1122334455667788112233445566778811223344"));
    x.add(Hex.decode("2122334455667788112233445566778811223344"));
    x.add(Hex.decode("3122334455667788112233445566778811223344"));
    SolidityType type = new StaticArrayType("bytes20[3]");
    byte[] params = type.encode(x);
    System.out.println(Hex.toHexString(params));
    AionTransaction tx = createTransaction(ByteUtil.merge(Hex.decode("e4bef5c9"), params));
    MiningBlock block = createDummyBlock();
    RepositoryCache repo = createRepository(tx);
    AionTxReceipt receipt = executeTransaction(tx, block, repo).getReceipt();
    System.out.println(receipt);
    assertArrayEquals(params, receipt.getTransactionOutput());
    Object[] decoded = (Object[]) type.decode(receipt.getTransactionOutput());
    for (Object d : decoded) {
        System.out.println(Hex.toHexString((byte[]) d));
    }
}
Also used : ArrayList(java.util.ArrayList) RepositoryCache(org.aion.base.db.RepositoryCache) StaticArrayType(org.aion.solidity.SolidityType.StaticArrayType) AionTransaction(org.aion.base.AionTransaction) SolidityType(org.aion.solidity.SolidityType) AionTxReceipt(org.aion.base.AionTxReceipt) MiningBlock(org.aion.zero.impl.types.MiningBlock) Test(org.junit.Test)

Example 2 with SolidityType

use of org.aion.solidity.SolidityType in project aion by aionnetwork.

the class SolidityTypeTest method testBytes1.

@Test
public void testBytes1() throws Exception {
    byte[] x = Hex.decode("1122334455667788");
    SolidityType type = new BytesType();
    byte[] params = ByteUtil.merge(Hex.decode("00000000000000000000000000000010"), type.encode(x));
    System.out.println(Hex.toHexString(params));
    AionTransaction tx = createTransaction(ByteUtil.merge(Hex.decode("61cb5a01"), params));
    MiningBlock block = createDummyBlock();
    RepositoryCache repo = createRepository(tx);
    AionTxReceipt receipt = executeTransaction(tx, block, repo).getReceipt();
    System.out.println(receipt);
    assertArrayEquals(params, receipt.getTransactionOutput());
    assertArrayEquals(x, (byte[]) type.decode(receipt.getTransactionOutput(), 16));
}
Also used : RepositoryCache(org.aion.base.db.RepositoryCache) AionTransaction(org.aion.base.AionTransaction) SolidityType(org.aion.solidity.SolidityType) AionTxReceipt(org.aion.base.AionTxReceipt) MiningBlock(org.aion.zero.impl.types.MiningBlock) BytesType(org.aion.solidity.SolidityType.BytesType) Test(org.junit.Test)

Example 3 with SolidityType

use of org.aion.solidity.SolidityType in project aion by aionnetwork.

the class SolidityTypeTest method testDynamicArray1.

@Test
public void testDynamicArray1() throws Exception {
    List<BigInteger> x = new ArrayList<>();
    x.add(BigInteger.valueOf(1L));
    x.add(BigInteger.valueOf(2L));
    x.add(BigInteger.valueOf(3L));
    SolidityType type = new DynamicArrayType("uint16[]");
    byte[] params = ByteUtil.merge(Hex.decode("00000000000000000000000000000010"), type.encode(x));
    System.out.println(Hex.toHexString(params));
    AionTransaction tx = createTransaction(ByteUtil.merge(Hex.decode("8c0c5523"), params));
    MiningBlock block = createDummyBlock();
    RepositoryCache repo = createRepository(tx);
    AionTxReceipt receipt = executeTransaction(tx, block, repo).getReceipt();
    System.out.println(receipt);
    assertArrayEquals(params, receipt.getTransactionOutput());
    Object[] decoded = (Object[]) type.decode(receipt.getTransactionOutput(), 16);
    for (Object d : decoded) {
        System.out.println(d);
    }
}
Also used : DynamicArrayType(org.aion.solidity.SolidityType.DynamicArrayType) ArrayList(java.util.ArrayList) BigInteger(java.math.BigInteger) RepositoryCache(org.aion.base.db.RepositoryCache) AionTransaction(org.aion.base.AionTransaction) SolidityType(org.aion.solidity.SolidityType) AionTxReceipt(org.aion.base.AionTxReceipt) MiningBlock(org.aion.zero.impl.types.MiningBlock) Test(org.junit.Test)

Example 4 with SolidityType

use of org.aion.solidity.SolidityType in project aion by aionnetwork.

the class SolidityTypeTest method testStaticArray1.

@Test
public void testStaticArray1() throws Exception {
    List<BigInteger> x = new ArrayList<>();
    x.add(BigInteger.valueOf(1L));
    x.add(BigInteger.valueOf(2L));
    x.add(BigInteger.valueOf(3L));
    SolidityType type = new StaticArrayType("uint16[3]");
    byte[] params = type.encode(x);
    System.out.println(Hex.toHexString(params));
    AionTransaction tx = createTransaction(ByteUtil.merge(Hex.decode("97e934e2"), params));
    MiningBlock block = createDummyBlock();
    RepositoryCache repo = createRepository(tx);
    AionTxReceipt receipt = executeTransaction(tx, block, repo).getReceipt();
    System.out.println(receipt);
    assertArrayEquals(params, receipt.getTransactionOutput());
    Object[] decoded = (Object[]) type.decode(receipt.getTransactionOutput());
    for (Object d : decoded) {
        System.out.println(d);
    }
}
Also used : ArrayList(java.util.ArrayList) BigInteger(java.math.BigInteger) RepositoryCache(org.aion.base.db.RepositoryCache) StaticArrayType(org.aion.solidity.SolidityType.StaticArrayType) AionTransaction(org.aion.base.AionTransaction) SolidityType(org.aion.solidity.SolidityType) AionTxReceipt(org.aion.base.AionTxReceipt) MiningBlock(org.aion.zero.impl.types.MiningBlock) Test(org.junit.Test)

Example 5 with SolidityType

use of org.aion.solidity.SolidityType in project aion by aionnetwork.

the class SolidityTypeTest method testFixedBytes1.

@Test
public void testFixedBytes1() throws Exception {
    byte[] x = Hex.decode("1122334455");
    SolidityType type = new Bytes32Type("bytes5");
    byte[] params = type.encode(x);
    System.out.println(Hex.toHexString(params));
    AionTransaction tx = createTransaction(ByteUtil.merge(Hex.decode("faa068d1"), params));
    MiningBlock block = createDummyBlock();
    RepositoryCache repo = createRepository(tx);
    AionTxReceipt receipt = executeTransaction(tx, block, repo).getReceipt();
    System.out.println(receipt);
    assertArrayEquals(params, receipt.getTransactionOutput());
    assertArrayEquals(x, (byte[]) type.decode(receipt.getTransactionOutput()));
}
Also used : Bytes32Type(org.aion.solidity.SolidityType.Bytes32Type) RepositoryCache(org.aion.base.db.RepositoryCache) AionTransaction(org.aion.base.AionTransaction) SolidityType(org.aion.solidity.SolidityType) AionTxReceipt(org.aion.base.AionTxReceipt) MiningBlock(org.aion.zero.impl.types.MiningBlock) Test(org.junit.Test)

Aggregations

AionTransaction (org.aion.base.AionTransaction)10 AionTxReceipt (org.aion.base.AionTxReceipt)10 RepositoryCache (org.aion.base.db.RepositoryCache)10 SolidityType (org.aion.solidity.SolidityType)10 MiningBlock (org.aion.zero.impl.types.MiningBlock)10 Test (org.junit.Test)10 ArrayList (java.util.ArrayList)4 BigInteger (java.math.BigInteger)2 Bytes32Type (org.aion.solidity.SolidityType.Bytes32Type)2 BytesType (org.aion.solidity.SolidityType.BytesType)2 DynamicArrayType (org.aion.solidity.SolidityType.DynamicArrayType)2 StaticArrayType (org.aion.solidity.SolidityType.StaticArrayType)2 StringType (org.aion.solidity.SolidityType.StringType)2