mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00
Adding support for mass. (#2301)
* Adding support for mass. * update grpc v1.69.2 * Upgrade protos using latest protoc * Use MassCommitment instead of Mass * Fix DomainTransaction clone, equal and tests --------- Co-authored-by: veronica <jimjouny@gmail.com> Co-authored-by: Ori Newman <orinewman1@gmail.com>
This commit is contained in:
parent
6085d1fc84
commit
43b9523919
@ -2,9 +2,10 @@ package appmessage
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"github.com/pkg/errors"
|
||||
"math/big"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/kaspanet/kaspad/domain/consensus/utils/blockheader"
|
||||
"github.com/kaspanet/kaspad/domain/consensus/utils/hashes"
|
||||
"github.com/kaspanet/kaspad/domain/consensus/utils/utxo"
|
||||
@ -219,6 +220,7 @@ func RPCTransactionToDomainTransaction(rpcTransaction *RPCTransaction) (*externa
|
||||
LockTime: rpcTransaction.LockTime,
|
||||
SubnetworkID: *subnetworkID,
|
||||
Gas: rpcTransaction.Gas,
|
||||
MassCommitment: rpcTransaction.Mass,
|
||||
Payload: payload,
|
||||
}, nil
|
||||
}
|
||||
@ -287,6 +289,7 @@ func DomainTransactionToRPCTransaction(transaction *externalapi.DomainTransactio
|
||||
LockTime: transaction.LockTime,
|
||||
SubnetworkID: subnetworkID,
|
||||
Gas: transaction.Gas,
|
||||
Mass: transaction.MassCommitment,
|
||||
Payload: payload,
|
||||
}
|
||||
}
|
||||
|
@ -52,6 +52,7 @@ type RPCTransaction struct {
|
||||
SubnetworkID string
|
||||
Gas uint64
|
||||
Payload string
|
||||
Mass uint64
|
||||
VerboseData *RPCTransactionVerboseData
|
||||
}
|
||||
|
||||
|
@ -329,6 +329,7 @@ func initTestBlockAcceptanceDataForClone() []*externalapi.BlockAcceptanceData {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -377,6 +378,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -410,6 +412,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -443,6 +446,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -476,6 +480,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -510,6 +515,7 @@ func iniBlockAcceptanceDataForEqual() []testBlockAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -614,6 +620,7 @@ func initTestAcceptanceDataForClone() []externalapi.AcceptanceData {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -664,6 +671,7 @@ func initAcceptanceDataForEqual() []testAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -697,6 +705,7 @@ func initAcceptanceDataForEqual() []testAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -730,6 +739,7 @@ func initAcceptanceDataForEqual() []testAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -763,6 +773,7 @@ func initAcceptanceDataForEqual() []testAcceptanceDataStruct {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
|
@ -20,6 +20,7 @@ type DomainTransaction struct {
|
||||
|
||||
Fee uint64
|
||||
Mass uint64
|
||||
MassCommitment uint64
|
||||
|
||||
// ID is a field that is used to cache the transaction ID.
|
||||
// Always use consensushashing.TransactionID instead of accessing this field directly
|
||||
@ -56,6 +57,7 @@ func (tx *DomainTransaction) Clone() *DomainTransaction {
|
||||
Payload: payloadClone,
|
||||
Fee: tx.Fee,
|
||||
Mass: tx.Mass,
|
||||
MassCommitment: tx.MassCommitment,
|
||||
ID: idClone,
|
||||
}
|
||||
}
|
||||
@ -63,7 +65,7 @@ func (tx *DomainTransaction) Clone() *DomainTransaction {
|
||||
// If this doesn't compile, it means the type definition has been changed, so it's
|
||||
// an indication to update Equal and Clone accordingly.
|
||||
var _ = DomainTransaction{0, []*DomainTransactionInput{}, []*DomainTransactionOutput{}, 0,
|
||||
DomainSubnetworkID{}, 0, []byte{}, 0, 0,
|
||||
DomainSubnetworkID{}, 0, []byte{}, 0, 0, 0,
|
||||
&DomainTransactionID{}}
|
||||
|
||||
// Equal returns whether tx equals to other
|
||||
@ -112,6 +114,10 @@ func (tx *DomainTransaction) Equal(other *DomainTransaction) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
if tx.MassCommitment != other.MassCommitment {
|
||||
return false
|
||||
}
|
||||
|
||||
if tx.Fee != 0 && other.Fee != 0 && tx.Fee != other.Fee {
|
||||
panic(errors.New("identical transactions should always have the same fee"))
|
||||
}
|
||||
|
@ -83,6 +83,7 @@ func initTestBaseTransaction() *externalapi.DomainTransaction {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -112,6 +113,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -137,6 +139,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -162,6 +165,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01, 0x02}, //Changed
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -186,6 +190,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -213,6 +218,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -239,6 +245,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
1000000000, //Changed
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -263,6 +270,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -287,6 +295,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
2, //Changed
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -311,6 +320,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -341,6 +351,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -366,6 +377,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -390,6 +402,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
nil, //changed
|
||||
},
|
||||
expectedResult: true,
|
||||
@ -411,6 +424,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -435,6 +449,7 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -461,6 +476,34 @@ func initTestTransactionToCompare() []*transactionToCompare {
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}),
|
||||
},
|
||||
expectedResult: false,
|
||||
},
|
||||
{
|
||||
tx: &externalapi.DomainTransaction{
|
||||
1,
|
||||
[]*externalapi.DomainTransactionInput{{externalapi.DomainOutpoint{
|
||||
*externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x01}), 0xFFFF},
|
||||
[]byte{1, 2, 3},
|
||||
uint64(0xFFFFFFFF),
|
||||
1,
|
||||
utxo.NewUTXOEntry(1, &externalapi.ScriptPublicKey{Script: []byte{0, 1, 2, 3}, Version: 0}, true, 2)}},
|
||||
[]*externalapi.DomainTransactionOutput{{uint64(0xFFFF),
|
||||
&externalapi.ScriptPublicKey{Script: []byte{1, 2}, Version: 0}},
|
||||
{uint64(0xFFFF),
|
||||
&externalapi.ScriptPublicKey{Script: []byte{1, 3}, Version: 0}}},
|
||||
1,
|
||||
externalapi.DomainSubnetworkID{0x01},
|
||||
1,
|
||||
[]byte{0x01},
|
||||
0,
|
||||
1,
|
||||
1, // Changed
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -536,6 +579,7 @@ func initTestDomainTransactionForEqual() []testDomainTransactionStruct {
|
||||
[]byte{0x01},
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
externalapi.NewDomainTransactionIDFromByteArray(&[externalapi.DomainHashSize]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@ -555,6 +599,7 @@ func initTestDomainTransactionForEqual() []testDomainTransactionStruct {
|
||||
[]byte{0x01},
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
nil,
|
||||
},
|
||||
expectedResult: false,
|
||||
@ -569,6 +614,7 @@ func initTestDomainTransactionForEqual() []testDomainTransactionStruct {
|
||||
[]byte{0x01},
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
nil,
|
||||
},
|
||||
expectedResult: true,
|
||||
@ -583,6 +629,7 @@ func initTestDomainTransactionForEqual() []testDomainTransactionStruct {
|
||||
[]byte{0x01},
|
||||
2, // Changed fee
|
||||
1,
|
||||
0,
|
||||
nil,
|
||||
},
|
||||
expectsPanic: true,
|
||||
|
@ -27,7 +27,7 @@ func TransactionHash(tx *externalapi.DomainTransaction) *externalapi.DomainHash
|
||||
// Encode the header and hash everything prior to the number of
|
||||
// transactions.
|
||||
writer := hashes.NewTransactionHashWriter()
|
||||
err := serializeTransaction(writer, tx, txEncodingFull)
|
||||
err := serializeTransaction(writer, tx, txEncodingFull, true)
|
||||
if err != nil {
|
||||
// It seems like this could only happen if the writer returned an error.
|
||||
// and this writer should never return an error (no allocations or possible failures)
|
||||
@ -52,7 +52,7 @@ func TransactionID(tx *externalapi.DomainTransaction) *externalapi.DomainTransac
|
||||
encodingFlags = txEncodingExcludeSignatureScript
|
||||
}
|
||||
writer := hashes.NewTransactionIDWriter()
|
||||
err := serializeTransaction(writer, tx, encodingFlags)
|
||||
err := serializeTransaction(writer, tx, encodingFlags, false)
|
||||
if err != nil {
|
||||
// this writer never return errors (no allocations or possible failures) so errors can only come from validity checks,
|
||||
// and we assume we never construct malformed transactions.
|
||||
@ -74,7 +74,7 @@ func TransactionIDs(txs []*externalapi.DomainTransaction) []*externalapi.DomainT
|
||||
return txIDs
|
||||
}
|
||||
|
||||
func serializeTransaction(w io.Writer, tx *externalapi.DomainTransaction, encodingFlags txEncoding) error {
|
||||
func serializeTransaction(w io.Writer, tx *externalapi.DomainTransaction, encodingFlags txEncoding, includeMass bool) error {
|
||||
err := binaryserializer.PutUint16(w, tx.Version)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -126,6 +126,15 @@ func serializeTransaction(w io.Writer, tx *externalapi.DomainTransaction, encodi
|
||||
return err
|
||||
}
|
||||
|
||||
if includeMass {
|
||||
if tx.MassCommitment > 0 { // For backward compatibility, serialize MassCommitment only if it's not zero
|
||||
err = binaryserializer.PutUint64(w, tx.Mass)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
17
go.mod
17
go.mod
@ -8,7 +8,7 @@ require (
|
||||
github.com/btcsuite/winsvc v1.0.0
|
||||
github.com/davecgh/go-spew v1.1.1
|
||||
github.com/gofrs/flock v0.8.1
|
||||
github.com/golang/protobuf v1.5.2
|
||||
github.com/golang/protobuf v1.5.4
|
||||
github.com/jessevdk/go-flags v1.4.0
|
||||
github.com/jrick/logrotate v1.0.0
|
||||
github.com/kaspanet/go-muhash v0.0.4
|
||||
@ -16,18 +16,17 @@ require (
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d
|
||||
github.com/tyler-smith/go-bip39 v1.1.0
|
||||
golang.org/x/crypto v0.1.0
|
||||
golang.org/x/exp v0.0.0-20220414153411-bcd21879b8fd
|
||||
golang.org/x/term v0.5.0
|
||||
google.golang.org/grpc v1.38.0
|
||||
google.golang.org/protobuf v1.28.1
|
||||
golang.org/x/crypto v0.28.0
|
||||
golang.org/x/term v0.25.0
|
||||
google.golang.org/grpc v1.69.2
|
||||
google.golang.org/protobuf v1.35.1
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/golang/snappy v0.0.1 // indirect
|
||||
golang.org/x/net v0.7.0 // indirect
|
||||
golang.org/x/sys v0.5.0 // indirect
|
||||
golang.org/x/text v0.7.0 // indirect
|
||||
golang.org/x/net v0.30.0 // indirect
|
||||
golang.org/x/sys v0.26.0 // indirect
|
||||
golang.org/x/text v0.19.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08 // indirect
|
||||
gopkg.in/yaml.v2 v2.3.0 // indirect
|
||||
)
|
||||
|
52
go.sum
52
go.sum
@ -26,6 +26,10 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m
|
||||
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
||||
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
@ -40,8 +44,9 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
|
||||
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
|
||||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
@ -49,9 +54,12 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
@ -80,17 +88,25 @@ github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d/go.mod h1:9OrXJ
|
||||
github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8=
|
||||
github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
|
||||
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
|
||||
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
|
||||
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
|
||||
go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
|
||||
go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
|
||||
go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
|
||||
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
|
||||
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
|
||||
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU=
|
||||
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
|
||||
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20220414153411-bcd21879b8fd h1:zVFyTKZN/Q7mNRWSs1GOYnHM9NiFSJ54YVRsD0rNWT4=
|
||||
golang.org/x/exp v0.0.0-20220414153411-bcd21879b8fd/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
@ -106,8 +122,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
@ -121,16 +137,16 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
|
||||
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
|
||||
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
||||
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
@ -142,7 +158,6 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
@ -155,8 +170,9 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0=
|
||||
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||
google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
|
||||
google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
@ -168,8 +184,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
|
||||
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
|
||||
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -8,9 +8,7 @@ message RequestAddressesMessage{
|
||||
SubnetworkId subnetworkId = 2;
|
||||
}
|
||||
|
||||
message AddressesMessage{
|
||||
repeated NetAddress addressList = 1;
|
||||
}
|
||||
message AddressesMessage { repeated NetAddress addressList = 1; }
|
||||
|
||||
message NetAddress {
|
||||
int64 timestamp = 1;
|
||||
@ -18,9 +16,7 @@ message NetAddress{
|
||||
uint32 port = 4;
|
||||
}
|
||||
|
||||
message SubnetworkId{
|
||||
bytes bytes = 1;
|
||||
}
|
||||
message SubnetworkId { bytes bytes = 1; }
|
||||
|
||||
message TransactionMessage {
|
||||
uint32 version = 1;
|
||||
@ -30,6 +26,7 @@ message TransactionMessage{
|
||||
SubnetworkId subnetworkId = 5;
|
||||
uint64 gas = 6;
|
||||
bytes payload = 8;
|
||||
uint64 mass = 9;
|
||||
}
|
||||
|
||||
message TransactionInput {
|
||||
@ -44,9 +41,7 @@ message Outpoint{
|
||||
uint32 index = 2;
|
||||
}
|
||||
|
||||
message TransactionId{
|
||||
bytes bytes = 1;
|
||||
}
|
||||
message TransactionId { bytes bytes = 1; }
|
||||
message ScriptPublicKey {
|
||||
bytes script = 1;
|
||||
uint32 version = 2;
|
||||
@ -77,64 +72,41 @@ message BlockHeader{
|
||||
uint64 blueScore = 13;
|
||||
}
|
||||
|
||||
message BlockLevelParents {
|
||||
repeated Hash parentHashes = 1;
|
||||
}
|
||||
message BlockLevelParents { repeated Hash parentHashes = 1; }
|
||||
|
||||
message Hash{
|
||||
bytes bytes = 1;
|
||||
}
|
||||
message Hash { bytes bytes = 1; }
|
||||
|
||||
message RequestBlockLocatorMessage {
|
||||
Hash highHash = 1;
|
||||
uint32 limit = 2;
|
||||
}
|
||||
|
||||
message BlockLocatorMessage{
|
||||
repeated Hash hashes = 1;
|
||||
}
|
||||
message BlockLocatorMessage { repeated Hash hashes = 1; }
|
||||
|
||||
message RequestHeadersMessage {
|
||||
Hash lowHash = 1;
|
||||
Hash highHash = 2;
|
||||
}
|
||||
|
||||
message RequestNextHeadersMessage{
|
||||
}
|
||||
message RequestNextHeadersMessage {}
|
||||
|
||||
message DoneHeadersMessage{
|
||||
}
|
||||
message DoneHeadersMessage {}
|
||||
|
||||
message RequestRelayBlocksMessage{
|
||||
repeated Hash hashes = 1;
|
||||
}
|
||||
message RequestRelayBlocksMessage { repeated Hash hashes = 1; }
|
||||
|
||||
message RequestTransactionsMessage {
|
||||
repeated TransactionId ids = 1;
|
||||
}
|
||||
message RequestTransactionsMessage { repeated TransactionId ids = 1; }
|
||||
|
||||
message TransactionNotFoundMessage{
|
||||
TransactionId id = 1;
|
||||
}
|
||||
message TransactionNotFoundMessage { TransactionId id = 1; }
|
||||
|
||||
message InvRelayBlockMessage{
|
||||
Hash hash = 1;
|
||||
}
|
||||
message InvRelayBlockMessage { Hash hash = 1; }
|
||||
|
||||
message InvTransactionsMessage{
|
||||
repeated TransactionId ids = 1;
|
||||
}
|
||||
message InvTransactionsMessage { repeated TransactionId ids = 1; }
|
||||
|
||||
message PingMessage{
|
||||
uint64 nonce = 1;
|
||||
}
|
||||
message PingMessage { uint64 nonce = 1; }
|
||||
|
||||
message PongMessage{
|
||||
uint64 nonce = 1;
|
||||
}
|
||||
message PongMessage { uint64 nonce = 1; }
|
||||
|
||||
message VerackMessage{
|
||||
}
|
||||
message VerackMessage {}
|
||||
|
||||
message VersionMessage {
|
||||
uint32 protocolVersion = 1;
|
||||
@ -148,13 +120,9 @@ message VersionMessage{
|
||||
string network = 10;
|
||||
}
|
||||
|
||||
message RejectMessage{
|
||||
string reason = 1;
|
||||
}
|
||||
message RejectMessage { string reason = 1; }
|
||||
|
||||
message RequestPruningPointUTXOSetMessage{
|
||||
Hash pruningPointHash = 1;
|
||||
}
|
||||
message RequestPruningPointUTXOSetMessage { Hash pruningPointHash = 1; }
|
||||
|
||||
message PruningPointUtxoSetChunkMessage {
|
||||
repeated OutpointAndUtxoEntryPair outpointAndUtxoEntryPairs = 1;
|
||||
@ -172,18 +140,13 @@ message UtxoEntry {
|
||||
bool isCoinbase = 4;
|
||||
}
|
||||
|
||||
message RequestNextPruningPointUtxoSetChunkMessage {
|
||||
}
|
||||
message RequestNextPruningPointUtxoSetChunkMessage {}
|
||||
|
||||
message DonePruningPointUtxoSetChunksMessage {
|
||||
}
|
||||
message DonePruningPointUtxoSetChunksMessage {}
|
||||
|
||||
message RequestIBDBlocksMessage{
|
||||
repeated Hash hashes = 1;
|
||||
}
|
||||
message RequestIBDBlocksMessage { repeated Hash hashes = 1; }
|
||||
|
||||
message UnexpectedPruningPointMessage{
|
||||
}
|
||||
message UnexpectedPruningPointMessage {}
|
||||
|
||||
message IbdBlockLocatorMessage {
|
||||
Hash targetHash = 1;
|
||||
@ -195,31 +158,22 @@ message RequestIBDChainBlockLocatorMessage{
|
||||
Hash highHash = 2;
|
||||
}
|
||||
|
||||
message IbdChainBlockLocatorMessage {
|
||||
repeated Hash blockLocatorHashes = 1;
|
||||
}
|
||||
message IbdChainBlockLocatorMessage { repeated Hash blockLocatorHashes = 1; }
|
||||
|
||||
message RequestAnticoneMessage {
|
||||
Hash blockHash = 1;
|
||||
Hash contextHash = 2;
|
||||
}
|
||||
|
||||
message IbdBlockLocatorHighestHashMessage {
|
||||
Hash highestHash = 1;
|
||||
}
|
||||
message IbdBlockLocatorHighestHashMessage { Hash highestHash = 1; }
|
||||
|
||||
message IbdBlockLocatorHighestHashNotFoundMessage {
|
||||
}
|
||||
message IbdBlockLocatorHighestHashNotFoundMessage {}
|
||||
|
||||
message BlockHeadersMessage {
|
||||
repeated BlockHeader blockHeaders = 1;
|
||||
}
|
||||
message BlockHeadersMessage { repeated BlockHeader blockHeaders = 1; }
|
||||
|
||||
message RequestPruningPointAndItsAnticoneMessage {
|
||||
}
|
||||
message RequestPruningPointAndItsAnticoneMessage {}
|
||||
|
||||
message RequestNextPruningPointAndItsAnticoneBlocksMessage{
|
||||
}
|
||||
message RequestNextPruningPointAndItsAnticoneBlocksMessage {}
|
||||
|
||||
message BlockWithTrustedDataMessage {
|
||||
BlockMessage block = 1;
|
||||
@ -257,26 +211,19 @@ message BluesAnticoneSizes {
|
||||
uint32 anticoneSize = 2;
|
||||
}
|
||||
|
||||
message DoneBlocksWithTrustedDataMessage {
|
||||
}
|
||||
message DoneBlocksWithTrustedDataMessage {}
|
||||
|
||||
message PruningPointsMessage {
|
||||
repeated BlockHeader headers = 1;
|
||||
}
|
||||
message PruningPointsMessage { repeated BlockHeader headers = 1; }
|
||||
|
||||
message RequestPruningPointProofMessage {
|
||||
}
|
||||
message RequestPruningPointProofMessage {}
|
||||
|
||||
message PruningPointProofMessage {
|
||||
repeated PruningPointProofHeaderArray headers = 1;
|
||||
}
|
||||
|
||||
message PruningPointProofHeaderArray {
|
||||
repeated BlockHeader headers = 1;
|
||||
}
|
||||
message PruningPointProofHeaderArray { repeated BlockHeader headers = 1; }
|
||||
|
||||
message ReadyMessage {
|
||||
}
|
||||
message ReadyMessage {}
|
||||
|
||||
message BlockWithTrustedDataV4Message {
|
||||
BlockMessage block = 1;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,14 @@
|
||||
// RPC-related types. Request messages, response messages, and dependant types.
|
||||
//
|
||||
// Clients are expected to build RequestMessages and wrap them in KaspadMessage. (see messages.proto)
|
||||
// Clients are expected to build RequestMessages and wrap them in KaspadMessage.
|
||||
// (see messages.proto)
|
||||
//
|
||||
// Having received a RequestMessage, (wrapped in a KaspadMessage) the RPC server will respond with a
|
||||
// ResponseMessage (likewise wrapped in a KaspadMessage) respective to the original RequestMessage.
|
||||
// Having received a RequestMessage, (wrapped in a KaspadMessage) the RPC server
|
||||
// will respond with a ResponseMessage (likewise wrapped in a KaspadMessage)
|
||||
// respective to the original RequestMessage.
|
||||
//
|
||||
// **IMPORTANT:** This API is a work in progress and is subject to break between versions.
|
||||
// **IMPORTANT:** This API is a work in progress and is subject to break between
|
||||
// versions.
|
||||
//
|
||||
syntax = "proto3";
|
||||
package protowire;
|
||||
@ -14,10 +17,9 @@ option go_package = "github.com/kaspanet/kaspad/protowire";
|
||||
|
||||
// RPCError represents a generic non-internal error.
|
||||
//
|
||||
// Receivers of any ResponseMessage are expected to check whether its error field is not null.
|
||||
message RPCError{
|
||||
string message = 1;
|
||||
}
|
||||
// Receivers of any ResponseMessage are expected to check whether its error
|
||||
// field is not null.
|
||||
message RPCError { string message = 1; }
|
||||
|
||||
message RpcBlock {
|
||||
RpcBlockHeader header = 1;
|
||||
@ -40,9 +42,7 @@ message RpcBlockHeader {
|
||||
uint64 blueScore = 13;
|
||||
}
|
||||
|
||||
message RpcBlockLevelParents {
|
||||
repeated string parentHashes = 1;
|
||||
}
|
||||
message RpcBlockLevelParents { repeated string parentHashes = 1; }
|
||||
|
||||
message RpcBlockVerboseData {
|
||||
string hash = 1;
|
||||
@ -66,6 +66,7 @@ message RpcTransaction {
|
||||
uint64 gas = 6;
|
||||
string payload = 8;
|
||||
RpcTransactionVerboseData verboseData = 9;
|
||||
uint64 mass = 10;
|
||||
}
|
||||
|
||||
message RpcTransactionInput {
|
||||
@ -107,19 +108,18 @@ message RpcTransactionVerboseData{
|
||||
uint64 blockTime = 14;
|
||||
}
|
||||
|
||||
message RpcTransactionInputVerboseData{
|
||||
}
|
||||
message RpcTransactionInputVerboseData {}
|
||||
|
||||
message RpcTransactionOutputVerboseData {
|
||||
string scriptPublicKeyType = 5;
|
||||
string scriptPublicKeyAddress = 6;
|
||||
}
|
||||
|
||||
// GetCurrentNetworkRequestMessage requests the network kaspad is currently running against.
|
||||
// GetCurrentNetworkRequestMessage requests the network kaspad is currently
|
||||
// running against.
|
||||
//
|
||||
// Possible networks are: Mainnet, Testnet, Simnet, Devnet
|
||||
message GetCurrentNetworkRequestMessage{
|
||||
}
|
||||
message GetCurrentNetworkRequestMessage {}
|
||||
|
||||
message GetCurrentNetworkResponseMessage {
|
||||
string currentNetwork = 1;
|
||||
@ -127,7 +127,8 @@ message GetCurrentNetworkResponseMessage{
|
||||
}
|
||||
|
||||
// SubmitBlockRequestMessage requests to submit a block into the DAG.
|
||||
// Blocks are generally expected to have been generated using the getBlockTemplate call.
|
||||
// Blocks are generally expected to have been generated using the
|
||||
// getBlockTemplate call.
|
||||
//
|
||||
// See: GetBlockTemplateRequestMessage
|
||||
message SubmitBlockRequestMessage {
|
||||
@ -146,7 +147,8 @@ message SubmitBlockResponseMessage{
|
||||
}
|
||||
|
||||
// GetBlockTemplateRequestMessage requests a current block template.
|
||||
// Callers are expected to solve the block template and submit it using the submitBlock call
|
||||
// Callers are expected to solve the block template and submit it using the
|
||||
// submitBlock call
|
||||
//
|
||||
// See: SubmitBlockRequestMessage
|
||||
message GetBlockTemplateRequestMessage {
|
||||
@ -159,36 +161,32 @@ message GetBlockTemplateResponseMessage{
|
||||
RpcBlock block = 3;
|
||||
|
||||
// Whether kaspad thinks that it's synced.
|
||||
// Callers are discouraged (but not forbidden) from solving blocks when kaspad is not synced.
|
||||
// That is because when kaspad isn't in sync with the rest of the network there's a high
|
||||
// chance the block will never be accepted, thus the solving effort would have been wasted.
|
||||
// Callers are discouraged (but not forbidden) from solving blocks when kaspad
|
||||
// is not synced. That is because when kaspad isn't in sync with the rest of
|
||||
// the network there's a high chance the block will never be accepted, thus
|
||||
// the solving effort would have been wasted.
|
||||
bool isSynced = 2;
|
||||
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// NotifyBlockAddedRequestMessage registers this connection for blockAdded notifications.
|
||||
// NotifyBlockAddedRequestMessage registers this connection for blockAdded
|
||||
// notifications.
|
||||
//
|
||||
// See: BlockAddedNotificationMessage
|
||||
message NotifyBlockAddedRequestMessage{
|
||||
}
|
||||
message NotifyBlockAddedRequestMessage {}
|
||||
|
||||
message NotifyBlockAddedResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message NotifyBlockAddedResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// BlockAddedNotificationMessage is sent whenever a blocks has been added (NOT accepted)
|
||||
// into the DAG.
|
||||
// BlockAddedNotificationMessage is sent whenever a blocks has been added (NOT
|
||||
// accepted) into the DAG.
|
||||
//
|
||||
// See: NotifyBlockAddedRequestMessage
|
||||
message BlockAddedNotificationMessage{
|
||||
RpcBlock block = 3;
|
||||
}
|
||||
message BlockAddedNotificationMessage { RpcBlock block = 3; }
|
||||
|
||||
// GetPeerAddressesRequestMessage requests the list of known kaspad addresses in the
|
||||
// current network. (mainnet, testnet, etc.)
|
||||
message GetPeerAddressesRequestMessage{
|
||||
}
|
||||
// GetPeerAddressesRequestMessage requests the list of known kaspad addresses in
|
||||
// the current network. (mainnet, testnet, etc.)
|
||||
message GetPeerAddressesRequestMessage {}
|
||||
|
||||
message GetPeerAddressesResponseMessage {
|
||||
repeated GetPeerAddressesKnownAddressMessage addresses = 1;
|
||||
@ -196,22 +194,19 @@ message GetPeerAddressesResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
message GetPeerAddressesKnownAddressMessage {
|
||||
string Addr = 1;
|
||||
}
|
||||
message GetPeerAddressesKnownAddressMessage { string Addr = 1; }
|
||||
|
||||
// GetSelectedTipHashRequestMessage requests the hash of the current virtual's
|
||||
// selected parent.
|
||||
message GetSelectedTipHashRequestMessage{
|
||||
}
|
||||
message GetSelectedTipHashRequestMessage {}
|
||||
|
||||
message GetSelectedTipHashResponseMessage {
|
||||
string selectedTipHash = 1;
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// GetMempoolEntryRequestMessage requests information about a specific transaction
|
||||
// in the mempool.
|
||||
// GetMempoolEntryRequestMessage requests information about a specific
|
||||
// transaction in the mempool.
|
||||
message GetMempoolEntryRequestMessage {
|
||||
// The transaction's TransactionID.
|
||||
string txId = 1;
|
||||
@ -225,8 +220,8 @@ message GetMempoolEntryResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// GetMempoolEntriesRequestMessage requests information about all the transactions
|
||||
// currently in the mempool.
|
||||
// GetMempoolEntriesRequestMessage requests information about all the
|
||||
// transactions currently in the mempool.
|
||||
message GetMempoolEntriesRequestMessage {
|
||||
bool includeOrphanPool = 1;
|
||||
bool filterTransactionPool = 2;
|
||||
@ -244,10 +239,9 @@ message MempoolEntry{
|
||||
bool isOrphan = 4;
|
||||
}
|
||||
|
||||
// GetConnectedPeerInfoRequestMessage requests information about all the p2p peers
|
||||
// currently connected to this kaspad.
|
||||
message GetConnectedPeerInfoRequestMessage{
|
||||
}
|
||||
// GetConnectedPeerInfoRequestMessage requests information about all the p2p
|
||||
// peers currently connected to this kaspad.
|
||||
message GetConnectedPeerInfoRequestMessage {}
|
||||
|
||||
message GetConnectedPeerInfoResponseMessage {
|
||||
repeated GetConnectedPeerInfoMessage infos = 1;
|
||||
@ -285,9 +279,7 @@ message AddPeerRequestMessage{
|
||||
bool isPermanent = 2;
|
||||
}
|
||||
|
||||
message AddPeerResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message AddPeerResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// SubmitTransactionRequestMessage submits a transaction to the mempool
|
||||
message SubmitTransactionRequestMessage {
|
||||
@ -302,7 +294,8 @@ message SubmitTransactionResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// NotifyVirtualSelectedParentChainChangedRequestMessage registers this connection for virtualSelectedParentChainChanged notifications.
|
||||
// NotifyVirtualSelectedParentChainChangedRequestMessage registers this
|
||||
// connection for virtualSelectedParentChainChanged notifications.
|
||||
//
|
||||
// See: VirtualSelectedParentChainChangedNotificationMessage
|
||||
message NotifyVirtualSelectedParentChainChangedRequestMessage {
|
||||
@ -313,8 +306,8 @@ message NotifyVirtualSelectedParentChainChangedResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// VirtualSelectedParentChainChangedNotificationMessage is sent whenever the DAG's selected parent
|
||||
// chain had changed.
|
||||
// VirtualSelectedParentChainChangedNotificationMessage is sent whenever the
|
||||
// DAG's selected parent chain had changed.
|
||||
//
|
||||
// See: NotifyVirtualSelectedParentChainChangedRequestMessage
|
||||
message VirtualSelectedParentChainChangedNotificationMessage {
|
||||
@ -324,7 +317,8 @@ message VirtualSelectedParentChainChangedNotificationMessage{
|
||||
// The chain blocks that were added, in low-to-high order
|
||||
repeated string addedChainBlockHashes = 3;
|
||||
|
||||
// Will be filled only if `includeAcceptedTransactionIds = true` in the notify request.
|
||||
// Will be filled only if `includeAcceptedTransactionIds = true` in the notify
|
||||
// request.
|
||||
repeated AcceptedTransactionIds acceptedTransactionIds = 2;
|
||||
}
|
||||
|
||||
@ -345,17 +339,15 @@ message GetBlockResponseMessage{
|
||||
// GetSubnetworkRequestMessage requests information about a specific subnetwork
|
||||
//
|
||||
// Currently unimplemented
|
||||
message GetSubnetworkRequestMessage{
|
||||
string subnetworkId = 1;
|
||||
}
|
||||
message GetSubnetworkRequestMessage { string subnetworkId = 1; }
|
||||
|
||||
message GetSubnetworkResponseMessage {
|
||||
uint64 gasLimit = 1;
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// GetVirtualSelectedParentChainFromBlockRequestMessage requests the virtual selected
|
||||
// parent chain from some startHash to this kaspad's current virtual
|
||||
// GetVirtualSelectedParentChainFromBlockRequestMessage requests the virtual
|
||||
// selected parent chain from some startHash to this kaspad's current virtual
|
||||
message GetVirtualSelectedParentChainFromBlockRequestMessage {
|
||||
string startHash = 1;
|
||||
bool includeAcceptedTransactionIds = 2;
|
||||
@ -374,14 +366,15 @@ message GetVirtualSelectedParentChainFromBlockResponseMessage{
|
||||
repeated string addedChainBlockHashes = 3;
|
||||
|
||||
// The transactions accepted by each block in addedChainBlockHashes.
|
||||
// Will be filled only if `includeAcceptedTransactionIds = true` in the request.
|
||||
// Will be filled only if `includeAcceptedTransactionIds = true` in the
|
||||
// request.
|
||||
repeated AcceptedTransactionIds acceptedTransactionIds = 2;
|
||||
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// GetBlocksRequestMessage requests blocks between a certain block lowHash up to this
|
||||
// kaspad's current virtual.
|
||||
// GetBlocksRequestMessage requests blocks between a certain block lowHash up to
|
||||
// this kaspad's current virtual.
|
||||
message GetBlocksRequestMessage {
|
||||
string lowHash = 1;
|
||||
bool includeBlocks = 2;
|
||||
@ -394,10 +387,9 @@ message GetBlocksResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// GetBlockCountRequestMessage requests the current number of blocks in this kaspad.
|
||||
// Note that this number may decrease as pruning occurs.
|
||||
message GetBlockCountRequestMessage{
|
||||
}
|
||||
// GetBlockCountRequestMessage requests the current number of blocks in this
|
||||
// kaspad. Note that this number may decrease as pruning occurs.
|
||||
message GetBlockCountRequestMessage {}
|
||||
|
||||
message GetBlockCountResponseMessage {
|
||||
uint64 blockCount = 1;
|
||||
@ -405,10 +397,9 @@ message GetBlockCountResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// GetBlockDagInfoRequestMessage requests general information about the current state
|
||||
// of this kaspad's DAG.
|
||||
message GetBlockDagInfoRequestMessage{
|
||||
}
|
||||
// GetBlockDagInfoRequestMessage requests general information about the current
|
||||
// state of this kaspad's DAG.
|
||||
message GetBlockDagInfoRequestMessage {}
|
||||
|
||||
message GetBlockDagInfoResponseMessage {
|
||||
string networkName = 1;
|
||||
@ -423,36 +414,24 @@ message GetBlockDagInfoResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
message ResolveFinalityConflictRequestMessage{
|
||||
string finalityBlockHash = 1;
|
||||
}
|
||||
message ResolveFinalityConflictRequestMessage { string finalityBlockHash = 1; }
|
||||
|
||||
message ResolveFinalityConflictResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message ResolveFinalityConflictResponseMessage { RPCError error = 1000; }
|
||||
|
||||
message NotifyFinalityConflictsRequestMessage{
|
||||
}
|
||||
message NotifyFinalityConflictsRequestMessage {}
|
||||
|
||||
message NotifyFinalityConflictsResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message NotifyFinalityConflictsResponseMessage { RPCError error = 1000; }
|
||||
|
||||
message FinalityConflictNotificationMessage{
|
||||
string violatingBlockHash = 1;
|
||||
}
|
||||
message FinalityConflictNotificationMessage { string violatingBlockHash = 1; }
|
||||
|
||||
message FinalityConflictResolvedNotificationMessage {
|
||||
string finalityBlockHash = 1;
|
||||
}
|
||||
|
||||
// ShutDownRequestMessage shuts down this kaspad.
|
||||
message ShutDownRequestMessage{
|
||||
}
|
||||
message ShutDownRequestMessage {}
|
||||
|
||||
message ShutDownResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message ShutDownResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// GetHeadersRequestMessage requests headers between the given startHash and the
|
||||
// current virtual, up to the given limit.
|
||||
@ -467,8 +446,8 @@ message GetHeadersResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// NotifyUtxosChangedRequestMessage registers this connection for utxoChanged notifications
|
||||
// for the given addresses.
|
||||
// NotifyUtxosChangedRequestMessage registers this connection for utxoChanged
|
||||
// notifications for the given addresses.
|
||||
//
|
||||
// This call is only available when this kaspad was started with `--utxoindex`
|
||||
//
|
||||
@ -477,11 +456,10 @@ message NotifyUtxosChangedRequestMessage {
|
||||
repeated string addresses = 1; // Leave empty to get all updates
|
||||
}
|
||||
|
||||
message NotifyUtxosChangedResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message NotifyUtxosChangedResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// UtxosChangedNotificationMessage is sent whenever the UTXO index had been updated.
|
||||
// UtxosChangedNotificationMessage is sent whenever the UTXO index had been
|
||||
// updated.
|
||||
//
|
||||
// See: NotifyUtxosChangedRequestMessage
|
||||
message UtxosChangedNotificationMessage {
|
||||
@ -495,8 +473,8 @@ message UtxosByAddressesEntry {
|
||||
RpcUtxoEntry utxoEntry = 3;
|
||||
}
|
||||
|
||||
// StopNotifyingUtxosChangedRequestMessage unregisters this connection for utxoChanged notifications
|
||||
// for the given addresses.
|
||||
// StopNotifyingUtxosChangedRequestMessage unregisters this connection for
|
||||
// utxoChanged notifications for the given addresses.
|
||||
//
|
||||
// This call is only available when this kaspad was started with `--utxoindex`
|
||||
//
|
||||
@ -505,16 +483,13 @@ message StopNotifyingUtxosChangedRequestMessage {
|
||||
repeated string addresses = 1;
|
||||
}
|
||||
|
||||
message StopNotifyingUtxosChangedResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message StopNotifyingUtxosChangedResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// GetUtxosByAddressesRequestMessage requests all current UTXOs for the given kaspad addresses
|
||||
// GetUtxosByAddressesRequestMessage requests all current UTXOs for the given
|
||||
// kaspad addresses
|
||||
//
|
||||
// This call is only available when this kaspad was started with `--utxoindex`
|
||||
message GetUtxosByAddressesRequestMessage {
|
||||
repeated string addresses = 1;
|
||||
}
|
||||
message GetUtxosByAddressesRequestMessage { repeated string addresses = 1; }
|
||||
|
||||
message GetUtxosByAddressesResponseMessage {
|
||||
repeated UtxosByAddressesEntry entries = 1;
|
||||
@ -522,12 +497,11 @@ message GetUtxosByAddressesResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// GetBalanceByAddressRequest returns the total balance in unspent transactions towards a given address
|
||||
// GetBalanceByAddressRequest returns the total balance in unspent transactions
|
||||
// towards a given address
|
||||
//
|
||||
// This call is only available when this kaspad was started with `--utxoindex`
|
||||
message GetBalanceByAddressRequestMessage {
|
||||
string address = 1;
|
||||
}
|
||||
message GetBalanceByAddressRequestMessage { string address = 1; }
|
||||
|
||||
message GetBalanceByAddressResponseMessage {
|
||||
uint64 balance = 1;
|
||||
@ -535,9 +509,7 @@ message GetBalanceByAddressResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
message GetBalancesByAddressesRequestMessage {
|
||||
repeated string addresses = 1;
|
||||
}
|
||||
message GetBalancesByAddressesRequestMessage { repeated string addresses = 1; }
|
||||
|
||||
message BalancesByAddressEntry {
|
||||
string address = 1;
|
||||
@ -552,10 +524,9 @@ message GetBalancesByAddressesResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// GetVirtualSelectedParentBlueScoreRequestMessage requests the blue score of the current selected parent
|
||||
// of the virtual block.
|
||||
message GetVirtualSelectedParentBlueScoreRequestMessage {
|
||||
}
|
||||
// GetVirtualSelectedParentBlueScoreRequestMessage requests the blue score of
|
||||
// the current selected parent of the virtual block.
|
||||
message GetVirtualSelectedParentBlueScoreRequestMessage {}
|
||||
|
||||
message GetVirtualSelectedParentBlueScoreResponseMessage {
|
||||
uint64 blueScore = 1;
|
||||
@ -563,19 +534,18 @@ message GetVirtualSelectedParentBlueScoreResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// NotifyVirtualSelectedParentBlueScoreChangedRequestMessage registers this connection for
|
||||
// virtualSelectedParentBlueScoreChanged notifications.
|
||||
// NotifyVirtualSelectedParentBlueScoreChangedRequestMessage registers this
|
||||
// connection for virtualSelectedParentBlueScoreChanged notifications.
|
||||
//
|
||||
// See: VirtualSelectedParentBlueScoreChangedNotificationMessage
|
||||
message NotifyVirtualSelectedParentBlueScoreChangedRequestMessage {
|
||||
}
|
||||
message NotifyVirtualSelectedParentBlueScoreChangedRequestMessage {}
|
||||
|
||||
message NotifyVirtualSelectedParentBlueScoreChangedResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// VirtualSelectedParentBlueScoreChangedNotificationMessage is sent whenever the blue score
|
||||
// of the virtual's selected parent changes.
|
||||
// VirtualSelectedParentBlueScoreChangedNotificationMessage is sent whenever the
|
||||
// blue score of the virtual's selected parent changes.
|
||||
//
|
||||
// See NotifyVirtualSelectedParentBlueScoreChangedRequestMessage
|
||||
message VirtualSelectedParentBlueScoreChangedNotificationMessage {
|
||||
@ -586,12 +556,9 @@ message VirtualSelectedParentBlueScoreChangedNotificationMessage {
|
||||
// virtualDaaScoreChanged notifications.
|
||||
//
|
||||
// See: VirtualDaaScoreChangedNotificationMessage
|
||||
message NotifyVirtualDaaScoreChangedRequestMessage {
|
||||
}
|
||||
message NotifyVirtualDaaScoreChangedRequestMessage {}
|
||||
|
||||
message NotifyVirtualDaaScoreChangedResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message NotifyVirtualDaaScoreChangedResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// VirtualDaaScoreChangedNotificationMessage is sent whenever the DAA score
|
||||
// of the virtual changes.
|
||||
@ -607,55 +574,42 @@ message VirtualDaaScoreChangedNotificationMessage {
|
||||
// This call is only available when this kaspad was started with `--utxoindex`
|
||||
//
|
||||
// See: NotifyPruningPointUTXOSetOverrideResponseMessage
|
||||
message NotifyPruningPointUTXOSetOverrideRequestMessage {
|
||||
}
|
||||
|
||||
message NotifyPruningPointUTXOSetOverrideRequestMessage {}
|
||||
|
||||
message NotifyPruningPointUTXOSetOverrideResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// PruningPointUTXOSetOverrideNotificationMessage is sent whenever the UTXO index
|
||||
// resets due to pruning point change via IBD.
|
||||
// PruningPointUTXOSetOverrideNotificationMessage is sent whenever the UTXO
|
||||
// index resets due to pruning point change via IBD.
|
||||
//
|
||||
// See NotifyPruningPointUTXOSetOverrideRequestMessage
|
||||
message PruningPointUTXOSetOverrideNotificationMessage {
|
||||
}
|
||||
message PruningPointUTXOSetOverrideNotificationMessage {}
|
||||
|
||||
// StopNotifyingPruningPointUTXOSetOverrideRequestMessage unregisters this connection for
|
||||
// pruning point UTXO set override notifications.
|
||||
// StopNotifyingPruningPointUTXOSetOverrideRequestMessage unregisters this
|
||||
// connection for pruning point UTXO set override notifications.
|
||||
//
|
||||
// This call is only available when this kaspad was started with `--utxoindex`
|
||||
//
|
||||
// See: PruningPointUTXOSetOverrideNotificationMessage
|
||||
message StopNotifyingPruningPointUTXOSetOverrideRequestMessage {
|
||||
}
|
||||
message StopNotifyingPruningPointUTXOSetOverrideRequestMessage {}
|
||||
|
||||
message StopNotifyingPruningPointUTXOSetOverrideResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
// BanRequestMessage bans the given ip.
|
||||
message BanRequestMessage{
|
||||
string ip = 1;
|
||||
}
|
||||
message BanRequestMessage { string ip = 1; }
|
||||
|
||||
message BanResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message BanResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// UnbanRequestMessage unbans the given ip.
|
||||
message UnbanRequestMessage{
|
||||
string ip = 1;
|
||||
}
|
||||
message UnbanRequestMessage { string ip = 1; }
|
||||
|
||||
message UnbanResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message UnbanResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// GetInfoRequestMessage returns info about the node.
|
||||
message GetInfoRequestMessage{
|
||||
}
|
||||
message GetInfoRequestMessage {}
|
||||
|
||||
message GetInfoResponseMessage {
|
||||
string p2pId = 1;
|
||||
@ -680,19 +634,15 @@ message EstimateNetworkHashesPerSecondResponseMessage{
|
||||
// NewBlockTemplate notifications.
|
||||
//
|
||||
// See: NewBlockTemplateNotificationMessage
|
||||
message NotifyNewBlockTemplateRequestMessage {
|
||||
}
|
||||
message NotifyNewBlockTemplateRequestMessage {}
|
||||
|
||||
message NotifyNewBlockTemplateResponseMessage {
|
||||
RPCError error = 1000;
|
||||
}
|
||||
message NotifyNewBlockTemplateResponseMessage { RPCError error = 1000; }
|
||||
|
||||
// NewBlockTemplateNotificationMessage is sent whenever a new updated block template is
|
||||
// available for miners.
|
||||
// NewBlockTemplateNotificationMessage is sent whenever a new updated block
|
||||
// template is available for miners.
|
||||
//
|
||||
// See NotifyNewBlockTemplateRequestMessage
|
||||
message NewBlockTemplateNotificationMessage {
|
||||
}
|
||||
message NewBlockTemplateNotificationMessage {}
|
||||
|
||||
message MempoolEntryByAddress {
|
||||
string address = 1;
|
||||
@ -712,18 +662,18 @@ message GetMempoolEntriesByAddressesResponseMessage{
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
message GetCoinSupplyRequestMessage{
|
||||
}
|
||||
message GetCoinSupplyRequestMessage {}
|
||||
|
||||
message GetCoinSupplyResponseMessage {
|
||||
uint64 maxSompi = 1; // note: this is a hard coded maxSupply, actual maxSupply is expected to deviate by upto -5%, but cannot be measured exactly.
|
||||
uint64 maxSompi =
|
||||
1; // note: this is a hard coded maxSupply, actual maxSupply is expected
|
||||
// to deviate by upto -5%, but cannot be measured exactly.
|
||||
uint64 circulatingSompi = 2;
|
||||
|
||||
RPCError error = 1000;
|
||||
}
|
||||
|
||||
message PingRequestMessage{
|
||||
}
|
||||
message PingRequestMessage {}
|
||||
|
||||
message PingResponseMessage { RPCError error = 1000; }
|
||||
|
||||
|
@ -110,6 +110,7 @@ func (x *RpcTransaction) toAppMessage() (*appmessage.RPCTransaction, error) {
|
||||
SubnetworkID: x.SubnetworkId,
|
||||
Gas: x.Gas,
|
||||
Payload: x.Payload,
|
||||
Mass: x.Mass,
|
||||
VerboseData: verboseData,
|
||||
}, nil
|
||||
}
|
||||
@ -138,6 +139,7 @@ func (x *RpcTransaction) fromAppMessage(transaction *appmessage.RPCTransaction)
|
||||
SubnetworkId: transaction.SubnetworkID,
|
||||
Gas: transaction.Gas,
|
||||
Payload: transaction.Payload,
|
||||
Mass: transaction.Mass,
|
||||
VerboseData: verboseData,
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user