eva_asm/instruction/
block.rs1use derive_more::Display;
4
5use crate::{
6 instruction::InstructionMeta,
7 opcode::{Mnemonic, OpCode},
8};
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
12#[display("{}", self.opcode())]
13pub struct BlockHash;
14
15impl InstructionMeta for BlockHash {
16 fn opcode(&self) -> OpCode {
17 OpCode::Known(Mnemonic::BLOCKHASH)
18 }
19}
20
21#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
23#[display("{}", self.opcode())]
24pub struct CoinBase;
25
26impl InstructionMeta for CoinBase {
27 fn opcode(&self) -> OpCode {
28 OpCode::Known(Mnemonic::COINBASE)
29 }
30}
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
34#[display("{}", self.opcode())]
35pub struct Timestamp;
36
37impl InstructionMeta for Timestamp {
38 fn opcode(&self) -> OpCode {
39 OpCode::Known(Mnemonic::TIMESTAMP)
40 }
41}
42
43#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
45#[display("{}", self.opcode())]
46pub struct Number;
47
48impl InstructionMeta for Number {
49 fn opcode(&self) -> OpCode {
50 OpCode::Known(Mnemonic::NUMBER)
51 }
52}
53
54#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
56#[display("{}", self.opcode())]
57pub struct PrevRandao;
58
59impl InstructionMeta for PrevRandao {
60 fn opcode(&self) -> OpCode {
61 OpCode::Known(Mnemonic::PREVRANDAO)
62 }
63}
64
65#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
67#[display("{}", self.opcode())]
68pub struct GasLimit;
69
70impl InstructionMeta for GasLimit {
71 fn opcode(&self) -> OpCode {
72 OpCode::Known(Mnemonic::GASLIMIT)
73 }
74}
75
76#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
78#[display("{}", self.opcode())]
79pub struct ChainId;
80
81impl InstructionMeta for ChainId {
82 fn opcode(&self) -> OpCode {
83 OpCode::Known(Mnemonic::CHAINID)
84 }
85}
86
87#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
89#[display("{}", self.opcode())]
90pub struct SelfBalance;
91
92impl InstructionMeta for SelfBalance {
93 fn opcode(&self) -> OpCode {
94 OpCode::Known(Mnemonic::SELFBALANCE)
95 }
96}
97
98#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
100#[display("{}", self.opcode())]
101pub struct BaseFee;
102
103impl InstructionMeta for BaseFee {
104 fn opcode(&self) -> OpCode {
105 OpCode::Known(Mnemonic::BASEFEE)
106 }
107}
108
109#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
111#[display("{}", self.opcode())]
112pub struct BlobHash;
113
114impl InstructionMeta for BlobHash {
115 fn opcode(&self) -> OpCode {
116 OpCode::Known(Mnemonic::BLOBHASH)
117 }
118}
119
120#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Display)]
122#[display("{}", self.opcode())]
123pub struct BlobBaseFee;
124
125impl InstructionMeta for BlobBaseFee {
126 fn opcode(&self) -> OpCode {
127 OpCode::Known(Mnemonic::BLOBBASEFEE)
128 }
129}