{"title":"Proposal for RailgunSmartWallet Upgrades","description":"This proposal adds code to RAILGUN core wallet logic.\n\nIt improves the capabilities of DeFi integrations that are possible for RAILGUN Privacy users.\n\n## New features:\n\n### Shield to any address\n- This enables public wallets and contracts to shield into any 0zk address, without requiring the private wallet's Viewing Key.\n- Enables integrations for REN Protocol and other bridges to shield directly into Private Balances.\n\n### Relayer protections\n- Adds a minGasPrice field to transact calls, which protects against Relayers submitting with low gas fees and enables custom gas prices for Relayer transactions.\n\n## Updates:\n\n### Contract EVENT changes\n- Removed previous events GeneratedCommitmentBatch (generateDeposit function) and CommitmentBatch (transact function) and Nullifiers event.\n- Added new events Shield, Transact, Unshield and Nullified, which provide support for unshields in transaction history and shielding to any address.\n\n### External FUNCTION changes\n- Function 'generateDeposit' is now 'shield' with parameters that support shielding to any address.\n- Function 'transact' now supports chainID locking, minimum gas price, dedicated memo and sender annotation data fields, and allows the receiver to decode the senders full 0zk address (eg. for refunds)\n\n### \"Callbacks Upgrade\" restructure \n- Split txs from monolithic to each stage as function so they can be executed discretely.\n\n## Notes: \n\n### Existing (U)TXOs\n- Merkle Tree commitment format is not changed by this proposed upgrade. \n- Existing notes are still spendable from Merkle Tree."}