This page will help you get started with Shield3

📡 Broadcast

The broadcast API relays all requests that pass Shield3 policy filters. Only eth_sendRawTransaction are subject to the filter. Any other method is passed through to the node.

Transactions are either:

  • Passed - No violations detected, transaction broadcast
  • Flagged Violation detected, requests confirmation from sender via webhook or other configured notification mechanism. Transaction can be broadcast with user consent
  • Blocked - Violation detected. Transaction cannot be broadcast via Shield3

🧪 Simulate

The proxy API accepts a custom method eth_simulateTransacion to get the policy results of the transaction without broadcasting.

The parameters passed to eth_simulateTransaction are [serializedTx, fromAddress]

Example request:

{
    "jsonrpc": "2.0",
    "method": "eth_simulateTransaction",
    "params": [
        "0xf86925808307a12094a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488412f7dabbb844a9059cbb00000000000000000000000073058355084d9e10200d20760379a8bfe2c04a310000000000000000000000000000000000000000000000000000000019548352018080",
        "0x01B2f8877f3e8F366eF4D4F48230949123733897"
    ],
    "id": 42
}

Example response:

{
    "jsonrpc": "2.0",
    "result": {
        "transaction": {
            "id": "3595d30c-84e3-4ea9-9bb3-fa8fff6b238c",
            "team_id": "b9027b9d-9a3c-4dd9-807d-b0aa5c307ea0",
            "network": "0x013881",
            "tx_status": "Simulated",
            "decoded_type": "contract_with_data",
            "workflow_results": {
                "policyResults": [
                    {
                        "name": "Demo - Mint Method",
                        "result": {
                            "errors": [],
                            "reasons": [
                                {
                                    "invoked": true,
                                    "policy_id": "policy0",
                                    "annotations": {
                                        "name": "Mint Method",
                                        "action": "Notify",
                                        "message": "Allow mint on specific contract on Mumbai"
                                    }
                                }
                            ],
                            "decision": "Allow"
                        },
                        "policyId": "52fc621e-067f-476b-b493-97a261d34181",
                        "policySource": "Team"
                    }
                ],
                "routingDecision": "Notify"
            },
            "created_at": "2023-11-09 01:17:17.59499",
            "updated_at": "2023-11-09 01:17:17.797489"
        },
        "decision": "Notify"
    },
    "id": 42
}

Simulate Bundle

The proxy api also. accepts a custom method eth_simulateTransactionBundle to get the policy results of multiple transactions without broadcasting.

The parameters passed to eth_simulateTransactionBundle are a 2D array of serialized transactions and from addresses. The response is an array of results for each transaction

{
    "jsonrpc": "2.0",
    "method": "eth_simulateTransaction",
    "params": [
        [
            "0xf86925808307a12094a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488412f7dabbb844a9059cbb00000000000000000000000073058355084d9e10200d20760379a8bfe2c04a310000000000000000000000000000000000000000000000000000000019548352018080",
            "0x01B2f8877f3e8F366eF4D4F48230949123733897"
        ],
        [
            "0xf86925808307a12094a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488412f7dabbb844a9059cbb00000000000000000000000073058355084d9e10200d20760379a8bfe2c04a310000000000000000000000000000000000000000000000000000000019548352018080",
            "0x29Bc11a799924F2Afe6644AFd1decFa777735D23"
        ]
    ],
    "id": 42
}

Backfill

The proxy api also accepts a custom method eth_backfillTransaction to get the policy results of a transaction that was already executed using another RPC provider and add it to the reporting dashboard. This can be used in cases where users interact with an application's smart contracts directly from their own wallet, but the transaction policy results are needed to inform business logic. For example in escrow applications the policy result can be used to determine if the escrow should be released or refunded.

The params accept a transaction hash of an already confirmed transaction.

{
    "jsonrpc": "2.0",
    "method": "eth_backfillTransaction",
    "params": ["0xf6bb3574d9ebeb90f56985887cdd9c11373ddb50c53e8e8f20a69697e8b0722f"],
    "id": 42
}

📋 Policies

View active policies for an API key. This can be used to embed Shield3 into partner applications