Replay Contract

As a DSP, you will want the ability to replay a contract’s vRAM (IPFS) related transactions to load that data into your IPFS cluster. We provide a file that does just that replay-contract.js.

To do this you will need to sign up for an API key from dfuse.io, you can select the Server to Server option from the dropdown when creating it. Dfuse offers free keys that last 24 hours, so there’s no need to pay.

There are some mandatory and optional environment variables.

Hyperion may also be used thanks to Christoph Michel: replay-contract-hyperion.js. List of endpoints here: https://hyperion.docs.eosrio.io/endpoint/, status of endpoint (UP/DOWN) here: https://bloks.io/hyperion

Mandatory:

# contract to replay
export CONTRACT=
export NODEOS_CHAINID="aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906" # < mainnet | kylin > "5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191"
# make sure NO TRAILING FORWARD SLASH
# this good: export DSP_ENDPOINT=https://kylin-dsp-1.liquidapps.io
# this leads to an error export DSP_ENDPOINT=https://kylin-dsp-1.liquidapps.io/
export DSP_ENDPOINT=
# using Dfuse?
export DFUSE_API_KEY=
# using Hyperion?
export HYPERION_ENDPOINT=https://eos.hyperion.eosrio.io
export HYPERION_SORT_DIRECTION=asc # can also be desc, ascending starts from first block, descending starts from head block of chains

In Config.toml

Enable:

Restart the DSP with these.

Sidechain:

If replaying an account on a sidechain, must add the following environment variables.

  • SIDECHAIN if using a sidechain, must specify sidechain name (sidechain names can be found here)

  • SIDECHAIN_DSP_PORT if using a sidechain, must specify sidechain DSP’s port

  • DSP_LIQUIDX_CONTRACT the liquidx contract name must be set liquidx.dsp on mainnet if cleaning a sidechain

  • NODEOS_MAINNET_ENDPOINT set mainnet nodeos endpoint

Optional:

Once you’ve set those, simply run with:

How to know if it is running correctly:

In the IPFS logs, you SHOULD see this log because this is a replay. You will not see this log for normal IPFS related transactions, only ones sent from the replay script.

You should NOT see this log because you have set DSP_ALLOW_API_NON_BROADCAST=true.

Last updated

Was this helpful?