[NOD-244] Don't validate subnetwork registry transactions when they are being registered (#354)

This commit is contained in:
Ori Newman 2019-08-01 12:40:01 +03:00 committed by Svarog
parent 2147d16c1f
commit 54b681460d
2 changed files with 11 additions and 15 deletions

View File

@ -28,15 +28,12 @@ func newSubnetworkStore(db database.DB) *SubnetworkStore {
// subnetwork based on it.
// This function returns an error if one or more transactions are invalid
func registerSubnetworks(dbTx database.Tx, txs []*util.Tx) error {
validSubnetworkRegistryTxs := make([]*wire.MsgTx, 0)
subnetworkRegistryTxs := make([]*wire.MsgTx, 0)
for _, tx := range txs {
msgTx := tx.MsgTx()
if msgTx.SubnetworkID.IsEqual(subnetworkid.SubnetworkIDRegistry) {
err := validateSubnetworkRegistryTransaction(msgTx)
if err != nil {
return err
}
validSubnetworkRegistryTxs = append(validSubnetworkRegistryTxs, msgTx)
subnetworkRegistryTxs = append(subnetworkRegistryTxs, msgTx)
}
if subnetworkid.Less(subnetworkid.SubnetworkIDRegistry, &msgTx.SubnetworkID) {
@ -47,7 +44,7 @@ func registerSubnetworks(dbTx database.Tx, txs []*util.Tx) error {
}
}
for _, registryTx := range validSubnetworkRegistryTxs {
for _, registryTx := range subnetworkRegistryTxs {
subnetworkID, err := TxToSubnetworkID(registryTx)
if err != nil {
return err

View File

@ -216,6 +216,13 @@ func CheckTransactionSanity(tx *util.Tx, subnetworkID *subnetworkid.SubnetworkID
"registry subnetworks has gas > 0 ")
}
if msgTx.SubnetworkID.IsEqual(subnetworkid.SubnetworkIDRegistry) {
err := validateSubnetworkRegistryTransaction(msgTx)
if err != nil {
return err
}
}
if msgTx.SubnetworkID.IsEqual(subnetworkid.SubnetworkIDNative) &&
len(msgTx.Payload) > 0 {
@ -223,14 +230,6 @@ func CheckTransactionSanity(tx *util.Tx, subnetworkID *subnetworkid.SubnetworkID
"transaction in the native subnetwork includes a payload")
}
if msgTx.SubnetworkID.IsEqual(subnetworkid.SubnetworkIDRegistry) &&
len(msgTx.Payload) != 8 {
return ruleError(ErrInvalidPayload,
"transaction in the subnetwork registry include a payload "+
"with length != 8 bytes")
}
// If we are a partial node, only transactions on built in subnetworks
// or our own subnetwork may have a payload
isLocalNodeFull := subnetworkID == nil