1
0
mirror of https://github.com/bigchaindb/js-bigchaindb-driver.git synced 2025-02-14 21:10:32 +01:00

fulfillment with values

This commit is contained in:
manolodewiner 2017-11-03 12:17:50 +01:00
parent 5f2ee8c0d8
commit 860ce117e1
4 changed files with 26 additions and 12 deletions

View File

@ -1,3 +1,4 @@
import makeFulfillment from './makeFulfillment'
import makeInputTemplate from './makeInputTemplate'
import makeTransaction from './makeTransaction'
@ -25,7 +26,8 @@ export default function makeCreateTransaction(asset, metadata, outputs, ...issue
const assetDefinition = {
'data': asset || null,
}
const inputs = issuers.map((issuer) => makeInputTemplate([issuer]))
const inputs = issuers.map((issuer) => makeInputTemplate([issuer], null,
makeFulfillment([issuer])))
return makeTransaction('CREATE', assetDefinition, metadata, outputs, inputs)
}

View File

@ -1,3 +1,4 @@
import clone from 'clone'
import hashTransaction from './hashTransaction'
@ -16,6 +17,8 @@ function makeTransactionTemplate() {
export default function makeTransaction(operation, asset, metadata = null, outputs = [], inputs = []) {
const tx = makeTransactionTemplate()
const realInputs = clone(inputs)
tx.operation = operation
tx.asset = asset
tx.metadata = metadata
@ -23,6 +26,8 @@ export default function makeTransaction(operation, asset, metadata = null, outpu
tx.outputs = outputs
// Hashing must be done after, as the hash is of the Transaction (up to now)
tx.inputs[0].fulfillment = null
tx.id = hashTransaction(tx)
tx.inputs = realInputs
return tx
}

View File

@ -1,3 +1,4 @@
import makeFulfillment from './makeFulfillment'
import makeInputTemplate from './makeInputTemplate'
import makeTransaction from './makeTransaction'
@ -36,14 +37,14 @@ export default function makeTransferTransaction(
'output_index': outputIndex,
'transaction_id': unspentTransaction.id,
}
return makeInputTemplate(fulfilledOutput.public_keys, transactionLink)
return makeInputTemplate(fulfilledOutput.public_keys, transactionLink,
makeFulfillment(outputs[outputIndex].public_keys))
})
const assetLink = {
'id': unspentTransaction.operation === 'CREATE' ? unspentTransaction.id
: unspentTransaction.asset.id
}
const makeT = makeTransaction('TRANSFER', assetLink, metadata, outputs, inputs)
return makeTransaction('TRANSFER', assetLink, metadata, outputs, inputs)
return makeT
}

View File

@ -21,14 +21,20 @@ import serializeTransactionIntoCanonicalString from './serializeTransactionIntoC
export default function signTransaction(transaction, ...privateKeys) {
const signedTx = clone(transaction)
signedTx.inputs.forEach((input, index) => {
const privateKey = privateKeys[index]
const privateKeyBuffer = new Buffer(base58.decode(privateKey))
const serializedTransaction = serializeTransactionIntoCanonicalString(transaction)
const ed25519Fulfillment = new cc.Ed25519Sha256()
ed25519Fulfillment.sign(new Buffer(serializedTransaction), privateKeyBuffer)
const fulfillmentUri = ed25519Fulfillment.serializeUri()
console.log('inpuuuuut', input)
input.fulfillment = fulfillmentUri
if (input.fulfillment.type === 'ed25519-sha-256') {
transaction.inputs[0].fulfillment = null
const privateKey = privateKeys[index]
const privateKeyBuffer = new Buffer(base58.decode(privateKey))
const serializedTransaction = serializeTransactionIntoCanonicalString(transaction)
const ed25519Fulfillment = new cc.Ed25519Sha256()
ed25519Fulfillment.sign(new Buffer(serializedTransaction), privateKeyBuffer)
const fulfillmentUri = ed25519Fulfillment.serializeUri()
input.fulfillment = fulfillmentUri
} else if (input.fulfillment.type === 'threshold-sha-256') {
input.fulfillment = 'fulfillmentUri'
}
})
return signedTx