代码之家  ›  专栏  ›  技术社区  ›  Bass Jobsen

有签名和没有签名的交易有什么区别?

  •  1
  • Bass Jobsen  · 技术社区  · 6 年前

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

    情形二:无签名

    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 回复  |  直到 6 年前
        1
  •  1
  •   a1300    6 年前

    据我所知 api/transactions 端点主要用于 未签名 交易(就像你的第二个例子)。因此,您需要提供 secret 财产。否则ASCH区块链无法签署您的未签名交易。

    在你的第一个例子中 签署 交易由您自己完成,因此您不需要发送 秘密 财产 peer/transactions 终点。


    从安全端点开始,最好在本地对事务进行签名。因此,当您发送 秘密 a区块链端点。

    推荐文章