@evvm/testnet-contracts 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +220 -45
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -2,14 +2,209 @@
2
2
 
3
3
  ![](https://github.com/user-attachments/assets/08d995ee-7512-42e4-a26c-0d62d2e8e0bf)
4
4
 
5
- The Ethereum Virtual Virtual Machine (EVVM) ⚙️
5
+ EVVM is an innovative blockchain virtualization system that allows you to create and deploy your own virtual blockchains on top of existing Ethereum networks where you can:
6
6
 
7
- **This repository is the next step after successful playground testing. It is dedicated to advanced integration, deployment, and validation on public testnets, before mainnet implementation.**
7
+ - **Create your own virtual blockchain** with custom tokens and governance
8
+ - **Deploy on testnets** like Ethereum Sepolia or Arbitrum Sepolia for testing
9
+ - **Use proven, audited contracts** for staking, treasury management, and domain services
10
+ - **Scale to mainnet** when ready for production
8
11
 
9
- EVVM provides a comprehensive set of smart contracts and tools for scalable, modular, and cross-chain EVM virtualization. This repo is intended for developers who want to:
10
- - Test and validate contracts on public testnets (Ethereum Sepolia, Arbitrum Sepolia)
11
- - Prepare for mainnet deployment after testnet validation
12
- - Contribute to the evolution of the EVVM protocol
12
+ ## What's included?
13
+
14
+ EVVM provides a complete ecosystem of smart contracts:
15
+ - **Core EVVM**: Your virtual blockchain's main engine
16
+ - **NameService**: Domain name system for your blockchain (like ENS)
17
+ - **Staking**: Token staking and rewards system
18
+ - **Treasury**: Secure fund management inside the host chain or across chains
19
+ - **Estimator**: Reward calculation and optimization
20
+
21
+ ## Use Cases
22
+
23
+ This repository serves two main purposes:
24
+
25
+ ### Deploy Your Own EVVM Instance
26
+ Create and deploy a complete virtual blockchain with all EVVM contracts on testnets for experimentation and testing.
27
+
28
+ ### Build Services Using Existing EVVM
29
+ Use EVVM contracts as a library to build services that interact with already deployed EVVM instances.
30
+
31
+ ---
32
+
33
+ ## Quick Start Options
34
+
35
+ Choose your path based on what you want to achieve:
36
+
37
+ ### Option A: Building Services on Existing EVVM
38
+
39
+ **Perfect if you want to create smart contracts that interact with already deployed EVVM instances.**
40
+
41
+ Simply install the library and start building:
42
+
43
+ ```bash
44
+ # Install via NPM
45
+ npm install @evvm/testnet-contracts
46
+
47
+ # OR install via Forge
48
+ forge install EVVM-org/Testnet-Contracts
49
+ ```
50
+
51
+ **What you get**: Access to all EVVM interfaces and contracts to build services that interact with live EVVM instances on testnets.
52
+
53
+ **Next steps**: Jump to [Library Usage](#library-usage) section below.
54
+
55
+ ### Option B: Deploy Your Own Complete EVVM Instance
56
+
57
+ **Perfect if you want to create your own virtual blockchain with custom tokens and governance.**
58
+
59
+ Follow the complete deployment process:
60
+
61
+ **What you get**: Your own virtual blockchain with custom tokens, domain system, staking rewards, and treasury management - all deployed and verified on public testnets.
62
+
63
+ **Next steps**: Jump to [Deploy Your Own EVVM](#deploy-your-own-evvm) section below.
64
+
65
+ ---
66
+
67
+ ## Library Usage
68
+
69
+ > **For Building Services**: This section is for developers who want to build smart contracts that interact with existing EVVM instances. If you want to deploy your own complete EVVM instance, skip to [Deploy Your Own EVVM](#deploy-your-own-evvm).
70
+
71
+ This repository can be used as a library in your Solidity projects through multiple installation methods:
72
+
73
+ ### Installation Options
74
+
75
+ #### Option 1: NPM
76
+ ```bash
77
+ npm install @evvm/testnet-contracts
78
+ ```
79
+
80
+ #### Option 2: Forge
81
+ ```bash
82
+ forge install EVVM-org/Testnet-Contracts
83
+ ```
84
+
85
+ ### Configuration
86
+
87
+ #### If using NPM installation
88
+ Add to your `foundry.toml`:
89
+ ```toml
90
+ remappings = [
91
+ "@evvm/testnet-contracts/=node_modules/@evvm/testnet-contracts/src/",
92
+ ]
93
+ ```
94
+
95
+ #### If using Forge installation
96
+ Add to your `foundry.toml`:
97
+ ```toml
98
+ remappings = [
99
+ "@evvm/testnet-contracts/=lib/Testnet-Contracts/src/",
100
+ ]
101
+ ```
102
+
103
+ ### Package Structure
104
+
105
+ ```
106
+ @evvm/testnet-contracts/
107
+ ├── src/
108
+ │ ├── contracts/
109
+ │ │ ├── evvm/Evvm.sol # Core EVVM implementation
110
+ │ │ ├── nameService/NameService.sol # Domain name resolution
111
+ │ │ ├── staking/Staking.sol # Staking mechanism
112
+ │ │ ├── staking/Estimator.sol # Rewards estimation
113
+ │ │ ├── treasury/Treasury.sol # Treasury management
114
+ │ │ └── treasuryTwoChains/ # Cross-chain treasury contracts
115
+ │ ├── interfaces/ # All contract interfaces
116
+ │ └── lib/ # Utility libraries
117
+ ```
118
+
119
+ ### Quick Integration Example
120
+
121
+ ```solidity
122
+ // SPDX-License-Identifier: MIT
123
+ pragma solidity ^0.8.19;
124
+
125
+ import "@evvm/testnet-contracts/interfaces/IEvvm.sol";
126
+ import "@evvm/testnet-contracts/interfaces/ITreasury.sol";
127
+
128
+ contract MyDApp {
129
+ IEvvm public immutable evvm;
130
+ ITreasury public immutable treasury;
131
+
132
+ constructor(address _evvm, address _treasury) {
133
+ evvm = IEvvm(_evvm);
134
+ treasury = ITreasury(_treasury);
135
+ }
136
+
137
+ function getEvvmInfo() external view returns (string memory name, uint256 id) {
138
+ name = evvm.getEvvmName();
139
+ id = evvm.getEvvmID();
140
+ }
141
+ }
142
+ ```
143
+
144
+ ### Available Contracts
145
+
146
+ #### Core Contracts
147
+ - `contracts/evvm/Evvm.sol` - Main EVVM virtual machine implementation
148
+ - `contracts/nameService/NameService.sol` - Domain name resolution system
149
+ - `contracts/staking/Staking.sol` - Token staking and rewards mechanism
150
+ - `contracts/staking/Estimator.sol` - Staking rewards estimation and calculation
151
+ - `contracts/treasury/Treasury.sol` - Manages deposits and withdrawals
152
+
153
+ #### Cross-chain Treasury
154
+ - `contracts/treasuryTwoChains/TreasuryHostChainStation.sol` - Host chain treasury management
155
+ - `contracts/treasuryTwoChains/TreasuryExternalChainStation.sol` - External chain treasury management
156
+
157
+ #### Interfaces
158
+ All contracts have corresponding interfaces in the `interfaces/` directory:
159
+ - `interfaces/IEvvm.sol`
160
+ - `interfaces/INameService.sol`
161
+ - `interfaces/IStaking.sol`
162
+ - `interfaces/IEstimator.sol`
163
+ - `interfaces/ITreasury.sol`
164
+ - `interfaces/ITreasuryHostChainStation.sol`
165
+ - `interfaces/ITreasuryExternalChainStation.sol`
166
+
167
+ #### Utility Libraries
168
+ - `lib/AdvancedStrings.sol` - Advanced string manipulation utilities
169
+ - `lib/SignatureRecover.sol` - Signature recovery utilities
170
+ - `lib/Erc191TestBuilder.sol` - ERC-191 signature testing utilities
171
+
172
+ ### Import Patterns
173
+
174
+ #### Individual Contract Imports
175
+ ```solidity
176
+ import "@evvm/testnet-contracts/contracts/evvm/Evvm.sol";
177
+ import "@evvm/testnet-contracts/interfaces/IEvvm.sol";
178
+ import "@evvm/testnet-contracts/lib/AdvancedStrings.sol";
179
+ ```
180
+
181
+ #### Interface-Only Imports (Recommended for DApps)
182
+ ```solidity
183
+ import "@evvm/testnet-contracts/interfaces/IEvvm.sol";
184
+ import "@evvm/testnet-contracts/interfaces/IStaking.sol";
185
+ ```
186
+
187
+ ### Dependencies
188
+
189
+ #### If using NPM installation
190
+ Dependencies are automatically handled when you install the package. However, you need to ensure you have the peer dependencies:
191
+
192
+ ```bash
193
+ npm install @openzeppelin/contracts
194
+ ```
195
+
196
+ For cross-chain functionality, you might also need:
197
+ ```bash
198
+ npm install @hyperlane-xyz/core
199
+ ```
200
+
201
+ #### If using Forge installation
202
+ You need to manually install all dependencies:
203
+
204
+ ```bash
205
+ forge install OpenZeppelin/openzeppelin-contracts
206
+ forge install hyperlane-xyz/hyperlane-monorepo # For cross-chain functionality
207
+ ```
13
208
 
14
209
  ## Repository Structure
15
210
  - `src/contracts/evvm/` — Core EVVM contracts and storage
@@ -24,30 +219,9 @@ EVVM provides a comprehensive set of smart contracts and tools for scalable, mod
24
219
  - `input/` — Configuration files for deployment (generated by `evvm-init.sh`)
25
220
  - `evvm-init.sh` — Interactive setup and deployment script
26
221
 
27
- ## Public EVVM Contract Address
28
-
29
- ### Ethereum Sepolia Testnet
30
- - **EVVM**: [0x2029bb5e15E22c19Bc8bde3426fab29dD4db8A98](https://sepolia.etherscan.io/address/0x2029bb5e15E22c19Bc8bde3426fab29dD4db8A98#code)
31
- - **NameService**: [0xD904f38B8c9968AbAb63f47c21aB120FCe59F013](https://sepolia.etherscan.io/address/0xD904f38B8c9968AbAb63f47c21aB120FCe59F013#code)
32
- - **Staking**: [0xA68D4a0cFFDc6145D35Ae27521d01b166Fe4AE46](https://sepolia.etherscan.io/address/0xA68D4a0cFFDc6145D35Ae27521d01b166Fe4AE46#code)
33
- - **Estimator**: [0x2aBEAD7519c9AFc14eEc2582dDD9FF04f0da0F42](https://sepolia.etherscan.io/address/0x2aBEAD7519c9AFc14eEc2582dDD9FF04f0da0F42#code)
34
- - **Treasury**: [0x98465F828b82d0b676937e159547F35BBDBdfe91](https://sepolia.etherscan.io/address/0x98465F828b82d0b676937e159547F35BBDBdfe91#code)
35
-
36
- ### Arbitrum Sepolia Testnet
37
- - **EVVM**: [0xC688C12541Ff85EF3E63755F6889317f312d03A3](https://sepolia.arbiscan.io/address/0xC688C12541Ff85EF3E63755F6889317f312d03A3#code)
38
- - **NameService**: [0x82Fbac7857E8407cE6578E02B0be0d3Cd15Fb790](https://sepolia.arbiscan.io/address/0x82Fbac7857E8407cE6578E02B0be0d3Cd15Fb790#code)
39
- - **Staking**: [0xaC3C70604a5633807Ae0149B6E6766452355635C](https://sepolia.arbiscan.io/address/0xaC3C70604a5633807Ae0149B6E6766452355635C#code)
40
- - **Estimator**: [0xC4FF60fBAEf050FC476f4Ab10CA75378A2Cc79A3](https://sepolia.arbiscan.io/address/0xC4FF60fBAEf050FC476f4Ab10CA75378A2Cc79A3#code)
41
- - **Treasury**: [0x7d4F9D95e84f6903c7247527e6BF1FA864F7c764](https://sepolia.arbiscan.io/address/0x7d4F9D95e84f6903c7247527e6BF1FA864F7c764#code)
42
-
43
- ## Development Flow
44
- 1. **Playground**: Prototype and experiment with new features in the playground repo.
45
- 2. **Testnet (this repo)**: Integrate, test, and validate on public testnets.
46
- 3. **Mainnet**: After successful testnet validation, proceed to mainnet deployment.
47
-
48
222
  ## Prerequisites
49
223
  - [Foundry](https://getfoundry.sh/) (Solidity development toolkit)
50
- - Node.js (for dependency management)
224
+ - Node.js (if using npm installation method)
51
225
  - Bash shell (for running `evvm-init.sh`)
52
226
  - Environment variables set up (`.env` file with API keys and RPC URLs)
53
227
 
@@ -73,9 +247,11 @@ This command will prompt you to enter your private key securely. The key will be
73
247
  ## Key Dependencies
74
248
  - [OpenZeppelin Contracts](https://github.com/OpenZeppelin/openzeppelin-contracts)
75
249
 
76
- ## Quick Start
250
+ ## Deploy Your Own EVVM
251
+
252
+ Want to create your own virtual blockchain? Follow these steps to deploy a complete EVVM instance on testnets:
77
253
 
78
- Deploy your EVVM virtual blockchain on testnet in 4 simple steps:
254
+ > **What you'll get**: Your own virtual blockchain with custom tokens, domain system, staking rewards, and treasury management - all deployed and verified on public testnets.
79
255
 
80
256
  ### 1. Clone and Install
81
257
  ```bash
@@ -142,18 +318,15 @@ If you prefer manual control over configuration, create these files in `input/`:
142
318
  }
143
319
  ```
144
320
 
145
- ## Local Development
146
- Start a local Anvil chain:
147
- ```bash
148
- make anvil
149
- ```
321
+ ## Local Development & Manual Deployment
150
322
 
151
- Deploy contracts to local testnet:
323
+ ### Start Local Development
152
324
  ```bash
153
- make deployLocalTestnet
325
+ make anvil # Start local blockchain
326
+ make deployLocalTestnet # Deploy to local chain
154
327
  ```
155
328
 
156
- ## Manual Deployment
329
+ ### Manual Deployment to Testnets
157
330
 
158
331
  If you prefer to deploy manually after configuration:
159
332
 
@@ -173,12 +346,6 @@ forge script script/DeployTestnet.s.sol:DeployTestnet \
173
346
  --etherscan-api-key $ETHERSCAN_API
174
347
  ```
175
348
 
176
- ## Local Development
177
- ```bash
178
- make anvil # Start local blockchain
179
- make deployLocalTestnet # Deploy to local chain
180
- ```
181
-
182
349
  ## Development Commands
183
350
  ```bash
184
351
  make install # Install dependencies and compile
@@ -194,7 +361,6 @@ The EVVM ecosystem consists of five main contracts:
194
361
  - **Staking.sol**: Token staking and rewards mechanism
195
362
  - **Estimator.sol**: Staking rewards estimation and calculation
196
363
  - **Treasury.sol**: Manages deposits and withdrawals of ETH and ERC20 tokens
197
- - **Treasury.sol**: Manages deposits and withdrawals of ETH and ERC20 tokens
198
364
 
199
365
  ## Configuration Files
200
366
  Key files for EVVM deployment:
@@ -204,6 +370,15 @@ Key files for EVVM deployment:
204
370
  - `makefile` — Build and deployment automation
205
371
 
206
372
  ## Contributing
373
+
374
+ **Development Flow Context**: This repository is the next step after successful playground testing. It is dedicated to advanced integration, deployment, and validation on public testnets, before mainnet implementation.
375
+
376
+ ### Development Flow
377
+ 1. **Playground**: Prototype and experiment with new features in the playground repo.
378
+ 2. **Testnet (this repo)**: Integrate, test, and validate on public testnets.
379
+ 3. **Mainnet**: After successful testnet validation, proceed to mainnet deployment.
380
+
381
+ ### How to Contribute
207
382
  1. Fork the repository
208
383
  2. Create a feature branch and make changes
209
384
  3. Add tests for new features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evvm/testnet-contracts",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "EVVM Testnet Contracts - Smart contracts and tools for scalable, modular, and cross-chain EVM virtualization",
5
5
  "files": [
6
6
  "contracts/**/*.sol",