cosignatario agrega Operaciones pendientes de firmar.
Esta guía asume que ha recibido una transacción agregada. Puedes seguir la guía creating an escrow contract para anunciar una transacción agregada.
Inicie sesión en una cuenta de cosignatario que tenga una transacción garantizada agregada inminente a la espera de ser firmada.
En la página de inicio, haga clic en la pestaña “parcial”. Haga clic en la transacción enumerada e ingrese la contraseña de su billetera para firmar la transacción.
1. Primero, verifique si su cuenta tiene transacciones agregadas entrantes que no han sido firmadas.
Utilice el repositorio TransactionHttp
para buscar todas las transacciones agregadas entrantes pendientes de ser firmadas por su cuenta.
// replace with account address
const rawAddress = 'TAXQUT-QQNS6J-EJG7PL-C6FRVJ-2USS44-GLMVUL-PGQ';
const address = Address.createFromRawAddress(rawAddress);
const nodeUrl = 'NODE_URL';
const repositoryFactory = new RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();
const searchCriteria = {
group: TransactionGroup.Partial,
address,
pageNumber: 1,
pageSize: 100,
};
transactionHttp.search(searchCriteria).subscribe(
(page) => console.log(page.data),
(err) => console.error(err),
);
// replace with account address
const rawAddress = 'TAXQUT-QQNS6J-EJG7PL-C6FRVJ-2USS44-GLMVUL-PGQ';
const address = bitxor_sdk_1.Address.createFromRawAddress(rawAddress);
const nodeUrl = 'NODE_URL';
const repositoryFactory = new bitxor_sdk_1.RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();
const searchCriteria = {
group: bitxor_sdk_1.TransactionGroup.Partial,
address,
pageNumber: 1,
pageSize: 100,
};
transactionHttp.search(searchCriteria).subscribe(
(page) => console.log(page.data),
(err) => console.error(err),
);
TransactionRepository transactionHttp = repositoryFactory.createTransactionRepository();
TransactionPaginationStreamer streamer = new TransactionPaginationStreamer(transactionHttp);
List<Transaction> transactions = streamer.search(new TransactionSearchCriteria(TransactionGroup.PARTIAL))
.toList().toFuture().get();
System.out.println(transactions);
Copie y guarde el hash de la transacción que desea cofirmar con su cuenta.
Create a function to cosign any AggregateBondedTransaction.
const cosignAggregateBondedTransaction = (
transaction: AggregateTransaction,
account: Account,
): CosignatureSignedTransaction => {
const cosignatureTransaction = CosignatureTransaction.create(transaction);
return account.signCosignatureTransaction(cosignatureTransaction);
};
const cosignAggregateBondedTransaction = (transaction, account) => {
const cosignatureTransaction = bitxor_sdk_1.CosignatureTransaction.create(
transaction,
);
return account.signCosignatureTransaction(cosignatureTransaction);
};
BiFunction<AggregateTransaction, Account, CosignatureSignedTransaction> cosignAggregateBondedTransaction = ((transaction, account) -> CosignatureTransaction
.create(transaction).signWith(account));
3. Defina el hash de la transacción para cofirmar y la cuenta del firmante. Si desea firmar conjuntamente una transacción que involucra una cuenta multisig, debe usar la cuenta de cosignatario en su lugar. .. example-code:
.. viewsource:: ../../resources/examples/typescript/aggregate/CosigningAggregateBondedTransactions.ts
:language: typescript
:start-after: /* start block 02 */
:end-before: /* end block 02 */
.. viewsource:: ../../resources/examples/typescript/aggregate/CosigningAggregateBondedTransactions.js
:language: javascript
:start-after: /* start block 02 */
:end-before: /* end block 02 */
.. viewsource:: ../../resources/examples/java/src/test/java/bitxor/guides/examples/aggregate/CosigningAggregateBondedTransactions.java
:language: java
:start-after: /* start block 02 */
:end-before: /* end block 02 */
4. Recupere el objeto de transacción completo del nodo usando el repositorio TransactionHttp
.
En este punto, es posible que desee realizar algunas comprobaciones adicionales, como verificar el contenido de la transacción.
Si todo parece estar bien, cofirma la transacción con la cuenta del firmante.
Finalmente, anuncie la firma conjunta a la red con transactionHttp.announceAggregateBondedCosignature
.
const nodeUrl = 'NODE_URL';
const repositoryFactory = new RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();
transactionHttp
.getTransaction(transactionHash, TransactionGroup.Partial)
.pipe(
map((transaction) =>
cosignAggregateBondedTransaction(
transaction as AggregateTransaction,
account,
),
),
mergeMap((cosignatureSignedTransaction) =>
transactionHttp.announceAggregateBondedCosignature(
cosignatureSignedTransaction,
),
),
)
.subscribe(
(announcedTransaction) => console.log(announcedTransaction),
(err) => console.error(err),
);
const nodeUrl = 'NODE_URL';
const repositoryFactory = new bitxor_sdk_1.RepositoryFactoryHttp(nodeUrl);
const transactionHttp = repositoryFactory.createTransactionRepository();
transactionHttp
.getTransaction(transactionHash, bitxor_sdk_1.TransactionGroup.Partial)
.pipe(
operators_1.map((transaction) =>
cosignAggregateBondedTransaction(transaction, account),
),
operators_1.mergeMap((cosignatureSignedTransaction) =>
transactionHttp.announceAggregateBondedCosignature(
cosignatureSignedTransaction,
),
),
)
.subscribe(
(announcedTransaction) => console.log(announcedTransaction),
(err) => console.error(err),
);
TransactionRepository transactionHttp = repositoryFactory.createTransactionRepository();
TransactionAnnounceResponse announcedTransaction = transactionHttp
.getTransaction(TransactionGroup.PARTIAL, transactionHash)
.map(transaction -> cosignAggregateBondedTransaction.apply((AggregateTransaction) transaction, account))
.flatMap(transactionHttp::announceAggregateBondedCosignature).toFuture().get();
System.out.println(announcedTransaction);
Una vez que todos los participantes firman conjuntamente la transacción, la transacción se incluirá en un bloque.
Obtenga todas las transacciones agregadas pendientes de ser firmadas por su cuenta.
bitxor-cli transaction search --address BXRBDE-NCLKEB-ILBPWP-3JPB2X-NY64OE-7PYHHE-32I --group Partial
Firmar conjuntamente la transacción de bonos agregados. Reemplace el hash por el hash de transacción recuperado de (1).
bitxor-cli transaction cosign --hash A6A374E66B32A3D5133018EFA9CD6E3169C8EEA339F7CCBE29C47D07086E068C