Skip to content

Commit 5de3543

Browse files
committed
chore: fix rofl util value, OP stack fields
1 parent 15ad8d6 commit 5de3543

File tree

6 files changed

+110
-22
lines changed

6 files changed

+110
-22
lines changed

contracts/hardhat.config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ const config: HardhatUserConfig = {
4747
url: "https://testnet.sapphire.oasis.dev",
4848
accounts,
4949
chainId: 23295
50+
},
51+
"sapphire-mainnet": {
52+
url: "https://sapphire.oasis.io",
53+
accounts,
54+
chainId: 23294
5055
}
5156
},
5257
solidity: {

paymaster-relayer/compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ services:
33
build:
44
context: .
55
dockerfile: Dockerfile
6-
image: ghcr.io/rube-de/paymaster-relayer:latest
6+
image: ghcr.io/oasisprotocol/paymaster-relayer:latest
77
platform: linux/amd64
88
container_name: paymaster_relayer
99
environment:

paymaster-relayer/paymaster_relayer/utils/blockchain_encoder.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,15 @@ def encode_receipt(receipt: TxReceipt) -> bytes:
6161
RLP encode a transaction receipt with proper type handling.
6262
6363
Handles both legacy (type 0) and typed transactions (EIP-2718).
64+
Supports OP Stack deposit transactions (type 0x7e) with Canyon upgrade.
6465
6566
Args:
6667
receipt: Transaction receipt to encode
6768
6869
Returns:
6970
RLP encoded receipt with type prefix if needed
7071
"""
71-
# Get transaction type (0 for legacy, 2 for EIP-1559, etc.)
72+
# Get transaction type (0 for legacy, 2 for EIP-1559, 0x7e for OP deposit)
7273
tx_type = int(receipt.get("type", 0))
7374

7475
# Encode receipt fields
@@ -86,8 +87,34 @@ def encode_receipt(receipt: TxReceipt) -> bytes:
8687
]
8788
encoded_logs.append(encoded_log)
8889

89-
# Create receipt tuple
90+
# Create base receipt tuple
9091
receipt_data = [status, cumulative_gas, logs_bloom, encoded_logs]
92+
93+
# Handle OP Stack deposit transactions (type 0x7e/126)
94+
# After Canyon upgrade, deposit receipts include additional fields:
95+
# RLP([status, cumulativeGasUsed, logsBloom, logs, depositNonce, depositReceiptVersion])
96+
# See: https://specs.optimism.io/protocol/deposits.html
97+
if tx_type == 126: # 0x7e - OP Stack deposit transaction
98+
deposit_receipt_version = receipt.get("depositReceiptVersion")
99+
if deposit_receipt_version is not None:
100+
# Canyon+ deposit receipt: append depositNonce and depositReceiptVersion
101+
deposit_nonce = receipt.get("depositNonce")
102+
if deposit_nonce is not None:
103+
# Convert from hex string to int if needed (web3.py may return hex strings)
104+
if isinstance(deposit_nonce, str):
105+
deposit_nonce = int(deposit_nonce, 16)
106+
if isinstance(deposit_receipt_version, str):
107+
deposit_receipt_version = int(deposit_receipt_version, 16)
108+
receipt_data.append(deposit_nonce)
109+
receipt_data.append(deposit_receipt_version)
110+
logger.debug(
111+
f"Encoding Canyon deposit receipt with nonce={deposit_nonce}, version={deposit_receipt_version}"
112+
)
113+
else:
114+
logger.warning(
115+
f"depositReceiptVersion={deposit_receipt_version} but depositNonce missing"
116+
)
117+
91118
encoded = rlp.encode(receipt_data)
92119

93120
# Add transaction type prefix for typed transactions

paymaster-relayer/paymaster_relayer/utils/rofl_utility.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ async def submit_tx(self, tx: TxParams) -> bool:
121121
"data": {
122122
"gas_limit": tx["gas"],
123123
"to": tx["to"].removeprefix("0x"),
124-
"value": tx["value"],
124+
"value": str(tx["value"]),
125125
"data": tx["data"].removeprefix("0x"),
126126
},
127127
},

paymaster-relayer/rofl-dev.yaml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: paymaster-relayer
2+
version: 0.1.0
3+
repository: https://github.com/oasisprotocol/rofl-paymaster
4+
author: rube-de <rube@ruf2.de>
5+
license: Apache-2.0
6+
tee: tdx
7+
kind: container
8+
resources:
9+
memory: 4096
10+
cpus: 2
11+
storage:
12+
kind: disk-persistent
13+
size: 5000
14+
artifacts:
15+
firmware: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/ovmf.tdx.fd#db47100a7d6a0c1f6983be224137c3f8d7cb09b63bb1c7a5ee7829d8e994a42f
16+
kernel: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage1.bin#e5d4d654ca1fa2c388bf64b23fc6e67815893fc7cb8b7cfee253d87963f54973
17+
stage2: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage2-podman.tar.bz2#b2ea2a0ca769b6b2d64e3f0c577ee9c08f0bb81a6e33ed5b15b2a7e50ef9a09f
18+
container:
19+
runtime: https://github.com/oasisprotocol/oasis-sdk/releases/download/rofl-containers%2Fv0.7.3/rofl-containers#964fbd8edaea8041fd9c5304bb4631b7126d57d06062cc3922e50313cdeef618
20+
compose: compose.yaml
21+
deployments:
22+
default:
23+
app_id: rofl1qq5f74f4trv3kctsyfl8s9ppjyn0njzw9sy34exg
24+
network: testnet
25+
paratime: sapphire
26+
admin: myaccount
27+
trust_root:
28+
height: 28431293
29+
hash: 3d5d8c98ecc4bb70b7ea3ac8fbc039a5c4c129253ecb5cee3e2073fdcb3558a9
30+
policy:
31+
quotes:
32+
pcs:
33+
tcb_validity_period: 30
34+
min_tcb_evaluation_data_number: 18
35+
tdx: {}
36+
enclaves:
37+
- id: f9G+g5EdHb8X1m8bwvA8Bi4Ch99Yco0bmVgyFgDCDjoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
38+
- id: tYcuti+mUkto1ZAuHWqBQw1x2pdUzAngtfuMZA/KUGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
39+
endorsements:
40+
- any: {}
41+
fees: endorsing_node
42+
max_expiration: 3
43+
secrets:
44+
- name: PAYMASTER_PROXY_ADDRESS
45+
value: pGJwa1ggdzuU5+oIw01twf8Wl7fM77CM8FA6X9q0jleAj5xwEWVkbmFtZVgnp1O/QAnOhMaUBO+zLZcaBWfN5Tv/mCacHjaqhi7U6a4a+l1wmnB2ZW5vbmNlT4VcuxH3cbC034SyllGkl2V2YWx1ZVg64IHZoI26rQ+bCFy0dO0oMfQETgOiPALtHouL7lMcjL5QqcZ6fePPryU1BGRPhP2hl10SPWkRpxPufA==
46+
- name: PAYMASTER_VAULT_ADDRESS
47+
value: pGJwa1ggjwzNvsRsY3dE+cuBy439RyQlNiLL2/rrHO6HTWNcNCRkbmFtZVgnfDyMqR9nEtXuR4vmSGS/S5qHxG6snNKXD53MbE3qrZlzUjDUjj2/ZW5vbmNlT9BnE1p0UH4wmHppk+RO32V2YWx1ZVg6wJoGzdoSF9KgbaQUHyL5uUbCHafpn2aqrXVCOdkQInzJAW1cCoLzXDxhuUHF/4pbNROagsPCyGfOUQ==
48+
- name: ROFL_ADAPTER_ADDRESS
49+
value: pGJwa1ggy2aGVNJY/1RmPNbcmZG+eQLy6s37aZW2jpM6G9UzezhkbmFtZVgk6XgxgEshb+irIM5ta1Yx77QNdKX7yEfaOsrlYi0vS6KI/aFBZW5vbmNlT6pMfi3wtqN2RXesacitg2V2YWx1ZVg6/fq7U9Hf/XK1hZNRN7NKMCm18Blbjc581oJ+97VkTXUIgpPec7mA/l4Fbeou3haQ4dI0Rv89odhjHQ==
50+
- name: SOURCE_RPC_URL
51+
value: pGJwa1gg37A75hVhjtbIQZ3PMZLkDdvHna/FFO4GntZd7y17yAhkbmFtZVgejNzd5K3CV8hUmbBRFgIcqFr/MdwVOhZpBI1E1QdRZW5vbmNlT/TP1UkyJpo+VkXw6gLAomV2YWx1ZVhVNFj0u1WY0aX64+zjbx9oraDswVTbsYcqtGBXqlI+vG4DE7VyiGE/BJy0xSMcSDNJH6KP3sUx+fPYUOEKYm8EQ4njKIiK2tPb2Yn+aoIDG8tHq2+kTw==
52+
- name: TARGET_RPC_URL
53+
value: pGJwa1gg4bhleyNEIOg6qfhS56oR5t7cre0BNC+7gIS60J5vGGNkbmFtZVgeoeIQvkXBbYibeymLTgfO3aQclbRigAPRk5LMuQ43ZW5vbmNlT0WGEfvflESa7auLlgNyR2V2YWx1ZVgxdhPBN5/JZOgjXB8EYeKHWxsid4DSnk/5giLW7fUnZR2hVNNiGpYaIv2rDAfIXdautQ==

paymaster-relayer/rofl.yaml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,56 @@
11
name: paymaster-relayer
22
version: 0.1.0
3-
repository: https://github.com/oasisprotocol/rofl-paymaster
4-
author: rube-de <rube@ruf2.de>
5-
license: Apache-2.0
63
tee: tdx
74
kind: container
85
resources:
9-
memory: 2048
6+
memory: 4096
107
cpus: 2
118
storage:
129
kind: disk-persistent
13-
size: 10000
10+
size: 5000
1411
artifacts:
1512
firmware: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/ovmf.tdx.fd#db47100a7d6a0c1f6983be224137c3f8d7cb09b63bb1c7a5ee7829d8e994a42f
1613
kernel: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage1.bin#e5d4d654ca1fa2c388bf64b23fc6e67815893fc7cb8b7cfee253d87963f54973
1714
stage2: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage2-podman.tar.bz2#b2ea2a0ca769b6b2d64e3f0c577ee9c08f0bb81a6e33ed5b15b2a7e50ef9a09f
1815
container:
19-
runtime: https://github.com/oasisprotocol/oasis-sdk/releases/download/rofl-containers%2Fv0.7.3/rofl-containers#964fbd8edaea8041fd9c5304bb4631b7126d57d06062cc3922e50313cdeef618
16+
runtime: https://github.com/oasisprotocol/oasis-sdk/releases/download/rofl-containers%2Fv0.8.5/rofl-containers#b63e85b33d37f1c762aef85125617d87d79763c3fe3f30815301f0f9fe57179d
2017
compose: compose.yaml
2118
deployments:
2219
default:
23-
app_id: rofl1qq5f74f4trv3kctsyfl8s9ppjyn0njzw9sy34exg
24-
network: testnet
20+
app_id: rofl1qralj7kx4fnvlnw720wu9h9k9fm0l8wpssxrumpv
21+
network: mainnet
2522
paratime: sapphire
26-
admin: myaccount
23+
admin: paymaster
24+
oci_repository: rofl.sh/53089b34-2288-4e53-8908-7c170d71484b:1765402595
2725
trust_root:
28-
height: 28431293
29-
hash: 3d5d8c98ecc4bb70b7ea3ac8fbc039a5c4c129253ecb5cee3e2073fdcb3558a9
26+
height: 27685721
27+
hash: 4097a89f1aebef26c7537c9f07487faa03c2965e42edb0998fadc30431deea13
3028
policy:
3129
quotes:
3230
pcs:
3331
tcb_validity_period: 30
3432
min_tcb_evaluation_data_number: 18
3533
tdx: {}
3634
enclaves:
37-
- id: f9G+g5EdHb8X1m8bwvA8Bi4Ch99Yco0bmVgyFgDCDjoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
38-
- id: tYcuti+mUkto1ZAuHWqBQw1x2pdUzAngtfuMZA/KUGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
35+
- id: p/pr1QTUx7XBCjmrpP3aNH8k8KZ0lP1oSusGyeJgQJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
36+
- id: HcsZO3k6yVzaeepD5bh/CPjoRtKDEAs+uareXsqyms4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
3937
endorsements:
4038
- any: {}
4139
fees: endorsing_node
4240
max_expiration: 3
4341
secrets:
4442
- name: PAYMASTER_PROXY_ADDRESS
45-
value: pGJwa1ggdzuU5+oIw01twf8Wl7fM77CM8FA6X9q0jleAj5xwEWVkbmFtZVgnp1O/QAnOhMaUBO+zLZcaBWfN5Tv/mCacHjaqhi7U6a4a+l1wmnB2ZW5vbmNlT4VcuxH3cbC034SyllGkl2V2YWx1ZVg64IHZoI26rQ+bCFy0dO0oMfQETgOiPALtHouL7lMcjL5QqcZ6fePPryU1BGRPhP2hl10SPWkRpxPufA==
43+
value: pGJwa1ggqcQ+Wdb2aXDNbY1ZtocH7iMJFiaWz1CeW98qWaf0+glkbmFtZVgnE2SRBathYCBvmvtTamYaRUV1/ofuj1HZWaMUM1rMaFF8EXFG3fuQZW5vbmNlT+iPziNkKg9hlWxpIL5KiGV2YWx1ZVg6c+vkqgCvN80gFYYniO9aImGUGH50bPEa5/Ap7ZjvYJ7o36IIyzKEAE4R8x29gFQB88FI++ZUiB8Fsw==
4644
- name: PAYMASTER_VAULT_ADDRESS
47-
value: pGJwa1ggjwzNvsRsY3dE+cuBy439RyQlNiLL2/rrHO6HTWNcNCRkbmFtZVgnfDyMqR9nEtXuR4vmSGS/S5qHxG6snNKXD53MbE3qrZlzUjDUjj2/ZW5vbmNlT9BnE1p0UH4wmHppk+RO32V2YWx1ZVg6wJoGzdoSF9KgbaQUHyL5uUbCHafpn2aqrXVCOdkQInzJAW1cCoLzXDxhuUHF/4pbNROagsPCyGfOUQ==
45+
value: pGJwa1gg7E1qg0h8RzFuil3s62UZD0T4cMaLsoPouCOfaRDynENkbmFtZVgnkjied9UHLB6a8jqOTI/6NNJaegUgwFbEHtXzx2g/hiAXtGWMIbcJZW5vbmNlT1Zr/sRJaIVSNoYoBjewMGV2YWx1ZVg6QHJTZLI3ZW83gIJco3PGaDGoIeA3Ny+6fRvUMTfdV/ok4imhx7sKzQSbiPYJpoS6FNtWbhdI2ljMKA==
4846
- name: ROFL_ADAPTER_ADDRESS
49-
value: pGJwa1ggy2aGVNJY/1RmPNbcmZG+eQLy6s37aZW2jpM6G9UzezhkbmFtZVgk6XgxgEshb+irIM5ta1Yx77QNdKX7yEfaOsrlYi0vS6KI/aFBZW5vbmNlT6pMfi3wtqN2RXesacitg2V2YWx1ZVg6/fq7U9Hf/XK1hZNRN7NKMCm18Blbjc581oJ+97VkTXUIgpPec7mA/l4Fbeou3haQ4dI0Rv89odhjHQ==
47+
value: pGJwa1gg7lKYMr5wJ1m0RjDJKfca7IYl1vO4bE63uOvIAd6LQHFkbmFtZVgkF6KpE3L2Gc0fEYz+ZAM/LS/nF2xtqx5d3KCv3JJUPZ4qd/7YZW5vbmNlT/F9+fj4BuTUeDih2mi/TWV2YWx1ZVg69d0QOVEpRqIbSxJRRCVb8nveyDiO0Wwxn2p71TQ0kbObZWulb+iSOPQPhvB7jsRAc7wsuWYAZ8lIyg==
5048
- name: SOURCE_RPC_URL
51-
value: pGJwa1gg37A75hVhjtbIQZ3PMZLkDdvHna/FFO4GntZd7y17yAhkbmFtZVgejNzd5K3CV8hUmbBRFgIcqFr/MdwVOhZpBI1E1QdRZW5vbmNlT/TP1UkyJpo+VkXw6gLAomV2YWx1ZVhVNFj0u1WY0aX64+zjbx9oraDswVTbsYcqtGBXqlI+vG4DE7VyiGE/BJy0xSMcSDNJH6KP3sUx+fPYUOEKYm8EQ4njKIiK2tPb2Yn+aoIDG8tHq2+kTw==
49+
value: pGJwa1ggt6Iwtcl5y+qPtJXoWRxHusj+WF5fHhwWyJpsa/qlGDxkbmFtZVgeCJL7+cMa7uaEhYFcpconGmdTCWxQETRbiaFtKEkGZW5vbmNlTwABh7BD9wLknTVj5n0WwWV2YWx1ZVhW8aNatiaB5j6FFjLs95fPmmD4q61adZW5SXeQo0cpY94KvWPaPMvTPubGvxc5KmAkr1X2XgTAmIVh/0QAqBxW926aTjEqA5jOxEMSdGcosCXrCEC4Vw8=
5250
- name: TARGET_RPC_URL
53-
value: pGJwa1gg4bhleyNEIOg6qfhS56oR5t7cre0BNC+7gIS60J5vGGNkbmFtZVgeoeIQvkXBbYibeymLTgfO3aQclbRigAPRk5LMuQ43ZW5vbmNlT0WGEfvflESa7auLlgNyR2V2YWx1ZVgxdhPBN5/JZOgjXB8EYeKHWxsid4DSnk/5giLW7fUnZR2hVNNiGpYaIv2rDAfIXdautQ==
51+
value: pGJwa1ggmfEjSv7G3AuZaalGBk1fYdTLhI7XRgFeFZboWz48JT5kbmFtZVgeEaeKSrQ89JY8i28aqGz51kIbKC7Qw4poko/xH/GeZW5vbmNlT4RNs+aAPjIMSHkhP1EqvmV2YWx1ZVgpiMp7G7AP+lQtpu70JCBt3Y/B+ciscdKk82insPz82hkuMCQwGK7SfYg=
52+
machines:
53+
default:
54+
provider: oasis1qzc8pldvm8vm3duvdrj63wgvkw34y9ucfcxzetqr
55+
offer: medium
56+
id: 000000000000006c

0 commit comments

Comments
 (0)