bigchaindb / bigchaindb/java-bigchaindb-driver

Multiple Inputs will fail transaction

Open
#46 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
29
Forks
30
PR merge metrics
No merged PRs in 30d

Description

If you try to combine assets as described in https://www.bigchaindb.com/developers/guide/tutorial-token-launch/ it will fail.

The code only update first input fullfillment. See
this.transaction.getInputs().get(0)
.setFullFillment(Base64.encodeBase64URLSafeString(fulfillment.getEncoded()));

We fixed in upcoming release of C# driver https://github.com/Omnibasis/bigchaindb-csharp-driver

Here is a solution to proper sign fulfillments.
```
// based on javascript signTransaction
foreach (Input input in this.transaction.Inputs)
{
var transactionUniqueFulfillment = "";
if (input.FulFills != null)
{
FulFill fulfill = input.FulFills;
transactionUniqueFulfillment = jsonOrdered + fulfill.TransactionId + fulfill.OutputIndex.ToString();
} else
{
transactionUniqueFulfillment = jsonOrdered;
}
var transactionHash = DriverUtils.getSha3HashHex(transactionUniqueFulfillment);
var b = Utils.StringToByteArray(transactionHash);
var sig = algorithm.Sign(key, b);
Ed25519Sha256Fulfillment ff = new Ed25519Sha256Fulfillment(this.publicKey, sig);
input.FulFillment = Base64UrlEncoder.Encode(ff.Encoded);
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.