当我将交易发送到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;
}
两个交易都被接受(并创建一个新链)。那么有什么区别和最佳实践是什么?
答案 0 :(得分:1)
据我了解,api/transactions
端点主要用于未签名交易(例如您的第二个示例)。因此,您需要提供secret
属性。否则,ASCH区块链将无法签署您的未签名交易。
在第一个示例中,您是自己签名,因此您无需将secret
属性发送到peer/transactions
端点。
从安全端点,最好在本地签署交易。因此,当您向区块链端点发送secret
时,没有恶意节点可以窃取您的所有资金。