Appearance
UI Labels
The primary action function that will be called on your contract.
Supported Chains
Wallet Thresholds
Show a warning if the connected wallet balance is below this value. Set 0 to disable.
Options
Single-chain mode
Auto-load scripts
Contract Identity
Checksummed or lowercase — both are accepted.
ABI
Copy the ABI from Remix (Compilation Details → ABI) or your Hardhat/Foundry artifacts.
Auto-populated from the ABI above. Select the function you want to call.
Error Handling
Number of times to retry a failed RPC call before throwing.
Logging
Runtime Options
Session caching
Post-transaction page refresh
Typed data enforcement (EIP-712)
🚀 Compile SDK
Reads your configuration from all tabs, generates a self-contained
script.js, and lets you copy or download it instantly.
Drop the file into any HTML page with a single <script> tag.
Current Configuration
Click "Generate script.js" to preview.
Generated script.js
How to embed
<!-- 1. Add ethers.js (required for contract interaction) -->
<script src="https://cdn.jsdelivr.net/npm/ethers@6/dist/ethers.umd.min.js"></script>
<!-- 2. Add your compiled script (ES module) -->
<script type="module" src="script.js"></script>
<!-- 3. Use data-waas-* attributes for zero-JS integration -->
<button data-waas-connect>Connect Wallet</button>
<button data-waas-disconnect>Disconnect</button>
<button data-waas-network>Switch Network</button>
<span data-waas-address></span>
<span data-waas-chain></span>
<span data-waas-status></span>
<!-- 4. Or use the JS API -->
<script type="module">
// Listen for events
WaaSSDK.events.addEventListener("connect", (e) => {
console.log("Connected:", e.detail.account);
});
// Contract interaction (after connect)
WaaSSDK.events.addEventListener("contractReady", async (e) => {
const result = await WaaSSDK.readContract(e.detail.contract, "balanceOf", ["0x..."]);
const receipt = await WaaSSDK.writeContract(e.detail.contract, "mint", ["0x...", 100]);
});
</script>