
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
@witnet/wrapped-wit
Advanced tools
A command-line tool and smart contract suite to wrap and unwrap $WIT coins between Witnet and Ethereum blockchains, using specific RPC endpoints for each.
This repository contains:
A CLI tool (witwrap) to interact with both Witnet and Ethereum RPCs to:
A Javascript library allowing scripts to introspect supported networks, ABIs, addresses and settings, as well as some related helper methods.
The full Solidity source code of both the canonical and bridged versions of the Wrapped/WIT ERC-20 token deployed on Ethereum and other Superchain-compliant networks.
@witnet/wrapped-wit package into your project: $ npm install --save @witnet/wrapped-wit
const { WrappedWIT } = require("@witnet/wrapped-wit")
import { WrappedWIT } from "@witnet/wrapped-wit"
The CLI can be configured using a .env file or by setting the following two variables:
ETHRPC_PRIVATE_KEYS=["your_eth_private_key_1", ..., "your_eth_private_key_n"]
WITNET_SDK_WALLET_MASTER_KEY="xprv_string_here_as_exported_from_mww_or_sheikah"
You can optionally:
--witnet, where suitable. $ witwrap <command> [<args>] [<flags>] [<options>] [--help]
You need to have a local ETH/RPC gateway running in order to get access to extra commands. You will only be able to wrap and unwrap $WIT coins if you connect to an EVM network where the canonical version of the ERC-20 token is available (see supported networks below).
witwrap networksLists supported EVM networks.
Flags:
--mainnets: Just list the mainnets.--testnets: Just list the testnets.witwrap gateway <evm_network>Launches a local ETH/RPC signing gateway to the specified evm_network, listening on port 8545 if no otherwise specified.
Options:
--port: Port where the new gateway should be listening on.--remote: URL of the ETH/RPC remote provider to use instead of the gateway's default for the specified network.Launch a gateway to your preferred EVM network on a different terminal so you can augment the available commands of the
witwrapCLI binary. If you launch the gateway on a port other than default's, you'll need to specify--port <PORT>when invoking other commands of thewitwrapbinary.
witwrap contractShows the address and other relevant data of the Witnet token contract that's available on the connected EVM network.
Flags:
--verbose: Outputs extra information.witwrap suppliesShows wrapped $WIT supply information in both Witnet and the connected EVM network. It also detects if the total reserve supply in Ethereum is outdated with respect the actual under-custody supply on Witnet, asking you whether you wish to permissionlessly contribute by notarizing (in Witnet) and pushing (in Ethereum) a fresh new Proof-of-Reserve report.
Flags:
--verbose: Outputs history of Proof-of-Reserve update reports.Options:
--limit: Limit number of history records.--from: EVM signer address to use when pushing a fresh new Proof-of-Reserve report into Ethereum.--gasPrice: Max. EVM gas price to pay when pushing a Proof-of-Reserve report into Ethereum.witwrap transfersShows the history of recent transfers of wrapped $WIT on the connected EVM network. It also allows you to transfer wrapped $WIT tokens in Ethereum, as long the signing addresses of your EVM gateway holds some wrapped $WIT balance.
Flags:
--burns: Also show history of burnt $WIT (either unwrapped to Witnet, or bridged to other EVM networks).--mints: Also show history of minted $WIT (either wrapped from Witnet, or bridged from other EVM networks).Options:
--from: Filter transfers from the specified EVM address (required when ordering a new transfer).--into: Filter transfers to the specified EVM address (required when ordering a new transfer).--limit: Limit number of listed records.--offset: Skip first records before listing.--since: Process events starting from the specified EVM block number (default: -5000).--value: Amount of $WIT to transfer between the specified addresses.--gasPrice: Max. EVM gas price to pay when transferring $WIT.witwrap wrappingsShows the history of past wrapping transactions, as well as an up-to-date list with the status of on-going wrapping workflows. It also allows you to initiate a wrap transaction on Witnet, and validate it on Ethereum when finalized.
Flags:
--trace-back: Check the time difference since the moment when the wrap transaction took place on Witnet, and when it got ultimately verified on Ethereum.Options:
--from: Filter wrappings from the specified WIT address.--into: Filter wrappings to the specified EVM address (required when initiating a new wrap).--limit: Limit number of listed records.--offset: Skip first records before listing.--since: Process events starting from the specified EVM block number (default: -5000).--value: Amount of $WIT to be wrapped between specified addresses.--vtt-hash: Request the validation on Ethereum of some not-yet verified wrapping transaction that took place on Witnet.--gasPrice: Max. EVM gas price to pay when querying the validation of some --vtt-hash.When ordering a new wrap:
- If no --from is specified, the transaction will get paid by any set of self-custody HD-derived accounts holding sufficient funds.
- Wrapping from the wallet's coinbase address, requires its address to be specified as --from.
- Make sure that you have enough funds for covering both the amount being wrapped and the Witnet network fee for such transaction.
witwrap unwrappingsShows the history of past unwrapping transactions. It also allows you to unwrap $WIT tokens that you hold on any of the EVM gateway signing addresses, as long as there's enough under-custody reserve supply on the ERC-20 contract.
Flags:
--trace-back: Check the time difference since the moment when the unwrap transaction took place on Ethereum, and the unwrapped amount got ultimately transferred to the recipient on Witnet.Options:
--from: Filter unwrappings from the specified EVM address (required when ordering a new unwrap).--into: Filter unwrappings to the specified WIT address (required when ordering a new unwrap).--limit: Limit number of listed records.--offset: Skip first records before listing.--since: Process events starting from the specified EVM block number (default: -5000).--value: Amount of $WIT to be unwrapped between specified addresses.--gasPrice: Max. EVM gas price to pay when querying the unwrapping of the specified amount.This repository includes the Solidity contracts that power the Ethereum side of the Wrapped/WIT, both on its canonical and Superchain-bridge versions.
Contracts are located in the contracts/ folder:
WitnetERC20.sol
The "canonical" version of the ERC-20 token contract capable of holding wrapped $WIT in Ethereum. It relies on the Wit/Oracle contract framework for validating both Proof-of-Reserve reports and cross-chain wrapping and unwrapping transactions from Witnet.
WitnetL2ERC20.sol
The "bridged" version of the ERC-20 token contract capable of holding wrapped $WIT in supported L2 chains, compliant with Optimism, Superchain and ERC-7802 bridges. This version does not support wrapping nor unwrapping transactions with the Witnet network.
| EVM Network | ERC-20 Contract | ERC-20 Address | Witnet Network |
|---|---|---|---|
| Ethereum | WitnetERC20 | 0xcafe...CaFE | Testnet |
| Base | WitnetL2ERC20 | 0xcafe...CaFE |
| EVM Network | ERC-20 Contract | ERC-20 Address | Witnet Network |
|---|---|---|---|
| Sepolia | WitnetERC20 | 0xceba...B23D | Testnet |
| Base Sepolia | WitnetL2ERC20 | 0xceba...B23D | |
| OP Sepolia | WitnetL2ERC20 | 0xceba...B23D |
It involves a two-step workflow:
witwrap wrappings --from <witnet_wallet_address> --into <evm_recipient> --value 10000.0witwrap wrappings --vtt-hash <vtt_hash>witwrap wrappings [--from <witnet_wallet_addres>] [--into <evm_recipient>]Once the finality of the value transfer transaction that took place in Witnet gets verified in Ethereum, you shall see increased the $WIT balance of the specified <evm_recipient> address.
Just one single step required:
witwrap unwrappings --from <evm_sender> --into <witnet_recipient> --value 500.0In a matter of a few seconds, you should see increased the $WIT balance of the specified <witnet_recipient> address.
Learn more about Witnet, the $WIT coin and the Wit/Oracle framework for smart contracts at:
👉 https://docs.witnet.io 👉 https://witnet.io 👉 https://witnet.foundation/
MIT © 2025 — Maintained by the Witnet Project.
FAQs
Wrapped/WIT Solidity contracts and CLI tools
We found that @witnet/wrapped-wit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.