Transaction Payload Verification
Know exactly what you are signing with Pier Two's transaction analysis upgrade
Verify Transaction Payloads via Control Centre and API
What is transaction payload verification?
Transaction payload verification lets you simulate and inspect a transaction before broadcasting it and committing your funds. By integrating Tenderly simulations into our API, we provide all the information required to verify your funds are going to the correct place on chain.
How Pier Two utilises it
Pier Two runs all crafted transactions through Tenderly as well as performing static analysis using our own context on your Pier Two account. We then expose our observations in API responses and include publicly accessible links to simulation results on a third party interface (Tenderly UI) for independent verification.
Some examples of the checks performed during Pier Two's static analysis include:
- Checking transaction targets against know destinations (batch deposit contract, EIP 7251 consolidations contract, EIP 7002 withdrawal contract)
- Checking that top ups are being directed to validators that we know to belong to your Pier Two account
- Checking that target validators of consolidations are validators that we know to belong to your account
How to verify your transaction payloads
Whether you are using our Control Centre or our API directly, you will have access to the same transaction simulation and analysis.
In our UI, staking operations will present a link to a transaction simulation that you can inspect before confirming in your wallet.
Our Stake creation and transaction crafting endpoints have been extended in a backwards compatible way to include a pre-prepared transaction payload and associated simulation and analysis. This update reduces the steps required by developers integrating our API as well as offering increased security and transparency.
Below is a snippet of the response from our stake creation endpoint
{
"data": {
"stake": {
"stakeId": 10000028,
"customerId": 52,
...
},
"message": "requested 10 validators successfully",
"transaction": {
"to": "0x4c9506eE2fCd962f03022D9d8ebf6f7828abEfaf",
"data": "0xe2ee27bf0...a3211999de068801c16ce",
"value": "1000000000000000000000",
"gas": "581498",
"nonce": 147,
"chainId": 560048,
"maxFeePerGas": "1194611555",
"maxPriorityFeePerGas": "60913223",
"serialized": "0x02f911fb83088...988007ba3211999de068801c16cec0",
"analysis": {
"observations": [
{
"source": "simulation",
"message": "Balance changes detected in simulation",
"severity": "info"
},
{
"source": "simulation",
"message": "Asset changes detected in simulation: 11 changes",
"severity": "info"
},
{
"source": "pier_two",
"message": "Validator 0x8dd2c9fd... will reach the 2048 ETH cap in over 102 years based on 3% APY",
"severity": "info"
},
...
],
"simulations": {
"tenderly": {
"shareUrl": "https://www.tdly.co/shared/simulation/01170f69-d93a-4140-9e3e-261565a8be14",
"simulationId": "01170f69-d93a-4140-9e3e-261565a8be14",
"success": true,
"executionCost": 479608,
"costPerUnit": "1194611555",
"totalCost": "572945258670440",
"logs": [
{
"name": "",
"address": "0x00000000219ab540356cbb839cbe05303d7705fa",
"data": "0x000000000000000000000...0000000000000000000000000000000000000000000000",
"topics": [
"0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5"
]
},
{
"name": "",
"address": "0x4c9506ee2fcd962f03022d9d8ebf6f7828abefaf",
"data": "0x0000000000000000000000000000000000000000000000056bc75e2d63100000",
"topics": [
"0x07468d6bd11350def18feb2ba4201196d670bdf016f5e33b4cbf4c202b41fbbd",
"0xa07e447140b7e6f4872dfa8b26508f1e80388f080fe96faeb74315f70d7e9fe9",
"0x7b5f0c0e5d98da4494d7df821773de092e981a9440b5c1475e64828a211949a5"
]
},
...
],
"stateDiff": [
{
"address": "0x00000000219ab540356cbb839cbe05303d7705fa",
"soltype": null,
"original": null,
"dirty": null,
"raw": [
{
"address": "0x00000000219ab540356cbb839cbe05303d7705fa",
"key": "0x0000000000000000000000000000000000000000000000000000000000000000",
"original": "0x18e5b201d962ad2bb0e029e7ddcdf4329dd8f09dfb14b35543a91f6c22537122",
"dirty": "0xc529a0e2eff40592c475d7cd7c61216506565febfb1502c04231fff775b8f7a0"
}
]
},
{
"address": "0x00000000219ab540356cbb839cbe05303d7705fa",
"soltype": null,
"original": null,
"dirty": null,
"raw": [
{
"address": "0x00000000219ab540356cbb839cbe05303d7705fa",
"key": "0x0000000000000000000000000000000000000000000000000000000000000001",
"original": "0x9c02acd520e570b1fa960560b0db1b2737e047c2ea5f6addf0e9d7eecad15672",
"dirty": "0xc73f118a007139dbf02375daadeaab6da93813f1c1fca977ceaa1e4798625818"
}
]
},
...
],
"balanceDiff": [
{
"address": "0x00000000219ab540356cBB839Cbe05303d7705Fa",
"original": "9927884064266928000000000",
"dirty": "9928884064266928000000000",
"is_miner": false
},
{
"address": "0x767f7576944D321374921DF138589a30e3C5030d",
"original": "945142433358512830290448",
"dirty": "945142433931458088481280",
"is_miner": true
},
{
"address": "0xC8CD785C6Ba55d71a6530c08d1DF7eCbf090299c",
"original": "5044584205531764276095",
"dirty": "4044583632586505605655",
"is_miner": false
}
],
...
}
}
}
}
}
}
Updated 10 days ago
