diff --git op-geth/core/state_transition.go CELO/core/state_transition.go
+
index a86e4c6d582d5a38fbd5a8473f0401a81e712b5c..289692ff34b42133d0aa7334f91fcabc546fc4c3 100644
--- op-geth/core/state_transition.go
+++ CELO/core/state_transition.go
@@ -22,10 +22,14 @@ "math"
@@ -1983,7 +1983,7 @@
+ // Celo additions
+
+ // FeeCurrency specifies the currency for gas fees.
-
+ // `nil` corresponds to Celo Gold (native currency).
+
+ // `nil` corresponds to CELO (native currency).
+ // All other values should correspond to ERC20 contract addresses.
+ FeeCurrency *common.Address
+ MaxFeeInFeeCurrency *big.Int // MaxFeeInFeeCurrency is the maximum fee that can be charged in the fee currency.
@@ -2007,7 +2007,7 @@
if baseFee != nil {
+ if tx.Type() == types.CeloDynamicFeeTxV2Type {
+ var err error
-
+ baseFee, err = exchange.ConvertGoldToCurrency(exchangeRates, msg.FeeCurrency, baseFee)
+
+ baseFee, err = exchange.ConvertCeloToCurrency(exchangeRates, msg.FeeCurrency, baseFee)
+ if err != nil {
+ return nil, err
+ }
@@ -2051,7 +2051,7 @@
+ // L1 data fee needs to be converted in fee currency
+ if st.msg.FeeCurrency != nil && l1Cost != nil {
+ // Existence of the fee currency has been checked in `preCheck`
-
+ l1Cost, _ = exchange.ConvertGoldToCurrency(st.evm.Context.ExchangeRates, st.msg.FeeCurrency, l1Cost)
+
+ l1Cost, _ = exchange.ConvertCeloToCurrency(st.evm.Context.ExchangeRates, st.msg.FeeCurrency, l1Cost)
}
}
+ if l1Cost != nil {
@@ -2155,7 +2155,7 @@
// This will panic if baseFee is nil, but basefee presence is verified
// as part of header validation.
- if msg.GasFeeCap.Cmp(st.evm.Context.BaseFee) < 0 {
-
+ baseFeeInFeeCurrency, err := exchange.ConvertGoldToCurrency(st.evm.Context.ExchangeRates, msg.FeeCurrency, st.evm.Context.BaseFee)
+
+ baseFeeInFeeCurrency, err := exchange.ConvertCeloToCurrency(st.evm.Context.ExchangeRates, msg.FeeCurrency, st.evm.Context.BaseFee)
+ if err != nil {
+ return fmt.Errorf("preCheck: %w", err)
+ }
@@ -2348,7 +2348,7 @@
+ }
+ } else {
+ if l1Cost != nil {
-
+ l1Cost, _ = exchange.ConvertGoldToCurrency(st.evm.Context.ExchangeRates, feeCurrency, l1Cost)
+
+ l1Cost, _ = exchange.ConvertCeloToCurrency(st.evm.Context.ExchangeRates, feeCurrency, l1Cost)
+ }
+ if err := contracts.CreditFees(st.evm, feeCurrency, from, st.evm.Context.Coinbase, feeHandlerAddress, params.OptimismL1FeeRecipient, refund, tipTxFee, baseTxFee, l1Cost); err != nil {
+ log.Error("Error crediting", "from", from, "coinbase", st.evm.Context.Coinbase, "feeHandler", feeHandlerAddress, "err", err)
@@ -2370,7 +2370,7 @@
+
+ if st.msg.FeeCurrency != nil {
+ // Existence of the fee currency has been checked in `preCheck`
-
+ baseFee, _ = exchange.ConvertGoldToCurrency(st.evm.Context.ExchangeRates, st.msg.FeeCurrency, baseFee)
+
+ baseFee, _ = exchange.ConvertCeloToCurrency(st.evm.Context.ExchangeRates, st.msg.FeeCurrency, baseFee)
+ }
+
+ return baseFee
@@ -2381,8 +2381,8 @@
-
diff --git op-geth/core/txpool/blobpool/blobpool.go CELO/core/txpool/blobpool/blobpool.go
+
diff --git op-geth/core/txpool/blobpool/blobpool.go CELO/core/txpool/blobpool/blobpool.go
index 15e5b8c2c4e55eaa0539cafb7647d37464e206dc..470cf7633b71f93fba44b65ef3e342cd166361e3 100644
--- op-geth/core/txpool/blobpool/blobpool.go
+++ CELO/core/txpool/blobpool/blobpool.go
@@ -2520,8 +2520,8 @@
-
diff --git op-geth/core/txpool/blobpool/celo_blobpool.go CELO/core/txpool/blobpool/celo_blobpool.go
+
diff --git op-geth/core/txpool/blobpool/celo_blobpool.go CELO/core/txpool/blobpool/celo_blobpool.go
new file mode 100644
index 0000000000000000000000000000000000000000..b3e4cc8cff28d52ed289a2189d7b964c4731e9d9
--- /dev/null
@@ -2584,8 +2584,8 @@
-
diff --git op-geth/core/txpool/celo_validation.go CELO/core/txpool/celo_validation.go
+
diff --git op-geth/core/txpool/celo_validation.go CELO/core/txpool/celo_validation.go
new file mode 100644
index 0000000000000000000000000000000000000000..280f5dc146632cc930eefda31844038b4b126db9
--- /dev/null
@@ -2692,8 +2692,8 @@
-
diff --git op-geth/core/txpool/legacypool/celo_legacypool.go CELO/core/txpool/legacypool/celo_legacypool.go
+
diff --git op-geth/core/txpool/legacypool/celo_legacypool.go CELO/core/txpool/legacypool/celo_legacypool.go
new file mode 100644
index 0000000000000000000000000000000000000000..847f2e09c5458c32a70172a2a230cb8ceee78439
--- /dev/null
@@ -2780,8 +2780,8 @@
-
diff --git op-geth/core/txpool/legacypool/celo_list.go CELO/core/txpool/legacypool/celo_list.go
+
diff --git op-geth/core/txpool/legacypool/celo_list.go CELO/core/txpool/legacypool/celo_list.go
new file mode 100644
index 0000000000000000000000000000000000000000..3884a772cf81b35458592a607c6d593bea7367e4
--- /dev/null
@@ -2953,8 +2953,8 @@
-
diff --git op-geth/core/txpool/legacypool/celo_list_test.go CELO/core/txpool/legacypool/celo_list_test.go
+
diff --git op-geth/core/txpool/legacypool/celo_list_test.go CELO/core/txpool/legacypool/celo_list_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..31b6741c3486a0b959fe1e0d9f784b2083f7cf2e
--- /dev/null
@@ -3198,8 +3198,8 @@
-
diff --git op-geth/core/txpool/legacypool/legacypool.go CELO/core/txpool/legacypool/legacypool.go
+
diff --git op-geth/core/txpool/legacypool/legacypool.go CELO/core/txpool/legacypool/legacypool.go
index 161e3e84018f3a0ffd8e8fc32fb025d7bffb7a37..0facd296737efba983b9162904dca3ef0b04862a 100644
--- op-geth/core/txpool/legacypool/legacypool.go
+++ CELO/core/txpool/legacypool/legacypool.go
@@ -3527,8 +3527,8 @@
-
diff --git op-geth/core/txpool/legacypool/legacypool_test.go CELO/core/txpool/legacypool/legacypool_test.go
+
diff --git op-geth/core/txpool/legacypool/legacypool_test.go CELO/core/txpool/legacypool/legacypool_test.go
index 427f95096d3dba3c7d64b6ddcd8ea548fbf1d49c..b9913fa4d432a9a21906033dafe05be11ebd5d18 100644
--- op-geth/core/txpool/legacypool/legacypool_test.go
+++ CELO/core/txpool/legacypool/legacypool_test.go
@@ -3590,8 +3590,8 @@
-
diff --git op-geth/core/txpool/legacypool/list.go CELO/core/txpool/legacypool/list.go
+
diff --git op-geth/core/txpool/legacypool/list.go CELO/core/txpool/legacypool/list.go
index 380001cabc96ec9f0ffc8e0142a7014ee0e8412e..65a8ae83d48da1b2192f48e8ac209e5d5d671438 100644
--- op-geth/core/txpool/legacypool/list.go
+++ CELO/core/txpool/legacypool/list.go
@@ -3870,8 +3870,8 @@
-
diff --git op-geth/core/txpool/legacypool/list_test.go CELO/core/txpool/legacypool/list_test.go
+
diff --git op-geth/core/txpool/legacypool/list_test.go CELO/core/txpool/legacypool/list_test.go
index 9f341a7f2026a9ef79944f542fbde08d558c21e2..55537e5965f1b33e905d4c6e933e8d500342ab31 100644
--- op-geth/core/txpool/legacypool/list_test.go
+++ CELO/core/txpool/legacypool/list_test.go
@@ -3967,8 +3967,8 @@
-
diff --git op-geth/core/txpool/subpool.go CELO/core/txpool/subpool.go
+
diff --git op-geth/core/txpool/subpool.go CELO/core/txpool/subpool.go
index 9881ed1b8f960f0a61b7666a5a22412fa0228779..5e0c850fd01cc70eaa271c7fb050126593aeeff3 100644
--- op-geth/core/txpool/subpool.go
+++ CELO/core/txpool/subpool.go
@@ -4021,8 +4021,8 @@
-
diff --git op-geth/core/txpool/validation.go CELO/core/txpool/validation.go
+
diff --git op-geth/core/txpool/validation.go CELO/core/txpool/validation.go
index 0cf916228b7e7a131643c7828cd19f8256fb2750..e1afac06ab9f9c2b6232e42427b4332d4a1b771b 100644
--- op-geth/core/txpool/validation.go
+++ CELO/core/txpool/validation.go
@@ -4195,8 +4195,8 @@
-
diff --git op-geth/core/types/celo_dynamic_fee_tx.go CELO/core/types/celo_dynamic_fee_tx.go
+
diff --git op-geth/core/types/celo_dynamic_fee_tx.go CELO/core/types/celo_dynamic_fee_tx.go
new file mode 100644
index 0000000000000000000000000000000000000000..f1fab1f4d8ce6e078311d6335e6fb117404cf019
--- /dev/null
@@ -4377,8 +4377,8 @@
-
diff --git op-geth/core/types/celo_transaction_signing.go CELO/core/types/celo_transaction_signing.go
+
diff --git op-geth/core/types/celo_transaction_signing.go CELO/core/types/celo_transaction_signing.go
new file mode 100644
index 0000000000000000000000000000000000000000..823d9212d52cf6687625c889a872808777bc1fbb
--- /dev/null
@@ -4541,8 +4541,8 @@
-
diff --git op-geth/core/types/receipt.go CELO/core/types/receipt.go
+
diff --git op-geth/core/types/receipt.go CELO/core/types/receipt.go
index 4bc83bf988f84dbe37f3fc0a04577c2838f9363a..53448142499c6814b3896d18324ce80776fe0e25 100644
--- op-geth/core/types/receipt.go
+++ CELO/core/types/receipt.go
@@ -4793,8 +4793,8 @@
-
diff --git op-geth/core/types/receipt_test.go CELO/core/types/receipt_test.go
+
diff --git op-geth/core/types/receipt_test.go CELO/core/types/receipt_test.go
index 1156f3e94f2d176d8eb1eb936ba3741527450a17..58c67f3790a4b8cdf0feecf025595af0c188d3b6 100644
--- op-geth/core/types/receipt_test.go
+++ CELO/core/types/receipt_test.go
@@ -4913,8 +4913,8 @@
-
diff --git op-geth/core/types/transaction.go CELO/core/types/transaction.go
+
diff --git op-geth/core/types/transaction.go CELO/core/types/transaction.go
index 95ecac5fae971e8096865aea25b9955dc34e0ad5..63f313734f3e973c5f59fbb44040c1c5540a484b 100644
--- op-geth/core/types/transaction.go
+++ CELO/core/types/transaction.go
@@ -5003,8 +5003,8 @@
-
diff --git op-geth/core/types/transaction_marshalling.go CELO/core/types/transaction_marshalling.go
+
diff --git op-geth/core/types/transaction_marshalling.go CELO/core/types/transaction_marshalling.go
index 253e4f03de82c53bfe2b48037a728d6397e1a6ec..3b68418d86349b3b69e570ee6412a5f2dfee0ace 100644
--- op-geth/core/types/transaction_marshalling.go
+++ CELO/core/types/transaction_marshalling.go
@@ -5080,8 +5080,8 @@
-
diff --git op-geth/core/types/transaction_signing.go CELO/core/types/transaction_signing.go
+
diff --git op-geth/core/types/transaction_signing.go CELO/core/types/transaction_signing.go
index 0ffe8c92d770bdb938ce10a0a253404cbc32824b..faa3c3b960a43d43676821eae96c9d45ff68649e 100644
--- op-geth/core/types/transaction_signing.go
+++ CELO/core/types/transaction_signing.go
@@ -5145,8 +5145,8 @@
-
diff --git op-geth/core/types/tx_legacy.go CELO/core/types/tx_legacy.go
+
diff --git op-geth/core/types/tx_legacy.go CELO/core/types/tx_legacy.go
index bcb65c39349a3a1bef78948af48a30a1e14c71ba..a5e30522b8593a5f656a2f4d7a09fa5aaf13b8fe 100644
--- op-geth/core/types/tx_legacy.go
+++ CELO/core/types/tx_legacy.go
@@ -5228,7 +5228,7 @@
-
+
Celo contracts
@@ -5250,7 +5250,7 @@
-
+
Contract bindings are necessary for token duality and gas currencies.
The corresponding contracts are included to generate the bindings and test these features.
@@ -5259,8 +5259,8 @@
-
diff --git op-geth/contracts/celo/README.md CELO/contracts/celo/README.md
+
diff --git op-geth/contracts/celo/README.md CELO/contracts/celo/README.md
new file mode 100644
-
index 0000000000000000000000000000000000000000..191b0efbd0c0b78f8d5113303ad5acdb073a5d04
+
index 0000000000000000000000000000000000000000..dfe33b96b83074eeb9f08cc58eb4459973df17de
--- /dev/null
+++ CELO/contracts/celo/README.md
@@ -0,0 +1,19 @@
@@ -5305,7 +5305,7 @@
+
+The contracts bytecode is used to generate the genesis block in `geth --dev`
+mode while the ABI is used to generate the contract bindings in `abigen`. The
-
+bindings are necessary to access the Registry and GoldToken to support Celo
+
+bindings are necessary to access the CeloToken to support Celo
+features like token duality.
+
+## How to update to newer contracts
@@ -5324,8 +5324,8 @@
-
diff --git op-geth/contracts/celo/abigen/CeloToken.go CELO/contracts/celo/abigen/CeloToken.go
+
diff --git op-geth/contracts/celo/abigen/CeloToken.go CELO/contracts/celo/abigen/CeloToken.go
new file mode 100644
index 0000000000000000000000000000000000000000..d7721571a4b12561ad023768ed83514dee662592
--- /dev/null
@@ -7300,8 +7300,8 @@
-
diff --git op-geth/contracts/celo/abigen/FeeCurrency.go CELO/contracts/celo/abigen/FeeCurrency.go
+
diff --git op-geth/contracts/celo/abigen/FeeCurrency.go CELO/contracts/celo/abigen/FeeCurrency.go
new file mode 100644
index 0000000000000000000000000000000000000000..64b51d54185afdb0838eda5b80a8c9728b3e56e3
--- /dev/null
@@ -8168,8 +8168,8 @@
-
diff --git op-geth/contracts/celo/abigen/FeeCurrencyDirectory.go CELO/contracts/celo/abigen/FeeCurrencyDirectory.go
+
diff --git op-geth/contracts/celo/abigen/FeeCurrencyDirectory.go CELO/contracts/celo/abigen/FeeCurrencyDirectory.go
new file mode 100644
index 0000000000000000000000000000000000000000..d79c9bba15b1259761880cdeded76868b1c7108f
--- /dev/null
@@ -8508,8 +8508,8 @@
-
diff --git op-geth/contracts/celo/abigen/FeeCurrencyWhitelist.go CELO/contracts/celo/abigen/FeeCurrencyWhitelist.go
+
diff --git op-geth/contracts/celo/abigen/FeeCurrencyWhitelist.go CELO/contracts/celo/abigen/FeeCurrencyWhitelist.go
new file mode 100644
index 0000000000000000000000000000000000000000..53c9606ae41e2ff24065d2ea3dc2e86eb2fa4136
--- /dev/null
@@ -9419,8 +9419,8 @@
-
diff --git op-geth/contracts/celo/abigen/MockOracle.go CELO/contracts/celo/abigen/MockOracle.go
+
diff --git op-geth/contracts/celo/abigen/MockOracle.go CELO/contracts/celo/abigen/MockOracle.go
new file mode 100644
index 0000000000000000000000000000000000000000..64697ac92cac5643069ee8bd9bcbb71f10b8da58
--- /dev/null
@@ -9699,8 +9699,8 @@
-
diff --git op-geth/contracts/celo/abigen/MockSortedOracles.go CELO/contracts/celo/abigen/MockSortedOracles.go
+
diff --git op-geth/contracts/celo/abigen/MockSortedOracles.go CELO/contracts/celo/abigen/MockSortedOracles.go
new file mode 100644
index 0000000000000000000000000000000000000000..edb35523e7f1f538b46a55709b105add99f13313
--- /dev/null
@@ -10229,8 +10229,8 @@
-
diff --git op-geth/contracts/celo/abigen/Registry.go CELO/contracts/celo/abigen/Registry.go
+
diff --git op-geth/contracts/celo/abigen/Registry.go CELO/contracts/celo/abigen/Registry.go
new file mode 100644
index 0000000000000000000000000000000000000000..374a7428a133665fd10bf21a19cdc747cdf600dd
--- /dev/null
@@ -11095,8 +11095,8 @@
-
diff --git op-geth/contracts/celo/abigen/SortedOracles.go CELO/contracts/celo/abigen/SortedOracles.go
+
diff --git op-geth/contracts/celo/abigen/SortedOracles.go CELO/contracts/celo/abigen/SortedOracles.go
new file mode 100644
index 0000000000000000000000000000000000000000..14761904972e4aea2ac397a27656d1c65feb5d28
--- /dev/null
@@ -13197,8 +13197,8 @@
-
diff --git op-geth/contracts/celo/celo.go CELO/contracts/celo/celo.go
+
diff --git op-geth/contracts/celo/celo.go CELO/contracts/celo/celo.go
new file mode 100644
index 0000000000000000000000000000000000000000..3bde6d9b0e66d909de9fea90487a1cc2c0b4c901
--- /dev/null
@@ -13263,8 +13263,8 @@
-
diff --git op-geth/contracts/celo/compiled/FeeCurrency.abi CELO/contracts/celo/compiled/FeeCurrency.abi
+
diff --git op-geth/contracts/celo/compiled/FeeCurrency.abi CELO/contracts/celo/compiled/FeeCurrency.abi
new file mode 100644
index 0000000000000000000000000000000000000000..279f6f754ab9192a2b8eb5f90a3aec6639c5e551
--- /dev/null
@@ -13663,8 +13663,8 @@
-
diff --git op-geth/contracts/celo/compiled/FeeCurrency.bin-runtime CELO/contracts/celo/compiled/FeeCurrency.bin-runtime
+
diff --git op-geth/contracts/celo/compiled/FeeCurrency.bin-runtime CELO/contracts/celo/compiled/FeeCurrency.bin-runtime
new file mode 100644
index 0000000000000000000000000000000000000000..236826b180339f87deee821e74369a225b3d85db
--- /dev/null
@@ -13710,8 +13710,8 @@
-
diff --git op-geth/contracts/celo/compiled/FeeCurrencyDirectory.bin-runtime CELO/contracts/celo/compiled/FeeCurrencyDirectory.bin-runtime
+
diff --git op-geth/contracts/celo/compiled/FeeCurrencyDirectory.bin-runtime CELO/contracts/celo/compiled/FeeCurrencyDirectory.bin-runtime
new file mode 100644
index 0000000000000000000000000000000000000000..79b9c0731e3d8bb39908819291fcd1f31d5d2ce0
--- /dev/null
@@ -13757,8 +13757,8 @@
-
diff --git op-geth/contracts/celo/compiled/GoldToken.abi CELO/contracts/celo/compiled/GoldToken.abi
+
diff --git op-geth/contracts/celo/compiled/GoldToken.abi CELO/contracts/celo/compiled/GoldToken.abi
new file mode 100644
index 0000000000000000000000000000000000000000..d0d8926dac24f7446be224c6d0494d6bf799c8cd
--- /dev/null
@@ -14472,8 +14472,8 @@
-
diff --git op-geth/contracts/celo/compiled/GoldToken.bin-runtime CELO/contracts/celo/compiled/GoldToken.bin-runtime
+
diff --git op-geth/contracts/celo/compiled/GoldToken.bin-runtime CELO/contracts/celo/compiled/GoldToken.bin-runtime
new file mode 100644
index 0000000000000000000000000000000000000000..6417be2913ecbddc6540400a74de1524bf696bc1
--- /dev/null
@@ -14519,8 +14519,8 @@
-
diff --git op-geth/contracts/celo/compiled/IFeeCurrencyDirectory.abi CELO/contracts/celo/compiled/IFeeCurrencyDirectory.abi
+
diff --git op-geth/contracts/celo/compiled/IFeeCurrencyDirectory.abi CELO/contracts/celo/compiled/IFeeCurrencyDirectory.abi
new file mode 100644
index 0000000000000000000000000000000000000000..90e071e994d161090a9347dfc7cf32ad918153d7
--- /dev/null
@@ -14635,8 +14635,8 @@
-
diff --git op-geth/contracts/celo/compiled/MockOracle.abi CELO/contracts/celo/compiled/MockOracle.abi
+
diff --git op-geth/contracts/celo/compiled/MockOracle.abi CELO/contracts/celo/compiled/MockOracle.abi
new file mode 100644
index 0000000000000000000000000000000000000000..76bb6049a808f525e8460cd3ee1547e64de327c4
--- /dev/null
@@ -14730,8 +14730,8 @@
-
diff --git op-geth/contracts/celo/compiled/MockOracle.bin-runtime CELO/contracts/celo/compiled/MockOracle.bin-runtime
+
diff --git op-geth/contracts/celo/compiled/MockOracle.bin-runtime CELO/contracts/celo/compiled/MockOracle.bin-runtime
new file mode 100644
index 0000000000000000000000000000000000000000..a82a67d31ce2048d3b6579467d5fbc8ec83df59f
--- /dev/null
@@ -14777,8 +14777,8 @@
-
diff --git op-geth/contracts/celo/compiled/update.sh CELO/contracts/celo/compiled/update.sh
+
diff --git op-geth/contracts/celo/compiled/update.sh CELO/contracts/celo/compiled/update.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d0f32423e162f3c0a479ef29dd41472c8566b148
--- /dev/null
@@ -14850,8 +14850,8 @@
-
diff --git op-geth/core/celo_genesis.go CELO/core/celo_genesis.go
+
diff --git op-geth/core/celo_genesis.go CELO/core/celo_genesis.go
new file mode 100644
index 0000000000000000000000000000000000000000..66dc89869d57e0f60429734406a27518ecbee461
--- /dev/null
@@ -15067,7 +15067,7 @@
-
+
Chain config
@@ -15089,15 +15089,15 @@
-
+
-
diff --git op-geth/core/genesis.go CELO/core/genesis.go
+
diff --git op-geth/core/genesis.go CELO/core/genesis.go
index 934eb6e234d06291af5537530038015bc67a6086..55a6e08aeaaeb9e53aee69429d46f533e1c85a54 100644
--- op-geth/core/genesis.go
+++ CELO/core/genesis.go
@@ -15208,8 +15208,8 @@
-
diff --git op-geth/params/config.go CELO/params/config.go
+
diff --git op-geth/params/config.go CELO/params/config.go
index b3a96a96af5d8aaad615faeac05c5e155dbfe2e2..823ace9fb287f4de2f303a9c2aa9866f2118a0ba 100644
--- op-geth/params/config.go
+++ CELO/params/config.go
@@ -15353,8 +15353,8 @@
-
diff --git op-geth/params/protocol_params.go CELO/params/protocol_params.go
+
diff --git op-geth/params/protocol_params.go CELO/params/protocol_params.go
index 5e2a0632afbeeb1ae2341791f076615cea6fe092..88fb80ba6084b6b0c3596756c806112f1ea28c9b 100644
--- op-geth/params/protocol_params.go
+++ CELO/params/protocol_params.go
@@ -15412,7 +15412,7 @@
-
+
E2E tests
@@ -15434,15 +15434,15 @@
-
+
-
diff --git op-geth/e2e_test/.gitignore CELO/e2e_test/.gitignore
+
diff --git op-geth/e2e_test/.gitignore CELO/e2e_test/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..d93e90bc6936c69f4976f29030cd041295ba09cb
--- /dev/null
@@ -15490,8 +15490,8 @@
-
diff --git op-geth/e2e_test/debug-fee-currency/DebugFeeCurrency.sol CELO/e2e_test/debug-fee-currency/DebugFeeCurrency.sol
+
diff --git op-geth/e2e_test/debug-fee-currency/DebugFeeCurrency.sol CELO/e2e_test/debug-fee-currency/DebugFeeCurrency.sol
new file mode 100644
index 0000000000000000000000000000000000000000..e5d6e1ce3ab14941d79d0cf628e296af1e512f86
--- /dev/null
@@ -16287,8 +16287,8 @@
-
diff --git op-geth/e2e_test/debug-fee-currency/deploy_and_send_tx.sh CELO/e2e_test/debug-fee-currency/deploy_and_send_tx.sh
+
diff --git op-geth/e2e_test/debug-fee-currency/deploy_and_send_tx.sh CELO/e2e_test/debug-fee-currency/deploy_and_send_tx.sh
new file mode 100755
index 0000000000000000000000000000000000000000..76470fa53a1de90fb71677d1278231178b872a1f
--- /dev/null
@@ -16346,8 +16346,8 @@
-
diff --git op-geth/e2e_test/js-tests/Makefile CELO/e2e_test/js-tests/Makefile
+
diff --git op-geth/e2e_test/js-tests/Makefile CELO/e2e_test/js-tests/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..69555e594b4419c7c012ddc56d5403d88f4cd142
--- /dev/null
@@ -16394,8 +16394,8 @@
-
diff --git op-geth/e2e_test/js-tests/package-lock.json CELO/e2e_test/js-tests/package-lock.json
+
diff --git op-geth/e2e_test/js-tests/package-lock.json CELO/e2e_test/js-tests/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..e9d3322a249d2178182cfe11c5742afe1e7432d0
--- /dev/null
@@ -17549,8 +17549,8 @@
-
diff --git op-geth/e2e_test/js-tests/package.json CELO/e2e_test/js-tests/package.json
+
diff --git op-geth/e2e_test/js-tests/package.json CELO/e2e_test/js-tests/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..1867f08694bdc7ec40af0ef8bfecd71c19dd45da
--- /dev/null
@@ -17612,8 +17612,8 @@
-
diff --git op-geth/e2e_test/js-tests/send_tx.mjs CELO/e2e_test/js-tests/send_tx.mjs
+
diff --git op-geth/e2e_test/js-tests/send_tx.mjs CELO/e2e_test/js-tests/send_tx.mjs
new file mode 100755
index 0000000000000000000000000000000000000000..5a9b46950271fa7d8f0e38c2cccfd68e5a2c3696
--- /dev/null
@@ -17702,8 +17702,8 @@
-
diff --git op-geth/e2e_test/js-tests/test_ethers_tx.mjs CELO/e2e_test/js-tests/test_ethers_tx.mjs
+
diff --git op-geth/e2e_test/js-tests/test_ethers_tx.mjs CELO/e2e_test/js-tests/test_ethers_tx.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..3faf2d9cdf29fd0ca19d44803c77e0bd4e0895d1
--- /dev/null
@@ -17800,8 +17800,8 @@
-
diff --git op-geth/e2e_test/js-tests/test_viem_tx.mjs CELO/e2e_test/js-tests/test_viem_tx.mjs
+
diff --git op-geth/e2e_test/js-tests/test_viem_tx.mjs CELO/e2e_test/js-tests/test_viem_tx.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..91d5e425a2cf23a00e4a8d97ac826e907396fe53
--- /dev/null
@@ -18122,8 +18122,8 @@
-
diff --git op-geth/e2e_test/run_all_tests.sh CELO/e2e_test/run_all_tests.sh
+
diff --git op-geth/e2e_test/run_all_tests.sh CELO/e2e_test/run_all_tests.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1a87baa83a86191be612b0415c7e5a023e6e981e
--- /dev/null
@@ -18230,8 +18230,8 @@
-
diff --git op-geth/e2e_test/shared.sh CELO/e2e_test/shared.sh
+
diff --git op-geth/e2e_test/shared.sh CELO/e2e_test/shared.sh
new file mode 100644
index 0000000000000000000000000000000000000000..87d85dc24d690cf7bb1cd35d298befd74c9bf55e
--- /dev/null
@@ -18296,8 +18296,8 @@
-
diff --git op-geth/e2e_test/test_base_fee_recipient.sh CELO/e2e_test/test_base_fee_recipient.sh
+
diff --git op-geth/e2e_test/test_base_fee_recipient.sh CELO/e2e_test/test_base_fee_recipient.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ec22198f88fbd9c83b9fd475bfacb09a3a6fe92d
--- /dev/null
@@ -18359,8 +18359,8 @@
-
diff --git op-geth/e2e_test/test_ethers_tx.sh CELO/e2e_test/test_ethers_tx.sh
+
diff --git op-geth/e2e_test/test_ethers_tx.sh CELO/e2e_test/test_ethers_tx.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8c94521b73ab4e314f2b965fa9896b4f39d538cd
--- /dev/null
@@ -18412,8 +18412,8 @@
-
diff --git op-geth/e2e_test/test_fee_currency_fails_on_credit.sh CELO/e2e_test/test_fee_currency_fails_on_credit.sh
+
diff --git op-geth/e2e_test/test_fee_currency_fails_on_credit.sh CELO/e2e_test/test_fee_currency_fails_on_credit.sh
new file mode 100755
index 0000000000000000000000000000000000000000..137ea6c2273ce381d7b39581f75c7554ad116891
--- /dev/null
@@ -18470,8 +18470,8 @@
-
diff --git op-geth/e2e_test/test_fee_currency_fails_on_debit.sh CELO/e2e_test/test_fee_currency_fails_on_debit.sh
+
diff --git op-geth/e2e_test/test_fee_currency_fails_on_debit.sh CELO/e2e_test/test_fee_currency_fails_on_debit.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0b4e4438f39b7ba93bf5f64cd75bc3a5b289b560
--- /dev/null
@@ -18526,8 +18526,8 @@
-
diff --git op-geth/e2e_test/test_token_duality.sh CELO/e2e_test/test_token_duality.sh
+
diff --git op-geth/e2e_test/test_token_duality.sh CELO/e2e_test/test_token_duality.sh
new file mode 100755
index 0000000000000000000000000000000000000000..355afef8c7ca71f39454d1e452c60d2046b6ebf8
--- /dev/null
@@ -18584,8 +18584,8 @@
-
diff --git op-geth/e2e_test/test_viem_tx.sh CELO/e2e_test/test_viem_tx.sh
+
diff --git op-geth/e2e_test/test_viem_tx.sh CELO/e2e_test/test_viem_tx.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0e4d001eda411d32e1bbca49ed3e98fbe72dc23d
--- /dev/null
@@ -18648,7 +18648,7 @@
-
+
Other changes
@@ -18670,15 +18670,15 @@
-
+
-
+
.gitignore
@@ -18694,7 +18694,7 @@
@@ -18711,7 +18711,7 @@
-
diff --git op-geth/.gitignore CELO/.gitignore
+
diff --git op-geth/.gitignore CELO/.gitignore
index 3f27cdc00f0746c28f7e79285a50425f435bd0ef..3196c8484819fab224b735ea82e44396c4d3d0a8 100644
--- op-geth/.gitignore
+++ CELO/.gitignore
@@ -18734,8 +18734,8 @@
-
diff --git op-geth/accounts/external/backend.go CELO/accounts/external/backend.go
+
diff --git op-geth/accounts/external/backend.go CELO/accounts/external/backend.go
index 6f1581f9b806deacf12a5667c24feaff003ed2f6..28c6dccabbf834ef22425ac7d368f461caf108e7 100644
--- op-geth/accounts/external/backend.go
+++ CELO/accounts/external/backend.go
@@ -18787,8 +18787,8 @@
-
diff --git op-geth/cmd/evm/internal/t8ntool/execution.go CELO/cmd/evm/internal/t8ntool/execution.go
+
diff --git op-geth/cmd/evm/internal/t8ntool/execution.go CELO/cmd/evm/internal/t8ntool/execution.go
index cb975054c1b284a91baeced4af7c7eeecea568f3..026b5ad159048e0dd906689b66d51ff7dc63a0bd 100644
--- op-geth/cmd/evm/internal/t8ntool/execution.go
+++ CELO/cmd/evm/internal/t8ntool/execution.go
@@ -18840,8 +18840,8 @@
-
diff --git op-geth/cmd/evm/internal/t8ntool/transaction.go CELO/cmd/evm/internal/t8ntool/transaction.go
+
diff --git op-geth/cmd/evm/internal/t8ntool/transaction.go CELO/cmd/evm/internal/t8ntool/transaction.go
index 8533b78637696ccc1461e6177e937ca1f6be69a1..1ee2d5142a04c631d61e03657f0cd544ee5c31be 100644
--- op-geth/cmd/evm/internal/t8ntool/transaction.go
+++ CELO/cmd/evm/internal/t8ntool/transaction.go
@@ -18893,8 +18893,8 @@
-
diff --git op-geth/cmd/geth/config.go CELO/cmd/geth/config.go
+
diff --git op-geth/cmd/geth/config.go CELO/cmd/geth/config.go
index 6a4dbc2c2e6b0b77910d17a6c453c64fd454a02f..cd6ba95013b3c3bfd52835c8e993a5f29b4a84ec 100644
--- op-geth/cmd/geth/config.go
+++ CELO/cmd/geth/config.go
@@ -18949,8 +18949,8 @@
-
diff --git op-geth/cmd/geth/main.go CELO/cmd/geth/main.go
+
diff --git op-geth/cmd/geth/main.go CELO/cmd/geth/main.go
index d987364ca16887d5cea85d88a3e07e3080d82390..e91ca41a21aeb7c1a7a9a1dc4b237488059a9f9e 100644
--- op-geth/cmd/geth/main.go
+++ CELO/cmd/geth/main.go
@@ -19010,8 +19010,8 @@
-
diff --git op-geth/cmd/utils/flags.go CELO/cmd/utils/flags.go
+
diff --git op-geth/cmd/utils/flags.go CELO/cmd/utils/flags.go
index f4ecd35287b786583f4330f146ac6ff5c9fd50de..960f598bf7cba85a20a7423c9e8cf2171e2fc8f7 100644
--- op-geth/cmd/utils/flags.go
+++ CELO/cmd/utils/flags.go
@@ -19133,8 +19133,8 @@
-
diff --git op-geth/common/celo_types.go CELO/common/celo_types.go
+
diff --git op-geth/common/celo_types.go CELO/common/celo_types.go
new file mode 100644
index 0000000000000000000000000000000000000000..3ae8a2935a506072527f061b05bcf613c7f9c836
--- /dev/null
@@ -19223,8 +19223,8 @@
-
diff --git op-geth/common/celo_types_test.go CELO/common/celo_types_test.go
+
diff --git op-geth/common/celo_types_test.go CELO/common/celo_types_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..4ecfe47182d85f2cae00eaed175a4b7610d8ed39
--- /dev/null
@@ -19316,8 +19316,8 @@
-
diff --git op-geth/common/exchange/rates.go CELO/common/exchange/rates.go
+
diff --git op-geth/common/exchange/rates.go CELO/common/exchange/rates.go
new file mode 100644
-
index 0000000000000000000000000000000000000000..cf95cd8767ce6173a164b59b2a4266d8735d1ead
+
index 0000000000000000000000000000000000000000..996e1a3c45d80f0878e2f96014abdff3c3cf953f
--- /dev/null
+++ CELO/common/exchange/rates.go
@@ -0,0 +1,164 @@
@@ -19376,18 +19376,18 @@
+
+// ConvertCurrency does an exchange conversion from currencyFrom to currencyTo of the value given.
+func ConvertCurrency(exchangeRates common.ExchangeRates, val1 *big.Int, currencyFrom *common.Address, currencyTo *common.Address) *big.Int {
-
+ goldAmount, err := ConvertCurrencyToGold(exchangeRates, val1, currencyFrom)
+
+ celoAmount, err := ConvertCurrencyToCelo(exchangeRates, val1, currencyFrom)
+ if err != nil {
-
+ log.Error("Error trying to convert from currency to gold.", "value", val1, "fromCurrency", currencyFrom.Hex())
+
+ log.Error("Error trying to convert from currency to CELO.", "value", val1, "fromCurrency", currencyFrom.Hex())
+ }
-
+ toAmount, err := ConvertGoldToCurrency(exchangeRates, currencyTo, goldAmount)
+
+ toAmount, err := ConvertCeloToCurrency(exchangeRates, currencyTo, celoAmount)
+ if err != nil {
-
+ log.Error("Error trying to convert from gold to currency.", "value", goldAmount, "toCurrency", currencyTo.Hex())
+
+ log.Error("Error trying to convert from CELO to currency.", "value", celoAmount, "toCurrency", currencyTo.Hex())
+ }
+ return toAmount
+}
+
-
+func ConvertCurrencyToGold(exchangeRates common.ExchangeRates, currencyAmount *big.Int, feeCurrency *common.Address) (*big.Int, error) {
+
+func ConvertCurrencyToCelo(exchangeRates common.ExchangeRates, currencyAmount *big.Int, feeCurrency *common.Address) (*big.Int, error) {
+ if feeCurrency == nil {
+ return currencyAmount, nil
+ }
@@ -19400,15 +19400,15 @@
+ return new(big.Int).Div(new(big.Int).Mul(currencyAmount, exchangeRate.Denom()), exchangeRate.Num()), nil
+}
+
-
+func ConvertGoldToCurrency(exchangeRates common.ExchangeRates, feeCurrency *common.Address, goldAmount *big.Int) (*big.Int, error) {
+
+func ConvertCeloToCurrency(exchangeRates common.ExchangeRates, feeCurrency *common.Address, celoAmount *big.Int) (*big.Int, error) {
+ if feeCurrency == nil {
-
+ return goldAmount, nil
+
+ return celoAmount, nil
+ }
+ exchangeRate, ok := exchangeRates[*feeCurrency]
+ if !ok {
+ return nil, fmt.Errorf("could not convert from native to fee currency (fee-currency=%s): %w ", feeCurrency, ErrNonWhitelistedFeeCurrency)
+ }
-
+ return new(big.Int).Div(new(big.Int).Mul(goldAmount, exchangeRate.Num()), exchangeRate.Denom()), nil
+
+ return new(big.Int).Div(new(big.Int).Mul(celoAmount, exchangeRate.Num()), exchangeRate.Denom()), nil
+}
+
+func getRate(exchangeRates common.ExchangeRates, feeCurrency *common.Address) (*big.Rat, error) {
@@ -19508,7 +19508,7 @@
+ return baseFee
+ }
+ // Not found, calculate
-
+ calculatedBaseFee, err := ConvertGoldToCurrency(rf.Rates, currency, rf.nativeBaseFee)
+
+ calculatedBaseFee, err := ConvertCeloToCurrency(rf.Rates, currency, rf.nativeBaseFee)
+ if err != nil {
+ // Should never happen: error lvl log line
+ log.Error("BaseFee requested for non whitelisted currency",
@@ -19526,8 +19526,8 @@
-
diff --git op-geth/common/exchange/rates_test.go CELO/common/exchange/rates_test.go
+
diff --git op-geth/common/exchange/rates_test.go CELO/common/exchange/rates_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..3cda8eb530ff2a9df75aebad4619d76c52aab558
--- /dev/null
@@ -19743,8 +19743,8 @@
-
diff --git op-geth/consensus/misc/eip1559/eip1559.go CELO/consensus/misc/eip1559/eip1559.go
+
diff --git op-geth/consensus/misc/eip1559/eip1559.go CELO/consensus/misc/eip1559/eip1559.go
index a66298af692fbb7bb477847452aff5937af55c83..d21e41654dd453ea226d0999a4bf97fc19d4b5d8 100644
--- op-geth/consensus/misc/eip1559/eip1559.go
+++ CELO/consensus/misc/eip1559/eip1559.go
@@ -19800,8 +19800,8 @@
-
diff --git op-geth/contracts/addresses/addresses.go CELO/contracts/addresses/addresses.go
+
diff --git op-geth/contracts/addresses/addresses.go CELO/contracts/addresses/addresses.go
new file mode 100644
index 0000000000000000000000000000000000000000..9bc556252df9c615c6b2aa512ba49d6dae6f0d7e
--- /dev/null
@@ -19860,8 +19860,8 @@
-
diff --git op-geth/contracts/celo_backend.go CELO/contracts/celo_backend.go
+
diff --git op-geth/contracts/celo_backend.go CELO/contracts/celo_backend.go
new file mode 100644
index 0000000000000000000000000000000000000000..8d3817164a29e5fda6c36fcb311f712586001a3f
--- /dev/null
@@ -19977,8 +19977,8 @@
-
diff --git op-geth/contracts/read_only_statedb.go CELO/contracts/read_only_statedb.go
+
diff --git op-geth/contracts/read_only_statedb.go CELO/contracts/read_only_statedb.go
new file mode 100644
index 0000000000000000000000000000000000000000..146f544fa3e27b6671430e88819b92b4b11f2753
--- /dev/null
@@ -20154,8 +20154,8 @@
-
diff --git op-geth/core/bench_test.go CELO/core/bench_test.go
+
diff --git op-geth/core/bench_test.go CELO/core/bench_test.go
index 97713868a5473b49cc7b8d7a5fb5937d69e7d4b7..893758029f2fccfd3635f568270ca8b78513c9cb 100644
--- op-geth/core/bench_test.go
+++ CELO/core/bench_test.go
@@ -20207,8 +20207,8 @@
-
diff --git op-geth/core/celo_multi_gaspool.go CELO/core/celo_multi_gaspool.go
+
diff --git op-geth/core/celo_multi_gaspool.go CELO/core/celo_multi_gaspool.go
new file mode 100644
index 0000000000000000000000000000000000000000..6cec29a1c978264c893bd161ccb0d5073ab89593
--- /dev/null
@@ -20324,8 +20324,8 @@
-
diff --git op-geth/core/celo_multi_gaspool_test.go CELO/core/celo_multi_gaspool_test.go
+
diff --git op-geth/core/celo_multi_gaspool_test.go CELO/core/celo_multi_gaspool_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..ec79703329226c884779d53ece25c8edfbeba7ad
--- /dev/null
@@ -20508,8 +20508,8 @@
-
diff --git op-geth/core/error.go CELO/core/error.go
+
diff --git op-geth/core/error.go CELO/core/error.go
index 8c691b17ff761c541093a5de23db70edba74e5d7..49a644cc509409a2fe48c4f0934048d843681de0 100644
--- op-geth/core/error.go
+++ CELO/core/error.go
@@ -20560,8 +20560,8 @@
-
diff --git op-geth/core/gen_genesis.go CELO/core/gen_genesis.go
+
diff --git op-geth/core/gen_genesis.go CELO/core/gen_genesis.go
index 3a57ec65e8c35e151f4fe3b792a2d5b7290744a4..f4aec12026c290a42e50059db4afda1c62cc85d0 100644
--- op-geth/core/gen_genesis.go
+++ CELO/core/gen_genesis.go
@@ -20700,8 +20700,8 @@
-
diff --git op-geth/core/state/statedb.go CELO/core/state/statedb.go
+
diff --git op-geth/core/state/statedb.go CELO/core/state/statedb.go
index 9fc529b86b3be8dbdaf4509c97f12540fc835a53..fd4dbb65ba52315d1d82d4c75f8ff987cb03a1d0 100644
--- op-geth/core/state/statedb.go
+++ CELO/core/state/statedb.go
@@ -20761,8 +20761,8 @@
-
diff --git op-geth/core/state/statedb_test.go CELO/core/state/statedb_test.go
+
diff --git op-geth/core/state/statedb_test.go CELO/core/state/statedb_test.go
index cd86a7f4b67faa6f6bb393d9e7550be8e8effa6f..03c0ea82f61d91a80adffe317ef5b01e9b89b3d7 100644
--- op-geth/core/state/statedb_test.go
+++ CELO/core/state/statedb_test.go
@@ -20853,8 +20853,8 @@
-
diff --git op-geth/core/state_prefetcher.go CELO/core/state_prefetcher.go
+
diff --git op-geth/core/state_prefetcher.go CELO/core/state_prefetcher.go
index bb6835202b9758e49611f8da677ddee3edc346f1..45348979f64194fa9a584f9a1f8bb78e306c7812 100644
--- op-geth/core/state_prefetcher.go
+++ CELO/core/state_prefetcher.go
@@ -20906,8 +20906,8 @@
-
diff --git op-geth/core/state_processor_test.go CELO/core/state_processor_test.go
+
diff --git op-geth/core/state_processor_test.go CELO/core/state_processor_test.go
index 77efaede5886e8cc3e92e78be5739e784fd099c0..12a978b616a80dce94de4a836a52d9f8234b9abf 100644
--- op-geth/core/state_processor_test.go
+++ CELO/core/state_processor_test.go
@@ -20981,8 +20981,8 @@
-
diff --git op-geth/core/types/celo_block.go CELO/core/types/celo_block.go
+
diff --git op-geth/core/types/celo_block.go CELO/core/types/celo_block.go
new file mode 100644
index 0000000000000000000000000000000000000000..075c856087147209a568fd24e4ce647eadc115c5
--- /dev/null
@@ -21188,8 +21188,8 @@
-
diff --git op-geth/core/types/celo_denominated_tx.go CELO/core/types/celo_denominated_tx.go
+
diff --git op-geth/core/types/celo_denominated_tx.go CELO/core/types/celo_denominated_tx.go
new file mode 100644
index 0000000000000000000000000000000000000000..21ed9da5564d7ab1cebd75ca5ef1e5f94617d7dd
--- /dev/null
@@ -21353,8 +21353,8 @@
-
diff --git op-geth/core/types/celo_dynamic_fee_tx_v2.go CELO/core/types/celo_dynamic_fee_tx_v2.go
+
diff --git op-geth/core/types/celo_dynamic_fee_tx_v2.go CELO/core/types/celo_dynamic_fee_tx_v2.go
new file mode 100644
index 0000000000000000000000000000000000000000..45f83a5b70b97ce68f22c77400d81d74ba083703
--- /dev/null
@@ -21530,8 +21530,8 @@
-
diff --git op-geth/core/types/celo_receipt_test.go CELO/core/types/celo_receipt_test.go
+
diff --git op-geth/core/types/celo_receipt_test.go CELO/core/types/celo_receipt_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..297e8504ae269ce5ef8c6ab599019583c265db21
--- /dev/null
@@ -21679,8 +21679,8 @@
-
diff --git op-geth/core/types/celo_transaction.go CELO/core/types/celo_transaction.go
+
diff --git op-geth/core/types/celo_transaction.go CELO/core/types/celo_transaction.go
new file mode 100644
index 0000000000000000000000000000000000000000..bdad1f66300b456344c47e9aaaaac45dec6c5bfe
--- /dev/null
@@ -21845,8 +21845,8 @@
-
diff --git op-geth/core/types/celo_transaction_marshalling.go CELO/core/types/celo_transaction_marshalling.go
+
diff --git op-geth/core/types/celo_transaction_marshalling.go CELO/core/types/celo_transaction_marshalling.go
new file mode 100644
index 0000000000000000000000000000000000000000..109342a3668a7c4bcae80b26ebd47238ba460e6d
--- /dev/null
@@ -22024,8 +22024,8 @@
-
diff --git op-geth/core/types/celo_transaction_signing_forks.go CELO/core/types/celo_transaction_signing_forks.go
+
diff --git op-geth/core/types/celo_transaction_signing_forks.go CELO/core/types/celo_transaction_signing_forks.go
new file mode 100644
index 0000000000000000000000000000000000000000..9dac1b85719f41736ffde4c4f937efe637fdc24e
--- /dev/null
@@ -22176,8 +22176,8 @@
-
diff --git op-geth/core/types/celo_transaction_signing_tx_funcs.go CELO/core/types/celo_transaction_signing_tx_funcs.go
+
diff --git op-geth/core/types/celo_transaction_signing_tx_funcs.go CELO/core/types/celo_transaction_signing_tx_funcs.go
new file mode 100644
index 0000000000000000000000000000000000000000..47736e47940e649c0e9a9a82123333aec095cb06
--- /dev/null
@@ -22398,8 +22398,8 @@
-
diff --git op-geth/core/types/celo_tx_legacy.go CELO/core/types/celo_tx_legacy.go
+
diff --git op-geth/core/types/celo_tx_legacy.go CELO/core/types/celo_tx_legacy.go
new file mode 100644
index 0000000000000000000000000000000000000000..b1ea04209573fa7c9b62081fb5b5e158df4a8ba2
--- /dev/null
@@ -22606,8 +22606,8 @@
-
diff --git op-geth/core/types/gen_header_rlp.go CELO/core/types/gen_header_rlp.go
+
diff --git op-geth/core/types/gen_header_rlp.go CELO/core/types/gen_header_rlp.go
deleted file mode 100644
index ed6a1a002cdbaab59d8261746fd512fb90888c44..0000000000000000000000000000000000000000
--- op-geth/core/types/gen_header_rlp.go
@@ -22737,8 +22737,8 @@
-
diff --git op-geth/core/vm/celo_errors.go CELO/core/vm/celo_errors.go
+
diff --git op-geth/core/vm/celo_errors.go CELO/core/vm/celo_errors.go
new file mode 100644
index 0000000000000000000000000000000000000000..03d230c43358aeb01d00a57a51d863eade9a0e55
--- /dev/null
@@ -22792,8 +22792,8 @@