1

当我向其发送交易时,peer/transactions我可以发送带有或不带有签名的交易。两种交易均被接受。有什么不同。

例子; 使用 asch-js 创建一个新的链 / dapp

情况1:使用签名(和 a 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;
}

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

4

1 回答 1

1

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

在您的第一个示例中,您自己签署交易,因此您不需要将secret属性发送到peer/transactions端点。


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

于 2018-08-11T11:53:16.113 回答