1 package io.bytom.offline.api;
3 import io.bytom.offline.common.Utils;
4 import org.bouncycastle.util.encoders.Hex;
5 import java.io.ByteArrayOutputStream;
6 import java.io.IOException;
11 * The number of units of the asset being controlled.
16 * The id of the asset being controlled.
18 private String assetId;
21 * The control program which must be satisfied to transfer this output.
23 private String controlProgram;
26 * The id of the output.
31 * The output's position in a transaction's list of outputs.
33 private Integer position;
35 public Output(String assetId, Long amount, String controlProgram) {
36 this.assetId = assetId;
38 this.controlProgram = controlProgram;
41 public byte[] serializeOutput() throws IOException {
42 ByteArrayOutputStream stream = new ByteArrayOutputStream();
45 Utils.writeVarint(1, stream); //AssetVersion是否默认为1
47 ByteArrayOutputStream outputCommitSteam = new ByteArrayOutputStream();
49 outputCommitSteam.write(Hex.decode(assetId));
51 Utils.writeVarint(amount, outputCommitSteam);
53 Utils.writeVarint(1, outputCommitSteam); //db中获取vm_version
55 Utils.writeVarStr(Hex.decode(controlProgram), outputCommitSteam);
57 Utils.writeExtensibleString(outputCommitSteam.toByteArray(), stream);
60 Utils.writeVarint(0, stream);
61 return stream.toByteArray();
64 public Long getAmount() {
68 public void setAmount(Long amount) {
72 public String getAssetId() {
76 public void setAssetId(String assetId) {
77 this.assetId = assetId;
80 public String getControlProgram() {
81 return controlProgram;
84 public void setControlProgram(String controlProgram) {
85 this.controlProgram = controlProgram;
88 public String getId() {
92 public void setId(String id) {
96 public Integer getPosition() {
100 public void setPosition(Integer position) {
101 this.position = position;