@Test
public void deserialize() throws DeserializationException {

    byte[] data = Numeric.hexStringToByteArray(""
            + "00" // version
            + "62bdaa0e"  // nonce
            + "c272890000000000"  // system fee
            + "a65a130000000000"  // network fee
            + "99232000"  // valid until block
            + "01" + "941343239213fa0e765f1027ce742f48db779a96" + "01"
            // one called by entry signer
            + "00"
            + "01" + OpCode.PUSH1.toString()  // 1-byte script with PUSH1 OpCode
            + "01" // 1 witness
            + "01000100"); /* witness*/
    Transaction tx = NeoSerializableInterface.from(data, Transaction.class);
    assertThat(tx.getVersion(), is((byte) 0));
    assertThat(tx.getNonce(), is(246070626L));
    assertThat(tx.getSender(), is(new ScriptHash("969a77db482f74ce27105f760efa139223431394")));
    assertThat(tx.getSystemFee(), is(9007810L));
    assertThat(tx.getNetworkFee(), is(1268390L));
    assertThat(tx.getValidUntilBlock(), is(2106265L));
    assertThat(tx.getAttributes(), hasSize(0));
    assertThat(tx.getSigners(), hasSize(1));
    assertThat(tx.getSigners().get(0).getScriptHash(),
            is(new ScriptHash("969a77db482f74ce27105f760efa139223431394")));
    assertThat(tx.getSigners().get(0).getScopes(), contains(WitnessScope.CALLED_BY_ENTRY));
    assertArrayEquals(new byte[]{(byte) OpCode.PUSH1.getCode()}, tx.getScript());
    assertThat(tx.getWitnesses(), is(
            Arrays.asList(new Witness(new byte[]{0x00}, new byte[]{0x00}))));
}