> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Bytecode deployment cheatcode

> Learn how you can deploy custom bytecode to any address using tenderly_setCode Admin RPC method.

The Admin RPC method [**`tenderly_setCode`**](/virtual-environments/admin-rpc#tenderly_setcode) lets you deploy arbitrary bytecode to an arbitrary address. This is useful for testing purposes, for instrumenting contracts that take part in the test.

<Warning>
  When deploying modified bytecode, the verification information will no longer match and it will not be possible to access traces and debugger for target addresses.
</Warning>

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
#!/bin/bash

# Define the Tenderly RPC URL

VIRTUAL_TESTNET_RPC="https://YOUR_VIRTUAL_TESTNET_RPC_URL" # Replace with the actual RPC
CONTRACT_ADDRESS="0x81a831281cb844cf383d5b7446048c33f8f61597" # Replace with the an arbitrary contract address

# Define the contract address and bytecode
BYTECODE="0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063188ec356146037578063f2c9ecd814604b575b600080fd5b425b60405190815260200160405180910390f35b43603956fea2646970667358221220cf2559005e1cfe369d80627215e827ac118ec62d8642fc9962efa55315dd451b64736f6c63430008110033"

# Function to deploy the contract by setting the bytecode
set_code_response=$(curl -s -X POST \
  -H "Content-Type: application/json" \
  --data '{
    "jsonrpc": "2.0",
    "method": "tenderly_setCode",
    "params": ["'"$CONTRACT_ADDRESS"'", "'"$BYTECODE"'"],
    "id": 1
  }' "$VIRTUAL_TESTNET_RPC")

# Call the function from contract

eth_call_response=$(curl -s -X POST \
  -H "Content-Type: application/json" \
  --data '{
    "jsonrpc": "2.0",
    "method": "eth_call",
    "params": [{
      "to": "'"$CONTRACT_ADDRESS"'",
      "data": "0x188ec356"
    }, "latest"],
    "id": 2
  }' "$VIRTUAL_TESTNET_RPC")

echo $eth_call_response
```
