Skip to content

Comments

solidity gringotts#26

Open
codchen wants to merge 1 commit intomainfrom
tony/solidity
Open

solidity gringotts#26
codchen wants to merge 1 commit intomainfrom
tony/solidity

Conversation

@codchen
Copy link
Collaborator

@codchen codchen commented Feb 2, 2026

Summary

Ports the CosmWasm Gringotts vesting contract to Solidity for deployment on Sei's EVM. Uses native SEI tokens and integrates directly with Sei's staking and distribution precompiles.

Key Features

  • Native SEI Support: Works with native SEI tokens (not ERC20), sent via msg.value during deployment
  • Sei Precompile Integration: Direct integration with Sei's staking (0x1005) and distribution (0x1007) precompiles
  • Upgradeable Contract: UUPS proxy pattern with multi-sig admin approval for upgrades
  • Migration Tooling: Scripts to export state from existing CosmWasm contracts and deploy Solidity equivalents

Changes

New Files:

  • solidity/contracts/Gringotts.sol - Main upgradeable vesting contract
  • solidity/contracts/GringottsFactory.sol - Factory for deploying proxy instances
  • solidity/interfaces/IStaking.sol - Sei staking precompile interface
  • solidity/interfaces/IDistribution.sol - Sei distribution precompile interface
  • solidity/contracts/mocks/ - Mock contracts for testing
  • solidity/scripts/migration/ - Migration scripts for CosmWasm → Solidity
  • solidity/test/Gringotts.test.js - Test suite (15 passing)

Configuration:

  • solidity/package.json - Hardhat project with dependencies
  • solidity/hardhat.config.js - Compiler settings (0.8.24, viaIR, Sei networks)
  • .gitignore - Added node_modules/ and **/cache

Upgrade Process

Contract upgrades require multi-sig admin approval:

  1. Admin calls proposeUpgrade(newImplementation)
  2. Other admins vote via voteProposal(proposalId)
  3. Once threshold reached, admin calls processProposal(proposalId)

Migration from CosmWasm

Export existing contract state

node scripts/migration/export-cosmwasm.js sei1contract... --output export.json

Convert addresses (sei1... → 0x...)

seid q evm sei-addr sei1admin...

Deploy to Sei EVM

EXPORT_FILE=export.json npx hardhat run scripts/migration/deploy-from-export.js --network sei

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant