有签名和无签名的交易之间有什么区别?

时间:2018-08-10 09:07:46

标签: asch-development asch

当我将交易发送到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;
}

两个交易都被接受(并创建一个新链)。那么有什么区别和最佳实践是什么?

1 个答案:

答案 0 :(得分:1)

据我了解,api/transactions端点主要用于未签名交易(例如您的第二个示例)。因此,您需要提供secret属性。否则,ASCH区块链将无法签署您的未签名交易。

在第一个示例中,您是自己签名,因此您无需将secret属性发送到peer/transactions端点。


从安全端点,最好在本地签署交易。因此,当您向区块链端点发送secret时,没有恶意节点可以窃取您的所有资金。