Local-first · No database

Safe Transaction Workspace

BNB Smart Chain Testnet · Build, review, encode and exchange transaction packages offline.

Browser-only workspace
1

Safe & wallet

Read-only connection checks. No server account or database required.
Detecting injected providers. If opened as a file, your wallet extension may need “Allow access to file URLs”.

Wallet not connected.

Safe state has not been checked.

BNB testnet chain ID is 97. This read-only check uses the connected wallet's RPC and checks common Safe view methods; it does not prove the address is an official or compatible Safe deployment.

2

Load a custom dApp

An imported dApp may propose a draft; it cannot trigger signing or execution.
No dApp loaded
Want the custom app connected to the real Safe? This workspace cannot pass Safe wallet access into its own iframe. Open the Safe interface, then add the custom app there so Safe itself hosts it.

In the Safe interface, select Apps → Add Custom App and paste https://usdtinrp-testnet.system4trading.com/. Make sure the Safe interface is on BNB Smart Chain Testnet and only add the app if you trust its source.

Opening Safe does not automatically add the app or connect it to this iframe.

Treat imported apps as untrusted. Inspect the source before use. Review every proposed destination, value, calldata byte and operation. DelegateCall (1) is especially sensitive.
Host protocol idle. Load a dApp to start the Safe Apps handshake or safe-workspace/v2 bridge.
Host protocol support

The host recognizes the Safe Apps SDK message envelope (SAFE_APP_READY, SAFE_APP_REQUEST, SAFE_APP_RESPONSE) and safe-workspace/v2 messages (HELLO, GET_CONTEXT, REQUEST_TRANSACTION, REQUEST_TRANSACTIONS). Read-only context and selected EIP-1193 reads are supported. Transaction requests are staged for manual review only; no Safe transaction hash is fabricated and no signing/execution is performed.

v2 example: window.parent.postMessage({protocol:"safe-workspace/v2",type:"REQUEST_TRANSACTION",requestId:"req-1",transaction:{to:"0x…",value:"0",data:"0x",operation:0}},"*"). Replies use safe-workspace/v2 with type RESPONSE, the same requestId, and either result or error.

3

Transaction builder

Enter calldata directly or use your imported dApp's custom execution UI.
Use a contract ABI to build calldata, or enter calldata manually. ABI parsing uses ethers.js from a CDN; if the CDN is unavailable, manual calldata remains available.

The optional deadline is metadata only; it is not enforced on-chain by a standard Safe transaction.

4

Export / import for other signers

Exchange a JSON package or its 0x-prefixed hex encoding. No backend storage.
This HEX is a transport format for the JSON package, not Safe contract calldata and not a signature. The actual Safe transaction fields remain visible in the package for independent review.
5

Signature verification & execution

Cryptographic checks use the connected wallet, ethers.js and Safe contract view methods. Network access to the ethers CDN is required.
No package loaded.
Security gate closed. No signatures are trusted until the Safe hash, current nonce, owner set, threshold, and each signature are verified.

JSON fields and signature counts are never authorization. Before execution, this workspace recomputes the Safe EIP-712 hash, compares it with the Safe contract’s own getTransactionHash result, recovers each EOA signer, rejects duplicate/non-owner signatures, sorts signatures by owner address, and rechecks nonce/threshold. Contract-based owners (EIP-1271), non-standard Safe versions and batch transactions are not supported by this minimal adapter and will be rejected or remain unverified.

•

Activity

Workspace ready. All package data remains in this browser unless you export or share it.