当我向peer/transactions发送事务时,我可以使用和不带签名的方式发送它。这两项交易都被接受。有什么区别。
示例;使用asch-js创建新的链/ dapp。
情景1:使用签名(和一个transactionid):
function createDApp(options, secret, secondSecret) {
var keys = crypto.getKeys(secret);
var transaction = {
secret: secret,
type: 200,
amount: 0,
fee: constants.fees.dapp,
recipientId: null,
senderId: crypto.getAddress(keys.publicKey),
timestamp: slots.getTime() - globalOptions.get('clientDriftSeconds'),
args: [options.name, options.description, options.link, options.icon, options.delegates, options.unlockDelegates],
signatures: []
};
transaction.signatures.push(crypto.sign(transaction, keys));
if (secondSecret) {
var secondKeys = crypto.getKeys(secondSecret);
transaction.signatures.push(crypto.secondSign(transaction, secondKeys));
}
transaction.id = crypto.getId(transaction);
return transaction;
}情况2:无签字
function createDApp(options, secret, secondSecret) {
var keys = crypto.getKeys(secret);
var transaction = {
secret: secret,
type: 200,
amount: 0,
fee: constants.fees.dapp,
recipientId: null,
senderId: crypto.getAddress(keys.publicKey),
timestamp: slots.getTime() - globalOptions.get('clientDriftSeconds'),
args: [options.name, options.description, options.link, options.icon, options.delegates, options.unlockDelegates],
signatures: []
};
return transaction;
}这两个事务都被接受(并创建了一个新的链)。那么,两者有什么不同,最佳实践是什么呢?
发布于 2018-08-11 11:53:16
据我所知,api/transactions端点主要用于未签名的事务(如第二个示例)。因此,您需要提供secret属性。否则,ASCH区块链无法对未签名的事务进行签名。
在第一个示例中,您是自己签署事务的,因此不需要将secret属性发送到peer/transactions端点。
在安全端点上,最好在本地对事务进行签名。因此,当您向secret发送区块链端点时,没有恶意节点能够窃取您的所有资金。
https://stackoverflow.com/questions/51782880
复制相似问题