Some checks failed
ci/woodpecker/pr/server-audit Pipeline was successful
ci/woodpecker/pr/server-lint Pipeline failed
ci/woodpecker/pr/server-vet Pipeline failed
ci/woodpecker/pr/server-test Pipeline was successful
ci/woodpecker/push/server-audit Pipeline was successful
ci/woodpecker/push/server-lint Pipeline failed
ci/woodpecker/push/server-vet Pipeline failed
ci/woodpecker/push/server-test Pipeline was successful
75 lines
2.0 KiB
Protocol Buffer
75 lines
2.0 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package arbiter.shared.evm;
|
|
|
|
import "google/protobuf/empty.proto";
|
|
|
|
message EtherTransferMeaning {
|
|
bytes to = 1; // 20-byte Ethereum address
|
|
bytes value = 2; // U256 as big-endian bytes
|
|
}
|
|
|
|
message TokenInfo {
|
|
string symbol = 1;
|
|
bytes address = 2; // 20-byte Ethereum address
|
|
uint64 chain_id = 3;
|
|
}
|
|
|
|
// Mirror of token_transfers::Meaning
|
|
message TokenTransferMeaning {
|
|
TokenInfo token = 1;
|
|
bytes to = 2; // 20-byte Ethereum address
|
|
bytes value = 3; // U256 as big-endian bytes
|
|
}
|
|
|
|
// Mirror of policies::SpecificMeaning
|
|
message SpecificMeaning {
|
|
oneof meaning {
|
|
EtherTransferMeaning ether_transfer = 1;
|
|
TokenTransferMeaning token_transfer = 2;
|
|
}
|
|
}
|
|
|
|
message GasLimitExceededViolation {
|
|
optional bytes max_gas_fee_per_gas = 1; // U256 as big-endian bytes
|
|
optional bytes max_priority_fee_per_gas = 2; // U256 as big-endian bytes
|
|
}
|
|
|
|
message EvalViolation {
|
|
message ChainIdMismatch {
|
|
uint64 expected = 1;
|
|
uint64 actual = 2;
|
|
}
|
|
oneof kind {
|
|
bytes invalid_target = 1; // 20-byte Ethereum address
|
|
GasLimitExceededViolation gas_limit_exceeded = 2;
|
|
google.protobuf.Empty rate_limit_exceeded = 3;
|
|
google.protobuf.Empty volumetric_limit_exceeded = 4;
|
|
google.protobuf.Empty invalid_time = 5;
|
|
google.protobuf.Empty invalid_transaction_type = 6;
|
|
|
|
ChainIdMismatch chain_id_mismatch = 7;
|
|
}
|
|
}
|
|
|
|
// Transaction was classified but no grant covers it
|
|
message NoMatchingGrantError {
|
|
SpecificMeaning meaning = 1;
|
|
}
|
|
|
|
// Transaction was classified and a grant was found, but constraints were violated
|
|
message PolicyViolationsError {
|
|
SpecificMeaning meaning = 1;
|
|
repeated EvalViolation violations = 2;
|
|
}
|
|
|
|
// top-level error returned when transaction evaluation fails
|
|
message TransactionEvalError {
|
|
oneof kind {
|
|
google.protobuf.Empty contract_creation_not_supported = 1;
|
|
google.protobuf.Empty unsupported_transaction_type = 2;
|
|
NoMatchingGrantError no_matching_grant = 3;
|
|
PolicyViolationsError policy_violations = 4;
|
|
}
|
|
}
|