![JAR search and dependency download from the Maven repository](/logo.png)
io.neow3j.transaction.ClaimTransaction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of core Show documentation
Show all versions of core Show documentation
neow3j: Java/Kotlin/Android Development Toolkit for the Neo Blockchain
package io.neow3j.transaction;
import io.neow3j.crypto.transaction.RawTransaction;
import io.neow3j.crypto.transaction.RawTransactionInput;
import io.neow3j.crypto.transaction.RawTransactionOutput;
import io.neow3j.io.BinaryReader;
import io.neow3j.io.BinaryWriter;
import io.neow3j.model.types.GASAsset;
import io.neow3j.model.types.TransactionType;
import io.neow3j.protocol.core.methods.response.NeoGetClaimable.Claimables;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class ClaimTransaction extends RawTransaction {
private List claims;
public ClaimTransaction() {}
protected ClaimTransaction(Builder builder) {
super(builder);
this.claims = builder.claims;
}
public List getClaims() {
return claims;
}
@Override
public void serializeExclusive(BinaryWriter writer) throws IOException {
writer.writeSerializableVariable(claims);
}
@Override
public void deserializeExclusive(BinaryReader reader) throws IOException, IllegalAccessException, InstantiationException {
claims = reader.readSerializableList(RawTransactionInput.class);
}
public static ClaimTransaction fromClaimables(Claimables claimables, String receivingAddress) {
List outputs = Collections.singletonList(
new RawTransactionOutput(GASAsset.HASH_ID, claimables.getTotalUnclaimed(), receivingAddress));
List claims = claimables.getClaims().stream().map(
c -> new RawTransactionInput(c.getTxId(), c.getIndex())).collect(Collectors.toList());
return new Builder().claims(claims).outputs(outputs).build();
}
public static class Builder extends RawTransaction.Builder {
private List claims;
public Builder() {
super();
claims = new ArrayList<>();
transactionType(TransactionType.CLAIM_TRANSACTION);
}
public Builder claims(List claims) {
this.claims.addAll(claims); return this;
}
public Builder claim(RawTransactionInput claim) {
return claims(Arrays.asList(claim));
}
@Override
public Builder outputs(List outputs) {
if (outputs.stream().anyMatch(output -> !output.getAssetId().equals(GASAsset.HASH_ID))) {
throw new IllegalArgumentException("Outputs of a ClaimTransaction can only be of " +
"type GAS.");
}
super.outputs(outputs); return this;
}
@Override
public Builder inputs(List inputs) {
return claims(inputs);
}
@Override
public ClaimTransaction build() {
return new ClaimTransaction(this);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy