​LiquidVRAM Service​

  • add new service responses and requests when #define USE_ADVANCED_IPFS is used
  • add warmuprow and cleanuprow, these allow for more efficient loading and cleaning of vram shard information
  • add warmupcode, which allows for vram to be accessed from external contracts and third party DSPs
  • warmupcode is used automatically when required when the code specified in a multi-index table is something other than self
  • add ability for a contract to use vaccounts from another contract when #define VACCOUNTS_SUBSCRIBER is used
    • xvinit argument is replaced in this case with a name (instead of a chainid)
    • xvinit must be used to set the name of the contract providing vaccounts functionality
    • contract using vaccounts_subscriber must be staked to a DSP, but does not have to be same DSP that the vaccounts host contract is staked to -fixes
    • fixed issue where vaccount push requests are not forwarded to a staked provider


  • update get table row secodary index changes in 2.0
  • cease support for pre nodeos 2.0 nodes
  • added max pending messages for demux to prevent memory crashes
  • fixed demux get starting block logic, added possibility for head block
  • expose DEMUX_MAX_PENDING_MESSAGES in toml file to set pending messages from demux web socket to process before disconnecting to allow pending messages to process. Behavior is once max pending messages amount hit to disconnect websocket until 50% of messages are processed, then reconnect to continue processing.
  • fixes
    • fix demux head block handler using brackets
    • support new /v1/chain/send_transaction endpoint in addition to /v1/chain/push_transaction
  • split mapping into builtin and local file stored in ~/.zeus/ storage directory
  • boxes added to the mapping using zeus deploy box and zeus box add go to the local mapping file to persist between zeus updates
  • when unboxing a box found in both files, the local mapping is given priority, but a warning is displayed
  • added zeus box remove command to remove boxes from the local mapping
  • added RC file ignore flag –rc-ignore to bypass it | thank you prcolaco​
Example zeusrc.json:
"verbose": true,
"type": "local",
"update-mapping": true,
"test": true
  • added utility/tool for deserializing xvexec data (vaccount action data) Example: deserializeVactionPayload('dappaccoun.t', '6136465e000000002a00000000000000aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e90600000000000000008090d9572d3ccdcd002370ae375c19feaa49e0d336557df8aa49010000000000000004454f5300000000026869', 'https://mainnet.eos.dfuse.io') returns
"quantity":"0.0001 EOS",
  • add RC file to load regular zeus-cmd options from, on ~/.zeus/zeusrc.json by default, changeable with –rc-file option | thank you prcolaco​
  • zeus create contract <MY_CONTRACT> now creates MY_CONTRACT.cpp instead of main.cpp, update cmake to use MY_CONTRACT.cpp
  • use v2.0.4 nodeos
  • fixes
    • fix portfolio app requesting new oracle entries twice on load
    • fix portfolio app double adding eos token balances
    • Read past end of buffer - The issue was that an additional parameter was added to IPFS warmup to enable new functionality. This caused a conflict for pre-existing contracts attempting to warmup IPFS data. The parameter was removed.
    • fixed and refactored get-table utility to work with new dsp api (get_uri) and nodeos >= 2.0.0.


  • update to using nodeos v2+, pre 2.0 no longer supported
  • add developers/contract-logs section and add details on DSP logs
  • add /liquidx/models/eosio-chains/${CHAIN_ACCOUNT}.json section to consumer liquidx docs


  • Service contracts and service contract mapping no longer mandatory
    • If a service contract is not mapped, it will default to the same name as the mainnet
  • Moved quota calculation logic into dappservices
  • Deprecated individual service contracts for quota management, i.e. ipfsservice1,cronservices, etc
    • Providers that have already registered packages will have their RAM freed using a new freeprovider(provider) action
  • billing will default to 0.0001 QUOTA for all actions
    • This allows for new actions to be added to services
  • use pricepkg action to price action in quota
  • add @eosio.code note for dappservicex and consumer contracts in liquidx section
  • Added unauthenticated get_uri api endpoint.

​LiquidStorage for LiquidAccounts PR - thank you https://github.com/MrToph

  • Added public_upload_vaccount endpoint. This endpoint can be used directly from the frontend by vaccounts. The vaccount signs the file to upload, sends it to the DSP, which verifies and stores the file. Optionally, it does some additional quota checks defined by the consumer contract: It can define max file sizes, daily global upload limits, and daily limits on a per vaccount level.
  • Added a storageconsumer contract testing the vaccount uploads + limits checking.
  • Refactored the upload_public endpoint to a common.js file as most functionality is now also required by the new upload_public_vaccount endpoint.
  • Added two quick-fix options external and box to the sync-builtin-boxes command, because it did not work with the public zeus-sdk repo. External should be set to true when using the public repo. The default args are chosen in a way that they shouldn’t change anything if invoked as usual.
  • changed the uploads to use base64 encoding instead of hex (in both dapp-client and server) to save some bandwidth. Fixed the bytelength quota calculation
  • Disable vaccount archive upload
  • Use base64 as encoding for archive as well to match other encodings.
  • Support public archive upload in dapp-client lib
  • fixes
    • Fix archive upload test
Special thank you to Michael of the EOSUSA team for helping us test and deploy LiquidX
Last modified 7mo ago