Add full monorepo: virtual-banker, backend, frontend, docs, scripts, deployment
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
230
docs/DEPLOYMENT_METHOD_REMIX_IDE.md
Normal file
230
docs/DEPLOYMENT_METHOD_REMIX_IDE.md
Normal file
@@ -0,0 +1,230 @@
|
||||
# Remix IDE Deployment Guide - ChainID 138
|
||||
|
||||
**Date**: 2025-01-12
|
||||
**Purpose**: Guide for deploying contracts via Remix IDE when direct deployment fails
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Remix IDE provides an alternative deployment method that may work when direct `forge` deployment fails. This guide walks through deploying contracts to ChainID 138 using Remix IDE.
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. **Remix IDE Access**
|
||||
- Visit: https://remix.ethereum.org
|
||||
- No account required (works in browser)
|
||||
|
||||
2. **Network Configuration**
|
||||
- RPC Endpoint: `http://192.168.11.250:8545`
|
||||
- ChainID: 138
|
||||
- Network Name: DBIS Chain
|
||||
|
||||
3. **Deployer Account**
|
||||
- Private Key: (from `.env` file)
|
||||
- Address: `0x4A666F96fC8764181194447A7dFdb7d471b301C8`
|
||||
- Balance: 999M+ ETH
|
||||
|
||||
---
|
||||
|
||||
## Step-by-Step Deployment
|
||||
|
||||
### Step 1: Connect to Remix IDE
|
||||
|
||||
1. Open browser and navigate to: https://remix.ethereum.org
|
||||
2. Wait for Remix IDE to load completely
|
||||
|
||||
### Step 2: Create Contract File
|
||||
|
||||
1. In Remix IDE, click **"File Explorer"** in the left sidebar
|
||||
2. Click **"Create New File"**
|
||||
3. Name the file: `MockLinkToken.sol`
|
||||
4. Copy the contract code:
|
||||
|
||||
```solidity
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.19;
|
||||
|
||||
contract MockLinkToken {
|
||||
string public name = "Chainlink Token";
|
||||
string public symbol = "LINK";
|
||||
uint8 public decimals = 18;
|
||||
uint256 public totalSupply;
|
||||
|
||||
mapping(address => uint256) public balanceOf;
|
||||
mapping(address => mapping(address => uint256)) public allowance;
|
||||
|
||||
event Transfer(address indexed from, address indexed to, uint256 value);
|
||||
event Approval(address indexed owner, address indexed spender, uint256 value);
|
||||
|
||||
constructor() {
|
||||
totalSupply = 1000000000 * 10**18; // 1 billion tokens
|
||||
balanceOf[msg.sender] = totalSupply;
|
||||
emit Transfer(address(0), msg.sender, totalSupply);
|
||||
}
|
||||
|
||||
function transfer(address to, uint256 value) external returns (bool) {
|
||||
require(balanceOf[msg.sender] >= value, "Insufficient balance");
|
||||
balanceOf[msg.sender] -= value;
|
||||
balanceOf[to] += value;
|
||||
emit Transfer(msg.sender, to, value);
|
||||
return true;
|
||||
}
|
||||
|
||||
function approve(address spender, uint256 value) external returns (bool) {
|
||||
allowance[msg.sender][spender] = value;
|
||||
emit Approval(msg.sender, spender, value);
|
||||
return true;
|
||||
}
|
||||
|
||||
function transferFrom(address from, address to, uint256 value) external returns (bool) {
|
||||
require(balanceOf[from] >= value, "Insufficient balance");
|
||||
require(allowance[from][msg.sender] >= value, "Insufficient allowance");
|
||||
balanceOf[from] -= value;
|
||||
balanceOf[to] += value;
|
||||
allowance[from][msg.sender] -= value;
|
||||
emit Transfer(from, to, value);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Step 3: Compile Contract
|
||||
|
||||
1. Click **"Solidity Compiler"** in the left sidebar
|
||||
2. Select compiler version: **0.8.19** (or compatible)
|
||||
3. Click **"Compile MockLinkToken.sol"**
|
||||
4. Wait for compilation to complete (check for green checkmark)
|
||||
|
||||
### Step 4: Configure Network Connection
|
||||
|
||||
1. Click **"Deploy & Run Transactions"** in the left sidebar
|
||||
2. Under **"Environment"**, select **"Injected Provider - MetaMask"** or **"Custom"**
|
||||
3. If using Custom:
|
||||
- Click **"Add Network"**
|
||||
- Network Name: `DBIS Chain`
|
||||
- RPC URL: `http://192.168.11.250:8545`
|
||||
- Chain ID: `138`
|
||||
- Currency Symbol: `ETH`
|
||||
- Block Explorer: `https://explorer.d-bis.org`
|
||||
|
||||
### Step 5: Connect Wallet
|
||||
|
||||
1. If using MetaMask:
|
||||
- Click **"Connect to MetaMask"**
|
||||
- Approve connection in MetaMask
|
||||
- Ensure correct account is selected
|
||||
|
||||
2. If using Custom Provider:
|
||||
- Enter your private key (from `.env` file)
|
||||
- **⚠️ WARNING**: Only use in secure environment
|
||||
- Click **"Connect"**
|
||||
|
||||
### Step 6: Deploy Contract
|
||||
|
||||
1. In **"Deploy & Run Transactions"**:
|
||||
- Select contract: **"MockLinkToken"**
|
||||
- Constructor parameters: (none required)
|
||||
- Click **"Deploy"**
|
||||
|
||||
2. Wait for deployment:
|
||||
- Transaction will appear in transaction list
|
||||
- Wait for confirmation
|
||||
- Check transaction status
|
||||
|
||||
### Step 7: Verify Deployment
|
||||
|
||||
1. After deployment, contract address will appear
|
||||
2. Click on contract address to view details
|
||||
3. Test contract functions:
|
||||
- `name()` - Should return "Chainlink Token"
|
||||
- `symbol()` - Should return "LINK"
|
||||
- `totalSupply()` - Should return 1000000000000000000000000000
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issue: Cannot Connect to Network
|
||||
|
||||
**Solution**:
|
||||
- Verify RPC endpoint is accessible: `http://192.168.11.250:8545`
|
||||
- Check if network allows external connections
|
||||
- Try using MetaMask with custom network
|
||||
|
||||
### Issue: Transaction Fails
|
||||
|
||||
**Solution**:
|
||||
- Check deployer account balance
|
||||
- Verify gas settings (increase gas limit if needed)
|
||||
- Check transaction status on block explorer
|
||||
|
||||
### Issue: Contract Not Deployed
|
||||
|
||||
**Solution**:
|
||||
- Verify transaction was actually sent
|
||||
- Check block explorer for transaction
|
||||
- Review Remix console for errors
|
||||
|
||||
---
|
||||
|
||||
## Alternative: Minimal Contract Test
|
||||
|
||||
If full contract fails, try deploying a minimal contract first:
|
||||
|
||||
```solidity
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.19;
|
||||
|
||||
contract TestMinimal {
|
||||
uint256 public x = 1;
|
||||
|
||||
function setX(uint256 _x) external {
|
||||
x = _x;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
This minimal contract (204 bytes) can help verify if the issue is contract-specific or network-wide.
|
||||
|
||||
---
|
||||
|
||||
## Security Notes
|
||||
|
||||
1. **Private Key Security**
|
||||
- Never share your private key
|
||||
- Only use Remix IDE in secure environment
|
||||
- Consider using MetaMask instead of direct private key
|
||||
|
||||
2. **Network Security**
|
||||
- Verify RPC endpoint is legitimate
|
||||
- Check network configuration before connecting
|
||||
- Be cautious with test networks
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
After successful deployment:
|
||||
|
||||
1. **Save Contract Address**
|
||||
- Copy deployed contract address
|
||||
- Update `.env` file with new address
|
||||
- Update configuration files
|
||||
|
||||
2. **Verify Contract**
|
||||
- Use block explorer to verify contract
|
||||
- Check contract bytecode matches source
|
||||
- Verify constructor parameters
|
||||
|
||||
3. **Test Contract Functions**
|
||||
- Test all contract functions
|
||||
- Verify contract behavior
|
||||
- Check event emissions
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-01-12
|
||||
|
||||
Reference in New Issue
Block a user