Skip to content

Latest commit

 

History

History
213 lines (153 loc) · 8.72 KB

TransactionBuilder1.md

File metadata and controls

213 lines (153 loc) · 8.72 KB

TransactionBuilder1

Build & Model A FAT-1 Transaction

Kind: global class
Access: public

new TransactionBuilder(tokenChainId)

Param Type Description
tokenChainId string 64 character Factom Chain ID of the token to build the transaction for

Example

const TransactionBuilder = require('fat-js').FAT1.TransactionBuilder

const tokenId = 'mytoken';
const tokenChainId = '013de826902b7d075f00101649ca4fa7b49b5157cba736b2ca90f67e2ad6e8ec';

let tx = new TransactionBuilder(testTokenChainId)
.input("Fs1PkAEbmo1XNangSnxmKqi1PN5sVDbQ6zsnXCsMUejT66WaDgkm", [{min: 0, max: 3}, 150])
.output("FA3aECpw3gEZ7CMQvRNxEtKBGKAos3922oqYLcHQ9NqXHudC6YBM", [{min: 0, max: 3}, 150])
.build();

//coinbase transaction
tx = new TransactionBuilder(testTokenChainId)
.coinbaseInput([10])
.output("FA3aECpw3gEZ7CMQvRNxEtKBGKAos3922oqYLcHQ9NqXHudC6YBM", [10])
.sk1("sk13Rp3LVmVvWqo8mff82aDJN2yNCzjUs2Zuq3MNQSA5oC5ZwFAuu")
 .build();

//burn transaction
tx = new TransactionBuilder(testTokenChainId)
.input("Fs1PkAEbmo1XNangSnxmKqi1PN5sVDbQ6zsnXCsMUejT66WaDgkm", [{min: 0, max: 3}, 150])
.burnOutput([{min: 0, max: 3}, 150])
.build();

//transaction metadata
tx = new TransactionBuilder(testTokenChainId)
.input("Fs1PkAEbmo1XNangSnxmKqi1PN5sVDbQ6zsnXCsMUejT66WaDgkm", [10])
.output("FA3aECpw3gEZ7CMQvRNxEtKBGKAos3922oqYLcHQ9NqXHudC6YBM", [10])
.metadata({type: 'fat-js test run', timestamp: new Date().getTime()})
.build();

//NF token metadata
tx = new TransactionBuilder(testTokenChainId)
.coinbaseInput([10])
.output("FA3aECpw3gEZ7CMQvRNxEtKBGKAos3922oqYLcHQ9NqXHudC6YBM", [10])
.tokenMetadata([
{
    ids: [10],
    metadata: {type: 'fat-js test run', timestamp: new Date().getTime()},
}
])
.sk1("sk13Rp3LVmVvWqo8mff82aDJN2yNCzjUs2Zuq3MNQSA5oC5ZwFAuu")
.build();

//You can also use external signatures (from hardware devices, etc):

let keyPair = nacl.keyPair.fromSeed(fctAddrUtils.addressToKey("Fs1q7FHcW4Ti9tngdGAbA3CxMjhyXtNyB1BSdc8uR46jVUVCWtbJ"));
let pubaddr = fctAddrUtils.keyToPublicFctAddress(keyPair.publicKey);

let unsignedTx = new TransactionBuilder(testTokenChainId)
.input(pubaddr, [10])
.output("FA3umTvVhkcysBewF1sGAMeAeKDdG7kTQBbtf5nwuFUGwrNa5kAr", [10])
.build();

let extsig = nacl.detached(fctUtil.sha512(unsignedTx.getMarshalDataSig(0)), keyPair.secretKey);

let signedTx = new TransactionBuilder(unsignedTx)
.pkSignature(keyPair.publicKey, extsig)
.build();

transactionBuilder1.input(fs, ids) ⇒ TransactionBuilder

Set up a Factoid address input for the transaction

Kind: instance method of TransactionBuilder1

Param Type Description
fs string The private Factoid address to use as the input of the transaction OR raw public key if supplying external signatures
ids Array.<object> The token ID ranges to send in the transaction

transactionBuilder1.coinbaseInput(ids) ⇒ TransactionBuilder

Set up a coinbase input for the transaction, which mints tokens

Kind: instance method of TransactionBuilder1

Param Type Description
ids Array.<object> The token ID ranges to mint in the transaction

transactionBuilder1.output(fa, ids) ⇒ TransactionBuilder

Set up a Factoid address output for the transaction

Kind: instance method of TransactionBuilder1

Param Type Description
fa string The public Factoid address destination of the output
ids Array.<object> The token ID ranges to send to the output address

transactionBuilder1.burnOutput(ids) ⇒ TransactionBuilder

Set up a burn output for the transaction, which will destroy tokens

Kind: instance method of TransactionBuilder1

Param Type Description
ids Array.<object> The token ID ranges to send to the output address

transactionBuilder1.sk1(sk1) ⇒ TransactionBuilder

Set the SK1 private key of the token's issuing identity. Required for coinbase transactions

Kind: instance method of TransactionBuilder1

Param Type Description
sk1 string The SK1 private key string of the issuing identity

transactionBuilder1.id1(id1) ⇒ TransactionBuilder

Set up the identity public key of the issuing identity in prep for an externally signed coinbase transaction

Kind: instance method of TransactionBuilder1

Param Type Description
id1 string The ID1 public key string of the issuing identity, external signature will be required in second pass

transactionBuilder1.id1Signature(id1pubkey, signature) ⇒ TransactionBuilder

Set up the identity signature of the issuing identity in prep for an externally signed coinbase transaction

Kind: instance method of TransactionBuilder1

Param Type Description
id1pubkey string The ID1 public key string of the issuing identity, external signature expected.
signature Buffer signature - Optional signature provided on second pass

transactionBuilder1.metadata(metadata) ⇒ TransactionBuilder

Set arbitrary metadata for the transaction

Kind: instance method of TransactionBuilder1

Param Type Description
metadata * The metadata. Must be JSON stringifyable

transactionBuilder1.tokenMetadata(tokenMetadata) ⇒ TransactionBuilder

Set arbitrary metadata for the transaction

Kind: instance method of TransactionBuilder1

Param Type Description
tokenMetadata * The token metadata. Must follow the proper format. Must be JSON stringifyable

transactionBuilder1.pkSignature(publicKey, signature) ⇒ TransactionBuilder

Add a public key and signature to the transaction. This is used only in the case of externally signed transactions (useful for hardware wallets). Public Key's /signatures need to be added in the same order as their corresponding inputs.

Kind: instance method of TransactionBuilder1
Returns: TransactionBuilder - - TransactionBuilder instance.

Param Type Description
publicKey string | Array | Buffer FCT public key as hex string, uint8array, or buffer
signature Buffer Signature

transactionBuilder1.build() ⇒ Transaction

Build the transaction

Kind: instance method of TransactionBuilder1