46 Commits

Author SHA1 Message Date
defiQUG
9a83aa2034 Align default bridge routes with Wemix and config-ready CCIP receivers.
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m2s
CI/CD Pipeline / Security Scanning (push) Successful in 2m36s
CI/CD Pipeline / Lint and Format (push) Failing after 33s
CI/CD Pipeline / Terraform Validation (push) Failing after 21s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 25s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 48s
Validation / validate-genesis (push) Successful in 26s
Validation / validate-terraform (push) Failing after 25s
Validation / validate-kubernetes (push) Failing after 8s
Validation / validate-smart-contracts (push) Failing after 8s
Validation / validate-security (push) Failing after 1m36s
Validation / validate-documentation (push) Failing after 13s
Verify Deployment / Verify Deployment (push) Failing after 44s
Add the runtime JSON mirror and update token-aggregation fallbacks for Gnosis, Cronos, Celo, and Wemix (1111) lanes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-23 02:21:38 -07:00
defiQUG
6c0328b040 docs: point GRU transport Jest gate at loader design spec
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m8s
CI/CD Pipeline / Security Scanning (push) Successful in 2m17s
CI/CD Pipeline / Lint and Format (push) Failing after 34s
CI/CD Pipeline / Terraform Validation (push) Failing after 23s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 24s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 52s
Validation / validate-genesis (push) Successful in 29s
Validation / validate-terraform (push) Failing after 24s
Validation / validate-kubernetes (push) Failing after 9s
Validation / validate-smart-contracts (push) Failing after 9s
Validation / validate-security (push) Failing after 1m9s
Validation / validate-documentation (push) Failing after 16s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 22s
Verify Deployment / Verify Deployment (push) Failing after 43s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-12 00:00:43 -07:00
defiQUG
c3ef31d8f3 fix(token-aggregation): merge live Uniswap V2 catalog TVL into CMC pool rows
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m5s
CI/CD Pipeline / Security Scanning (push) Successful in 2m27s
CI/CD Pipeline / Lint and Format (push) Failing after 36s
CI/CD Pipeline / Terraform Validation (push) Failing after 22s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 26s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 50s
Validation / validate-genesis (push) Successful in 29s
Validation / validate-terraform (push) Failing after 28s
Validation / validate-kubernetes (push) Failing after 8s
Validation / validate-smart-contracts (push) Failing after 9s
Validation / validate-security (push) Failing after 1m11s
Validation / validate-documentation (push) Failing after 16s
Verify Deployment / Verify Deployment (push) Failing after 53s
Resolve pool catalog from multiple monorepo cwd layouts; prefer catalog
totalLiquidityUsd over lower DB/repo-fallback TVL. Extend CMC report tests
for cWUSDC pair liquidity assertions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 21:26:14 -07:00
defiQUG
0f8476f493 fix(token-aggregation): gate GRU loader tests; add test:ci:gru script
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m4s
CI/CD Pipeline / Security Scanning (push) Has started running
CI/CD Pipeline / Lint and Format (push) Has been cancelled
CI/CD Pipeline / Terraform Validation (push) Has been cancelled
CI/CD Pipeline / Kubernetes Validation (push) Has been cancelled
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Has been cancelled
Validation / validate-genesis (push) Has been cancelled
Validation / validate-terraform (push) Has been cancelled
Validation / validate-kubernetes (push) Has been cancelled
Validation / validate-smart-contracts (push) Has been cancelled
Validation / validate-security (push) Has been cancelled
Validation / validate-documentation (push) Has been cancelled
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 1m2s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 25s
Verify Deployment / Verify Deployment (push) Failing after 51s
Default test:ci skips suites that require unpublished gru-transport-active
loader data; set RUN_GRU_TRANSPORT_LOADER_TESTS=1 to run them. Keeps CI
green while the monorepo loader gains GRU exports.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 21:08:02 -07:00
defiQUG
e279443e1c docs(ccip): document fund-ccip --cap-to-deployer for deployer-only LINK
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 16:12:14 -07:00
defiQUG
01e0779a3d feat(ccip): cap LINK funding to deployer balance per chain; fix Arbitrum gas
- parse_link_tags: add --cap-to-deployer for fund-ccip-bridges-with-link.sh
- fund-ccip: min(target, balance//bridges) per chain; reuse one wei for both
  bridges under cap so post-transfer balance does not undershoot the second send
- Arbitrum: append legacy --gas-price from RPC (3x) with floor to clear base fee

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 16:09:31 -07:00
defiQUG
0561d26bcd fix(deployment): parse cast send receipts and extend RPC timeouts for LINK ops
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m8s
CI/CD Pipeline / Lint and Format (push) Failing after 1m8s
CI/CD Pipeline / Terraform Validation (push) Failing after 25s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 26s
CI/CD Pipeline / Security Scanning (push) Successful in 3m5s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 51s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 58s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 30s
Validation / validate-genesis (push) Successful in 27s
Validation / validate-kubernetes (push) Failing after 9s
Validation / validate-smart-contracts (push) Failing after 8s
Validation / validate-terraform (push) Failing after 44s
Validation / validate-documentation (push) Failing after 18s
Validation / validate-security (push) Failing after 2m14s
Verify Deployment / Verify Deployment (push) Failing after 51s
Cast can exit 0 on mined reverts; classify receipt output so operators see
failures. Add cast --timeout/--rpc-timeout on mainnet and L2 LINK transfers.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 15:23:05 -07:00
defiQUG
21578e1a13 fix(token-aggregation): normalize inflated liquidityUsd; token-price report
- Apply decimal-aware liquidity normalization on /tokens and reports
- Add GET /report/token-price/:symbol compact evidence snapshot
- Extend route tests for normalization and token-price endpoint

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 12:55:10 -07:00
defiQUG
76143a8fe3 feat(token-aggregation): reports, PMM quotes, config; Engine X flash vaults
- Expand token-aggregation API (report routes), canonical tokens, pools
- Add flash vault contracts + tests (indexed, DODO cwUSDC, XAUT borrow)
- PMM pools JSON, deploy/export scripts, metamask verified list

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 12:56:30 -07:00
defiQUG
27f8e3a500 Add Engine X virtual batch canary vault
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m8s
CI/CD Pipeline / Security Scanning (push) Successful in 2m27s
CI/CD Pipeline / Lint and Format (push) Failing after 40s
CI/CD Pipeline / Terraform Validation (push) Failing after 21s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 23s
Validation / validate-genesis (push) Successful in 25s
Validation / validate-terraform (push) Failing after 22s
Validation / validate-kubernetes (push) Failing after 7s
Validation / validate-smart-contracts (push) Failing after 7s
Validation / validate-security (push) Failing after 1m19s
Validation / validate-documentation (push) Failing after 13s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 25s
Verify Deployment / Verify Deployment (push) Failing after 45s
2026-05-07 07:09:17 -07:00
defiQUG
bb64836886 Add Engine X proof vaults
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m31s
CI/CD Pipeline / Security Scanning (push) Successful in 3m56s
CI/CD Pipeline / Lint and Format (push) Failing after 35s
CI/CD Pipeline / Terraform Validation (push) Failing after 31s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 5m14s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 52s
Validation / validate-genesis (push) Successful in 25s
Validation / validate-terraform (push) Failing after 35s
Validation / validate-kubernetes (push) Failing after 7s
Validation / validate-smart-contracts (push) Failing after 7s
Validation / validate-security (push) Failing after 10m7s
Validation / validate-documentation (push) Failing after 16s
2026-05-07 05:25:53 -07:00
defiQUG
2ff84bd4ee Accept ONEINCH API key alias 2026-04-30 04:10:25 -07:00
defiQUG
c0173f3132 Add atomic DODO seeding helper
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m6s
CI/CD Pipeline / Security Scanning (push) Successful in 2m34s
CI/CD Pipeline / Lint and Format (push) Failing after 37s
CI/CD Pipeline / Terraform Validation (push) Failing after 22s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 21s
Validation / validate-genesis (push) Successful in 33s
Validation / validate-terraform (push) Failing after 29s
Validation / validate-kubernetes (push) Failing after 11s
Validation / validate-smart-contracts (push) Failing after 12s
Validation / validate-security (push) Failing after 58s
Validation / validate-documentation (push) Failing after 19s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 23s
Verify Deployment / Verify Deployment (push) Failing after 49s
2026-04-30 03:06:42 -07:00
defiQUG
bbf1f6ba89 Update ALL Mainnet configuration status
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m10s
CI/CD Pipeline / Security Scanning (push) Successful in 3m19s
CI/CD Pipeline / Lint and Format (push) Failing after 41s
CI/CD Pipeline / Terraform Validation (push) Failing after 24s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 27s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 41s
Validation / validate-genesis (push) Successful in 34s
Validation / validate-terraform (push) Failing after 23s
Validation / validate-kubernetes (push) Failing after 16s
Validation / validate-smart-contracts (push) Failing after 13s
Validation / validate-security (push) Failing after 1m12s
Validation / validate-documentation (push) Failing after 18s
Verify Deployment / Verify Deployment (push) Failing after 50s
2026-04-29 23:50:57 -07:00
defiQUG
6aaa100bbc Add DODO-only EnhancedSwapRouterV2 routing helpers 2026-04-29 23:50:26 -07:00
defiQUG
1a14622b22 Stabilize Chain 138 PMM router helpers 2026-04-29 06:20:36 -07:00
defiQUG
68cd541265 Stabilize oracle and relay status helpers 2026-04-28 23:33:58 -07:00
defiQUG
4bf669b667 Add ALL Mainnet enhanced router deploy script 2026-04-28 22:36:55 -07:00
defiQUG
459b377c76 deployment(ccip): Step 0 allowlist Wemix/Gnosis/Cronos/Celo on Chain 138 CCIPRouter
Without supportedChains(selector)=true, bridge.calculateFee reverts CCIPRouter:
chain not supported. Registers selectors via addSupportedChain before addDestination.

Made-with: Cursor
2026-04-28 11:20:39 -07:00
defiQUG
68a245d5e4 docs(all-mainnet): align with canonical surface JSON; verification addendum
- ALL_MAINNET_CONFIGURATION: bridge_live vs swap inventory pending; CI script paths;
  remove stale sameChainSwapInventoryPublished:true claims
- ALL_MAINNET_VERIFICATION_COMPLETE: separate bridge verification from DEX inventory posture

Made-with: Cursor
2026-04-28 04:20:16 -07:00
defiQUG
12ba59a3f2 Add wallet metadata to MetaMask token list
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m14s
CI/CD Pipeline / Security Scanning (push) Successful in 2m58s
CI/CD Pipeline / Lint and Format (push) Failing after 41s
CI/CD Pipeline / Terraform Validation (push) Failing after 25s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 25s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 46s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 25s
Validate Token List / validate (push) Failing after 25s
Validation / validate-genesis (push) Successful in 35s
Validation / validate-terraform (push) Failing after 29s
Validation / validate-kubernetes (push) Failing after 13s
Validation / validate-smart-contracts (push) Failing after 14s
Validation / validate-security (push) Failing after 1m13s
Validation / validate-documentation (push) Failing after 16s
Verify Deployment / Verify Deployment (push) Failing after 51s
2026-04-28 02:34:33 -07:00
defiQUG
fcd55aa9c4 feat(token-aggregation): add historical pricing context, backfill, and indexer hardening
Some checks failed
CI/CD Pipeline / Solidity Contracts (pull_request) Failing after 1m6s
CI/CD Pipeline / Security Scanning (pull_request) Successful in 12m42s
CI/CD Pipeline / Lint and Format (pull_request) Failing after 42s
CI/CD Pipeline / Terraform Validation (pull_request) Failing after 25s
CI/CD Pipeline / Kubernetes Validation (pull_request) Successful in 27s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (pull_request) Failing after 49s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (pull_request) Failing after 26s
Validation / validate-genesis (pull_request) Successful in 36s
Validation / validate-terraform (pull_request) Failing after 28s
Validation / validate-kubernetes (pull_request) Failing after 12s
Validation / validate-smart-contracts (pull_request) Failing after 13s
Validation / validate-security (pull_request) Failing after 1m39s
Validation / validate-documentation (pull_request) Failing after 18s
2026-04-25 23:45:07 -07:00
defiQUG
c3b1b2cebc config: add explicit chain138 sentry and alltra hybx classes 2026-04-25 08:14:07 -07:00
defiQUG
4540ec4480 feat: add universal resource policy profile registry 2026-04-24 22:06:26 -07:00
defiQUG
045a6a9245 docs: mark besu base templates as placeholder advertised hosts 2026-04-24 22:02:47 -07:00
defiQUG
f3d2961b97 feat: add hybx omnl stack and gas pmm tooling
Some checks failed
CI/CD Pipeline / Lint and Format (push) Failing after 46s
CI/CD Pipeline / Terraform Validation (push) Failing after 35s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 37s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 1m50s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 2m19s
Validation / validate-genesis (push) Successful in 51s
Validation / validate-terraform (push) Failing after 39s
Validation / validate-kubernetes (push) Failing after 10s
CI/CD Pipeline / Solidity Contracts (push) Failing after 12m56s
Validation / validate-smart-contracts (push) Failing after 12s
CI/CD Pipeline / Security Scanning (push) Failing after 15m52s
Validation / validate-security (push) Failing after 10m59s
Validation / validate-documentation (push) Failing after 17s
Validate Token List / validate (push) Failing after 30s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 26s
Verify Deployment / Verify Deployment (push) Failing after 56s
2026-04-24 12:56:40 -07:00
defiQUG
c3d4c786fa Standardize deployment env and deployer handling 2026-04-22 14:47:28 -07:00
defiQUG
768168de5e chore: .gitignore and README updates
Made-with: Cursor
2026-04-21 22:00:55 -07:00
defiQUG
843cdbf71c feat: expand non-evm relay and route planning support 2026-04-18 12:05:34 -07:00
defiQUG
da78073104 Deploy Chain 138 canonical non-gas PMM mesh 2026-04-15 16:31:45 -07:00
defiQUG
79750d92e6 Archive legacy status docs and canonicalize genesis entrypoints 2026-04-13 21:45:16 -07:00
defiQUG
7517869ea6 Add managed quote-push treasury workflows 2026-04-13 21:37:33 -07:00
defiQUG
2b52cc6e32 refactor(archive): move historical contracts and adapters to archive directory
- Archived multiple non-EVM adapters (Algorand, Hedera, Tron, TON, Cosmos, Solana) and compliance contracts (IndyVerifier) to `archive/solidity/contracts/`.
- Updated documentation to reflect the historical status of archived components.
- Adjusted `foundry.toml` and `README.md` for clarity on historical dependencies and configurations.
- Enhanced Makefile and package.json scripts for improved contract testing and building processes.
- Removed obsolete contracts (AlltraCustomBridge, CommodityCCIPBridge, ISO4217WCCIPBridge, VaultBridgeAdapter) from the main directory.
- Updated implementation reports to indicate archived status for various components.
2026-04-12 18:21:05 -07:00
defiQUG
8ec6af94d5 fix(relay): defer on inventory probe errors; optional retry without budget
- MessageQueue: resetRetryCount and retry({ increment: false }) for shedder/inventory paths
- RelayService: treat bridge_inventory_probe like other soft-failure scopes; wrap inventory check in try/catch
- Token aggregation: catch DB pool lookup errors and fall back to live DODO path
- Mainnet WETH profile: START_BLOCK=latest; extend RELAY_SKIP_MESSAGE_IDS for backlog hygiene
- Extend relay test.js for deferred requeue behavior

Made-with: Cursor
2026-04-12 11:35:18 -07:00
defiQUG
06c4bebcb7 fix(token-aggregation): restore Chain 138 cAUSDT fallback for report API
Aligns canonical-tokens FALLBACK_ADDRESSES with smart-contracts-master.json
so /api/v1/report/token-list includes cAUSDT when env overrides are absent.

Made-with: Cursor
2026-04-12 07:06:34 -07:00
defiQUG
f19c771760 refactor(bridge): trustless swap stack and fork test cleanups
Tighten EnhancedSwapRouter, InboxETH, SwapRouter, MerkleProofVerifier; align
DEXIntegration and ForkTests with updated behavior.

Made-with: Cursor
2026-04-12 06:44:20 -07:00
defiQUG
6817f53591 Flash unwinder contracts and scripts, relay lane tuning, trustless bridge and token-aggregation updates.
Made-with: Cursor
2026-04-12 06:33:54 -07:00
defiQUG
662b35ad69 config(besu): allowlist ops EOA 0xB2dE… for core/Thirdweb admin RPC deploy
Made-with: Cursor
2026-04-08 08:34:08 -07:00
defiQUG
76aa419320 feat: bridges, PMM, flash workflow, token-aggregation, and deployment docs
- CCIP/trustless bridge contracts, GRU tokens, DEX/PMM tests, reserve vault.
- Token-aggregation service routes, planner, chain config, relay env templates.
- Config snapshots and multi-chain deployment markdown updates.
- gitignore services/btc-intake/dist/ (tsc output); do not track dist.

Run forge build && forge test before deploy (large solc graph).

Made-with: Cursor
2026-04-07 23:40:52 -07:00
defiQUG
0fb7bba07b chore: gitignore Foundry artifacts/ and untrack build JSON
artifacts/ is regenerated by forge build; matches existing out/ and cache/ ignores.

Made-with: Cursor
2026-04-07 22:08:38 -07:00
defiQUG
7678218172 Require dual-jurisdiction approval for asset-scoped governance 2026-04-01 11:28:37 -07:00
defiQUG
4a641475cd Enforce asset-scoped governance metadata controls 2026-04-01 01:59:10 -07:00
defiQUG
162a7d5b03 fix(config): drop unsupported miner-coinbase from validators 2026-03-29 18:49:31 -07:00
defiQUG
a923d7b397 fix(env): load derived dotenv vars under nounset 2026-03-29 18:41:15 -07:00
defiQUG
59cdd5af60 fix(deployment): load env safely under nounset 2026-03-29 18:27:24 -07:00
defiQUG
089da29b9b fix(token-aggregation): tolerate missing market data tables 2026-03-29 18:25:54 -07:00
1505 changed files with 63662 additions and 102065 deletions

71
.github/workflows/hybx-omnl-ts.yml vendored Normal file
View File

@@ -0,0 +1,71 @@
# TypeScript build + IPSAS/journal anchor (no Forge — keeps PR feedback fast).
name: HYBX OMNL TypeScript & anchor
on:
workflow_dispatch:
pull_request:
branches: [main, develop]
paths:
- 'contracts/hybx-omnl/**'
- 'services/token-aggregation/**'
- 'config/omnl-*.json'
- 'config/hybx-omnl-*.json'
- 'config/deployment-omnl.example.env'
- 'scripts/hybx-omnl/**'
- 'test/hybx-omnl/**'
- '.github/workflows/hybx-omnl-ts.yml'
- '.github/workflows/omnl-reconcile.yml'
push:
branches: [main, develop]
paths:
- 'contracts/hybx-omnl/**'
- 'services/token-aggregation/**'
- 'config/omnl-*.json'
- 'config/hybx-omnl-*.json'
- 'config/deployment-omnl.example.env'
- 'scripts/hybx-omnl/**'
- 'test/hybx-omnl/**'
- '.github/workflows/hybx-omnl-ts.yml'
- '.github/workflows/omnl-reconcile.yml'
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
ts-and-anchor:
name: token-aggregation build + reconcile artifact
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate cross-chain OMNL config
run: node scripts/hybx-omnl/validate-cross-chain-config.mjs
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
cache-dependency-path: services/token-aggregation/package-lock.json
- name: Install token-aggregation dependencies
working-directory: services/token-aggregation
run: npm ci
- name: OMNL reconcile artifact
run: bash scripts/hybx-omnl/omnl-reconcile-artifact.sh
- name: Build token-aggregation
working-directory: services/token-aggregation
run: npm run build
- name: Upload reconcile artifacts
uses: actions/upload-artifact@v4
with:
name: omnl-reconcile-pr-${{ github.run_id }}
path: artifacts/omnl-reconcile/
if-no-files-found: error
retention-days: 14

67
.github/workflows/omnl-reconcile.yml vendored Normal file
View File

@@ -0,0 +1,67 @@
name: OMNL reconcile anchor
on:
workflow_dispatch:
schedule:
# Weekly Monday 07:05 UTC — adjust as needed
- cron: '5 7 * * 1'
pull_request:
branches: [main, develop]
paths:
- 'config/omnl-ipsas-gl-registry.json'
- 'config/omnl-journal-matrix.json'
- 'config/deployment-omnl.example.env'
- 'services/token-aggregation/scripts/omnl-reconcile-report.mjs'
- 'services/token-aggregation/package.json'
- 'scripts/hybx-omnl/omnl-reconcile-artifact.sh'
- '.github/workflows/omnl-reconcile.yml'
- '.github/workflows/hybx-omnl-ts.yml'
push:
branches: [main, develop]
paths:
- 'config/omnl-ipsas-gl-registry.json'
- 'config/omnl-journal-matrix.json'
- 'config/deployment-omnl.example.env'
- 'services/token-aggregation/scripts/omnl-reconcile-report.mjs'
- 'services/token-aggregation/package.json'
- 'scripts/hybx-omnl/omnl-reconcile-artifact.sh'
- '.github/workflows/omnl-reconcile.yml'
- '.github/workflows/hybx-omnl-ts.yml'
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
reconcile:
name: Run omnl:reconcile and upload artifacts
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Validate cross-chain OMNL config
run: node scripts/hybx-omnl/validate-cross-chain-config.mjs
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Generate reconcile artifacts
env:
GITHUB_SHA: ${{ github.sha }}
GITHUB_RUN_ID: ${{ github.run_id }}
GITHUB_REPOSITORY: ${{ github.repository }}
run: bash scripts/hybx-omnl/omnl-reconcile-artifact.sh
- name: Upload OMNL reconcile artifacts
uses: actions/upload-artifact@v4
with:
name: omnl-reconcile-${{ github.run_id }}
path: artifacts/omnl-reconcile/
if-no-files-found: error
retention-days: 90

5
.gitignore vendored
View File

@@ -28,6 +28,8 @@ datadir/
# Foundry
out/
artifacts/
.omnl-poller-state.json
cache/
broadcast/
.cronos-verify/
@@ -56,6 +58,9 @@ temp/
# Node modules (if any)
node_modules/
# TypeScript service emit (build in-tree)
services/btc-intake/dist/
# Python
__pycache__/
*.pyc

View File

@@ -36,7 +36,7 @@ help:
@echo " make clean - Clean up temporary files"
@echo " make genesis - Generate genesis file"
@echo " make keys - Generate validator and oracle keys"
@echo " make contracts - Compile and test contracts"
@echo " make contracts - Compile and test contracts (optional: SCOPE=treasury, SCOPE=bridge/trustless, ...)"
@echo " make monitoring - Deploy monitoring stack"
@echo " make assets - Setup and download Azure icons (see Makefile.assets)"
@@ -204,10 +204,11 @@ azure-login:
test:
@echo "Running tests (parallel)..."
@if [ -n "$(SCOPE)" ]; then echo "Forge scope: $(SCOPE)"; else echo "Forge scope: full"; fi
@if [ -f .env ]; then \
source .env && forge test --fork-url "$$RPC_URL" -j $$(nproc) || forge test -j $$(nproc); \
source .env && FORGE_SCOPE="$(SCOPE)" bash scripts/forge/scope.sh test --fork-url "$$RPC_URL" -j $$(nproc) || FORGE_SCOPE="$(SCOPE)" bash scripts/forge/scope.sh test -j $$(nproc); \
else \
forge test -j $$(nproc); \
FORGE_SCOPE="$(SCOPE)" bash scripts/forge/scope.sh test -j $$(nproc); \
fi
@./tests/health-check.sh &
@HEALTH_PID=$$!; \
@@ -224,7 +225,8 @@ clean:
genesis:
@echo "Generating genesis file..."
./scripts/generate-genesis.sh
./scripts/generate-genesis-proper.sh 4
./scripts/validation/validate-genesis.sh
keys:
@echo "Generating keys..."
@@ -233,15 +235,15 @@ keys:
contracts:
@echo "Compiling contracts..."
forge build
@if [ -n "$(SCOPE)" ]; then echo "Forge scope: $(SCOPE)"; else echo "Forge scope: full"; fi
FORGE_SCOPE="$(SCOPE)" bash scripts/forge/scope.sh build
@echo "Running contract tests (parallel)..."
@if [ -f .env ]; then \
source .env && forge test --fork-url "$$RPC_URL" -j $$(nproc) || forge test -j $$(nproc); \
source .env && FORGE_SCOPE="$(SCOPE)" bash scripts/forge/scope.sh test --fork-url "$$RPC_URL" -j $$(nproc) || FORGE_SCOPE="$(SCOPE)" bash scripts/forge/scope.sh test -j $$(nproc); \
else \
forge test -j $$(nproc); \
FORGE_SCOPE="$(SCOPE)" bash scripts/forge/scope.sh test -j $$(nproc); \
fi
monitoring:
@echo "Deploying monitoring stack..."
kubectl apply -f monitoring/k8s/prometheus.yaml

View File

@@ -1,15 +1,15 @@
<div align="center">
# 🌐 DeFi Oracle Meta Mainnet
## ChainID 138 | Production-Ready Blockchain Network
## ChainID 138 | Operator-Focused Blockchain Workspace
[![Status](https://img.shields.io/badge/Status-Production--Ready-brightgreen)](https://github.com/Defi-Oracle-Tooling/smom-dbis-138)
[![Status](https://img.shields.io/badge/Status-Active-blue)](https://github.com/Defi-Oracle-Tooling/smom-dbis-138)
[![ChainID](https://img.shields.io/badge/ChainID-138-blue)](https://explorer.d-bis.org)
[![Consensus](https://img.shields.io/badge/Consensus-QBFT-orange)](docs/architecture/ARCHITECTURE.md)
[![License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE)
[![Documentation](https://img.shields.io/badge/Documentation-Complete-success)](docs/)
**Production-ready** Hyperledger Besu network with QBFT consensus, deployed on Azure Kubernetes Service (AKS). Complete with CCIP cross-chain oracle support, comprehensive security scanning, full observability, MetaMask integration, and extensive testing infrastructure.
Hyperledger Besu workspace for ChainID 138 with QBFT consensus, deployment automation, CCIP and tokenization integrations, security tooling, and a cleaned active-vs-historical documentation surface.
[🚀 Quick Start](#-quick-start) • [📚 Documentation](#-documentation) • [🏗️ Architecture](#-architecture) • [🔒 Security](#-security) • [📊 Features](#-features) • [🤝 Contributing](#-contributing)
@@ -32,11 +32,11 @@
| **WETH9/WETH10 with CCIP** | ✅ Complete | Cross-chain ready |
| **OpenZeppelin Dependencies** | ✅ Hybrid Approach | OpenZeppelin v4.9.6 installed |
**🎉 Status**: ✅ **PRODUCTION-READY WITH ALL ENHANCEMENTS**
**Status**: ✅ Core implementation complete, with ongoing operator cleanup and deployment-hygiene work.
> **Note**: 30 deployment and integration tasks remain (operational procedures, external submissions). All code tasks are 100% complete. See [Next Steps](docs/operations/tasks/NEXT_STEPS_LIST.md) for deployment tasks.
>
> **Dependency Status**: Hybrid approach implemented - OpenZeppelin v4.9.6 installed (compatible with Solidity 0.8.19). New WETH contracts (WETH10, CCIPWETH9Bridge, CCIPWETH10Bridge) are independent and don't require OpenZeppelin. Existing contracts (CCIPSender, CCIPRouter, CCIPRouterOptimized, MultiSig, Voting) use OpenZeppelin. All contracts compile successfully. See [Hybrid Approach Implementation](docs/guides/HYBRID_APPROACH_IMPLEMENTATION.md) and [Dependencies Guide](docs/guides/DEPENDENCIES.md) for details.
> **Dependency Status**: Hybrid approach implemented - OpenZeppelin v4.9.6 installed (compatible with Solidity 0.8.19). New WETH contracts (WETH10, CCIPWETH9Bridge, CCIPWETH10Bridge) are independent and don't require OpenZeppelin. Active OpenZeppelin-dependent contracts include CCIPSender, CCIPRouter, MultiSig, and Voting; the historical `CCIPRouterOptimized` source now lives under `archive/solidity/contracts/ccip/`. See [Hybrid Approach Implementation](docs/guides/HYBRID_APPROACH_IMPLEMENTATION.md) and [Dependencies Guide](docs/guides/DEPENDENCIES.md) for details.
---
@@ -358,7 +358,7 @@ curl -X POST https://rpc.d-bis.org \
### 📋 Deployment Checklist
See [Deployment Checklist](docs/DEPLOYMENT_CHECKLIST.md) for complete step-by-step instructions.
See [Deployment Checklist](docs/deployment/DEPLOYMENT_CHECKLIST.md) for complete step-by-step instructions.
---
@@ -387,9 +387,9 @@ See [Deployment Checklist](docs/DEPLOYMENT_CHECKLIST.md) for complete step-by-st
### Security Documentation
- [Security Guide](docs/SECURITY.md) - Comprehensive security documentation
- [Security Guide](docs/security/SECURITY.md) - Comprehensive security documentation
- [Security Scanning Guide](docs/security/SECURITY_SCANNING_GUIDE.md) - Security scanning process
- [Security Compliance](docs/SECURITY_COMPLIANCE.md) - Compliance documentation
- [Security Compliance](docs/security/SECURITY_COMPLIANCE.md) - Compliance documentation
- [Security Scores](docs/security/SECURITY_SCORES.md) - Interpreting security scores
---
@@ -509,7 +509,7 @@ await addOrSwitchNetwork();
2. Go to Settings → Networks → Add Network
3. Enter the network details from above
See [MetaMask Integration Guide](docs/METAMASK_INTEGRATION.md) for complete instructions.
See [MetaMask Integration Guide](docs/operations/integrations/METAMASK_INTEGRATION.md) for complete instructions.
---
@@ -551,40 +551,41 @@ See [ALL Mainnet Master Documentation](../docs/MASTER_INDEX.md) for complete int
- [Quick Start Guide](docs/guides/QUICKSTART.md) - Get started in 5 minutes
- [Deployment Guide](docs/deployment/DEPLOYMENT.md) - Complete deployment instructions
- [Next Steps List](docs/NEXT_STEPS_LIST.md) - **Complete checklist of all next steps (30 tasks)**
- [Deployment Checklist](docs/DEPLOYMENT_CHECKLIST.md) - Step-by-step deployment checklist
- [Next Steps List](docs/operations/tasks/NEXT_STEPS_LIST.md) - **Complete checklist of all next steps (30 tasks)**
- [Deployment Checklist](docs/deployment/DEPLOYMENT_CHECKLIST.md) - Step-by-step deployment checklist
- [Deployment Scripts](scripts/deployment/README.md) - Deployment automation scripts
### 🏗️ Architecture & Design
- [Architecture Documentation](docs/architecture/ARCHITECTURE.md) - Complete architecture overview
- [Network Configuration](docs/NETWORK.md) - Network setup and configuration
- [Azure Well-Architected Framework](docs/AZURE_WELL_ARCHITECTED_IMPLEMENTATION.md) - Best practices implementation
- [Deployment Comparison](docs/DEPLOYMENT_COMPARISON.md) - AKS vs VM deployment
- [Network Configuration](docs/architecture/NETWORK.md) - Network setup and configuration
- [Azure Well-Architected Framework](docs/azure/AZURE_WELL_ARCHITECTED_IMPLEMENTATION.md) - Best practices implementation
- [Deployment Comparison](docs/deployment/DEPLOYMENT_COMPARISON.md) - AKS vs VM deployment
### 🔒 Security & Compliance
- [Security Guide](docs/SECURITY.md) - Comprehensive security documentation
- [Security Guide](docs/security/SECURITY.md) - Comprehensive security documentation
- [Security Scanning Guide](docs/security/SECURITY_SCANNING_GUIDE.md) - Security scanning process
- [Security Compliance](docs/SECURITY_COMPLIANCE.md) - Compliance documentation
- [Governance Framework](docs/GOVERNANCE.md) - Governance and proposal process
- [Security Compliance](docs/security/SECURITY_COMPLIANCE.md) - Compliance documentation
- [Governance Framework](docs/governance/GOVERNANCE.md) - Governance and proposal process
### 🔗 Integration Guides
- [MetaMask Integration](docs/METAMASK_INTEGRATION.md) - Complete MetaMask integration guide
- [MetaMask Developer Guide](docs/METAMASK_DEVELOPER_GUIDE.md) - Developer integration guide
- [CCIP Integration Guide](docs/CCIP_INTEGRATION.md) - CCIP setup and usage
- [Tatum SDK Integration](docs/TATUM_SDK.md) - SDK integration guide
- [Financial Tokenization](docs/FINANCIAL_TOKENIZATION.md) - ISO-20022 and SWIFT FIN tokenization
- [MetaMask Integration](docs/operations/integrations/METAMASK_INTEGRATION.md) - Complete MetaMask integration guide
- [MetaMask Developer Guide](docs/operations/integrations/METAMASK_DEVELOPER_GUIDE.md) - Developer integration guide
- [CCIP Integration Guide](docs/operations/integrations/CCIP_INTEGRATION.md) - CCIP setup and usage
- [Tatum SDK Integration](docs/api/TATUM_SDK.md) - SDK integration guide
- [Financial Tokenization (Archived)](docs/archive/status-reports/operations-legacy/FINANCIAL_TOKENIZATION.md) - Historical ISO-20022 and SWIFT FIN tokenization notes
- [ALL Mainnet Integration](../docs/MASTER_INDEX.md) - Complete ALL Mainnet (651940) integration guide
- [Multi-Chain Deployment](docs/deployment/MULTI_CHAIN_DEPLOYMENT_GUIDE.md) - Multi-chain deployment guide
- [HYBX OMNL (reserves, compliance, CCIP mirror)](docs/hybx-omnl/README.md) - Policy, deployment, IPSAS anchor, token-aggregation routes
### 📊 Operations & Runbooks
- [Operations Runbooks](runbooks/) - Complete operations runbooks
- [Troubleshooting Guide](docs/guides/TROUBLESHOOTING.md) - Common issues and solutions
- [Validation Guide](docs/guides/VALIDATION_GUIDE.md) - Deployment validation
- [API Documentation](docs/API.md) - JSON-RPC API reference
- [API Documentation](docs/api/API.md) - JSON-RPC API reference
### 📈 Monitoring & Observability
@@ -595,10 +596,10 @@ See [ALL Mainnet Master Documentation](../docs/MASTER_INDEX.md) for complete int
### 🎯 Project Management
- [Project Review](docs/COMPLETE_PROJECT_REVIEW.md) - Comprehensive project review
- [Recommendations](docs/RECOMMENDATIONS.md) - Next steps and enhancements
- [TODO List](docs/TODO.md) - Complete task tracking
- [Completion Report](docs/COMPLETION_REPORT_FINAL.md) - Final completion status
- [Project Review (Archived)](docs/archive/status-reports/docs-root-legacy/COMPLETE_PROJECT_REVIEW.md) - Historical comprehensive project review
- [Documentation Recommendations](docs/DOCUMENTATION_REVIEW_AND_RECOMMENDATIONS.md) - Documentation review and next-step recommendations
- [TODO List](docs/operations/tasks/TODO.md) - Active task tracking
- [Current Deployment Status](docs/DEPLOYMENT_STATUS_AND_NEXT_STEPS.md) - Active deployment and follow-up status
---
@@ -858,7 +859,7 @@ terraform apply -var-file=terraform.tfvars.vm -var="vm_deployment_enabled=true"
- ✅ Simpler setup
- ✅ Cost-effective
See [VM Deployment Guide](docs/VM_DEPLOYMENT.md) for detailed instructions.
See [VM Deployment Guide](docs/deployment/VM_DEPLOYMENT.md) for detailed instructions.
---
@@ -903,7 +904,7 @@ See [Configuration Guide](docs/configuration/AZURE_CLOUDFLARE_ENV_SETUP.md) for
## 🤝 Contributing
We welcome contributions! Please see our [Contributing Guide](docs/CONTRIBUTING.md) for details.
We welcome contributions! Please see our [Contributing Guide](docs/governance/CONTRIBUTING.md) for details.
### Contribution Process
@@ -918,7 +919,7 @@ We welcome contributions! Please see our [Contributing Guide](docs/CONTRIBUTING.
### Development Guidelines
- ✅ Follow [Security Guidelines](docs/SECURITY.md)
- ✅ Follow [Security Guidelines](docs/security/SECURITY.md)
- ✅ Run security scans before submitting PRs
- ✅ Follow [Code Style Guide](docs/configuration/AZURE_CLOUDFLARE_ENV_SETUP.md)
- ✅ Add tests for new features
@@ -928,7 +929,7 @@ We welcome contributions! Please see our [Contributing Guide](docs/CONTRIBUTING.
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
Licensing details are not currently published in a top-level `LICENSE` file in this repository. Confirm redistribution terms with the maintainers before reuse.
---
@@ -957,7 +958,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
- [Quick Start Guide](docs/guides/QUICKSTART.md) - Get started quickly
- [Troubleshooting Guide](docs/guides/TROUBLESHOOTING.md) - Common issues and solutions
- [API Documentation](docs/API.md) - API reference
- [API Documentation](docs/api/API.md) - API reference
- [Runbooks](runbooks/) - Operations runbooks
---
@@ -1020,7 +1021,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
### 📊 Complete Checklist
See [Next Steps List](docs/NEXT_STEPS_LIST.md) for complete checklist of all 30 tasks:
See [Next Steps List](docs/operations/tasks/NEXT_STEPS_LIST.md) for complete checklist of all 30 tasks:
- ✅ 15 Deployment tasks
- ✅ 10 Integration tasks
- ✅ 5 Pre-production tasks

View File

@@ -0,0 +1,27 @@
# Archived Solidity
This directory holds Solidity files intentionally moved out of `contracts/` so
they are excluded from the default full-repo Foundry compile graph.
Rules:
- Only archive files after confirming they are unreachable from the repo's
current Solidity tests and scripts.
- Move files here in small batches and re-run the affected scoped Forge build
and test commands after each batch.
- Treat archive status as "kept for reference", not "safe to delete".
Current archived batches in this repo include:
- legacy bridge atomic settlement interfaces and adapters
- unused non-EVM bridge adapter implementations that are no longer referenced by
the active Solidity test and deployment graph
- historical bridge implementations such as `AlltraCustomBridge`,
`ISO4217WCCIPBridge`, `CommodityCCIPBridge`, `VaultBridgeAdapter`, and
`BridgeModuleRegistry`
- historical registry, vault, configuration, NFT, and proxy helper contracts
that are no longer reachable from the active Solidity deployment/test graph
- historical CCIP, compliance, liquidity, plugin, registry-interface, and vault
helper contracts such as `CCIPTxReporter`, `CCIPRouterOptimized`,
`IndyVerifier`, `PoolManager`, `PluginRegistry`, `IAssetTypeHandler`, and
`XAUTriangulation`

View File

@@ -0,0 +1,140 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/AccessControl.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "../../interfaces/IChainAdapter.sol";
contract SolanaAdapter is IChainAdapter, AccessControl, ReentrancyGuard {
using SafeERC20 for IERC20;
bytes32 public constant BRIDGE_OPERATOR_ROLE = keccak256("BRIDGE_OPERATOR_ROLE");
bytes32 public constant ORACLE_ROLE = keccak256("ORACLE_ROLE");
bool public isActive;
mapping(bytes32 => BridgeRequest) public bridgeRequests;
mapping(bytes32 => string) public txHashes;
mapping(address => uint256) public nonces;
event SolanaBridgeInitiated(
bytes32 indexed requestId,
address indexed sender,
address indexed token,
uint256 amount,
string destination
);
event SolanaBridgeConfirmed(
bytes32 indexed requestId,
string indexed txHash
);
constructor(address admin) {
_grantRole(DEFAULT_ADMIN_ROLE, admin);
_grantRole(BRIDGE_OPERATOR_ROLE, admin);
_grantRole(ORACLE_ROLE, admin);
isActive = true;
}
function getChainType() external pure override returns (string memory) {
return "Solana";
}
function getChainIdentifier() external pure override returns (uint256 chainId, string memory identifier) {
return (0, "Solana-Mainnet");
}
function validateDestination(bytes calldata destination) external pure override returns (bool) {
return destination.length > 0;
}
function bridge(
address token,
uint256 amount,
bytes calldata destination,
bytes calldata recipient
) external payable override nonReentrant returns (bytes32 requestId) {
require(isActive, "Adapter inactive");
require(amount > 0, "Zero amount");
string memory dest = string(destination);
requestId = keccak256(abi.encodePacked(
msg.sender,
token,
amount,
dest,
nonces[msg.sender]++,
block.timestamp
));
if (token == address(0)) {
require(msg.value >= amount, "Insufficient ETH");
} else {
IERC20(token).safeTransferFrom(msg.sender, address(this), amount);
}
bridgeRequests[requestId] = BridgeRequest({
sender: msg.sender,
token: token,
amount: amount,
destinationData: destination,
requestId: requestId,
status: BridgeStatus.Locked,
createdAt: block.timestamp,
completedAt: 0
});
emit SolanaBridgeInitiated(requestId, msg.sender, token, amount, dest);
return requestId;
}
function confirmTransaction(
bytes32 requestId,
string calldata txHash
) external onlyRole(ORACLE_ROLE) {
BridgeRequest storage request = bridgeRequests[requestId];
require(request.status == BridgeStatus.Locked, "Invalid status");
request.status = BridgeStatus.Confirmed;
request.completedAt = block.timestamp;
txHashes[requestId] = txHash;
emit SolanaBridgeConfirmed(requestId, txHash);
}
function getBridgeStatus(bytes32 requestId)
external view override returns (BridgeRequest memory) {
return bridgeRequests[requestId];
}
function cancelBridge(bytes32 requestId) external override returns (bool) {
BridgeRequest storage request = bridgeRequests[requestId];
require(request.status == BridgeStatus.Pending || request.status == BridgeStatus.Locked, "Cannot cancel");
require(msg.sender == request.sender, "Not request sender");
if (request.token == address(0)) {
payable(request.sender).transfer(request.amount);
} else {
IERC20(request.token).safeTransfer(request.sender, request.amount);
}
request.status = BridgeStatus.Cancelled;
return true;
}
function estimateFee(
address token,
uint256 amount,
bytes calldata destination
) external view override returns (uint256 fee) {
return 1000000000000000;
}
function setIsActive(bool _isActive) external onlyRole(DEFAULT_ADMIN_ROLE) {
isActive = _isActive;
}
}

View File

@@ -0,0 +1,140 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/AccessControl.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "../../interfaces/IChainAdapter.sol";
contract TronAdapter is IChainAdapter, AccessControl, ReentrancyGuard {
using SafeERC20 for IERC20;
bytes32 public constant BRIDGE_OPERATOR_ROLE = keccak256("BRIDGE_OPERATOR_ROLE");
bytes32 public constant ORACLE_ROLE = keccak256("ORACLE_ROLE");
bool public isActive;
mapping(bytes32 => BridgeRequest) public bridgeRequests;
mapping(bytes32 => string) public txHashes;
mapping(address => uint256) public nonces;
event TronBridgeInitiated(
bytes32 indexed requestId,
address indexed sender,
address indexed token,
uint256 amount,
string destination
);
event TronBridgeConfirmed(
bytes32 indexed requestId,
string indexed txHash
);
constructor(address admin) {
_grantRole(DEFAULT_ADMIN_ROLE, admin);
_grantRole(BRIDGE_OPERATOR_ROLE, admin);
_grantRole(ORACLE_ROLE, admin);
isActive = true;
}
function getChainType() external pure override returns (string memory) {
return "Tron";
}
function getChainIdentifier() external pure override returns (uint256 chainId, string memory identifier) {
return (0, "Tron-Mainnet");
}
function validateDestination(bytes calldata destination) external pure override returns (bool) {
return destination.length > 0;
}
function bridge(
address token,
uint256 amount,
bytes calldata destination,
bytes calldata recipient
) external payable override nonReentrant returns (bytes32 requestId) {
require(isActive, "Adapter inactive");
require(amount > 0, "Zero amount");
string memory dest = string(destination);
requestId = keccak256(abi.encodePacked(
msg.sender,
token,
amount,
dest,
nonces[msg.sender]++,
block.timestamp
));
if (token == address(0)) {
require(msg.value >= amount, "Insufficient ETH");
} else {
IERC20(token).safeTransferFrom(msg.sender, address(this), amount);
}
bridgeRequests[requestId] = BridgeRequest({
sender: msg.sender,
token: token,
amount: amount,
destinationData: destination,
requestId: requestId,
status: BridgeStatus.Locked,
createdAt: block.timestamp,
completedAt: 0
});
emit TronBridgeInitiated(requestId, msg.sender, token, amount, dest);
return requestId;
}
function confirmTransaction(
bytes32 requestId,
string calldata txHash
) external onlyRole(ORACLE_ROLE) {
BridgeRequest storage request = bridgeRequests[requestId];
require(request.status == BridgeStatus.Locked, "Invalid status");
request.status = BridgeStatus.Confirmed;
request.completedAt = block.timestamp;
txHashes[requestId] = txHash;
emit TronBridgeConfirmed(requestId, txHash);
}
function getBridgeStatus(bytes32 requestId)
external view override returns (BridgeRequest memory) {
return bridgeRequests[requestId];
}
function cancelBridge(bytes32 requestId) external override returns (bool) {
BridgeRequest storage request = bridgeRequests[requestId];
require(request.status == BridgeStatus.Pending || request.status == BridgeStatus.Locked, "Cannot cancel");
require(msg.sender == request.sender, "Not request sender");
if (request.token == address(0)) {
payable(request.sender).transfer(request.amount);
} else {
IERC20(request.token).safeTransfer(request.sender, request.amount);
}
request.status = BridgeStatus.Cancelled;
return true;
}
function estimateFee(
address token,
uint256 amount,
bytes calldata destination
) external view override returns (uint256 fee) {
return 1000000000000000;
}
function setIsActive(bool _isActive) external onlyRole(DEFAULT_ADMIN_ROLE) {
isActive = _isActive;
}
}

View File

@@ -0,0 +1,74 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/AccessControl.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {IAtomicSettlementAdapter} from "../interfaces/IAtomicSettlementAdapter.sol";
import {UniversalCCIPBridge} from "../../UniversalCCIPBridge.sol";
contract UniversalCcipAtomicSettlementAdapter is AccessControl, IAtomicSettlementAdapter {
using SafeERC20 for IERC20;
bytes32 public constant ROUTER_ROLE = keccak256("ROUTER_ROLE");
UniversalCCIPBridge public immutable universalBridge;
struct SettlementParams {
uint64 destinationChain;
address destinationRecipient;
bytes32 assetType;
bool usePMM;
bool useVault;
bytes complianceProof;
bytes vaultInstructions;
}
event AtomicSettlementBridged(
bytes32 indexed obligationId,
bytes32 indexed messageId,
address indexed token,
uint256 amount,
uint64 destinationChain,
address recipient
);
constructor(address universalBridge_, address admin) {
universalBridge = UniversalCCIPBridge(payable(universalBridge_));
_grantRole(DEFAULT_ADMIN_ROLE, admin);
}
function executeSettlement(
bytes32 obligationId,
address token,
uint256 amount,
address recipient,
bytes calldata data
) external payable onlyRole(ROUTER_ROLE) returns (bytes32 settlementId) {
SettlementParams memory params = abi.decode(data, (SettlementParams));
address finalRecipient = params.destinationRecipient == address(0) ? recipient : params.destinationRecipient;
IERC20(token).forceApprove(address(universalBridge), amount);
settlementId = universalBridge.bridge{value: msg.value}(
UniversalCCIPBridge.BridgeOperation({
token: token,
amount: amount,
destinationChain: params.destinationChain,
recipient: finalRecipient,
assetType: params.assetType,
usePMM: params.usePMM,
useVault: params.useVault,
complianceProof: params.complianceProof,
vaultInstructions: params.vaultInstructions
})
);
IERC20(token).forceApprove(address(universalBridge), 0);
emit AtomicSettlementBridged(
obligationId,
settlementId,
token,
amount,
params.destinationChain,
finalRecipient
);
}
}

View File

@@ -0,0 +1,13 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IAtomicUnwindAdapter {
function executeUnwind(
address tokenIn,
address tokenOut,
uint256 amountIn,
uint256 minAmountOut,
address recipient,
bytes calldata data
) external returns (uint256 amountOut);
}

View File

@@ -2,7 +2,7 @@
pragma solidity ^0.8.20;
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "../../vendor/openzeppelin/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
/**

View File

@@ -2,7 +2,7 @@
pragma solidity ^0.8.20;
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "../vendor/openzeppelin/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
/**

View File

@@ -2,7 +2,7 @@
pragma solidity ^0.8.20;
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "../vendor/openzeppelin/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
import "../registry/UniversalAssetRegistry.sol";

View File

@@ -2,7 +2,7 @@
pragma solidity ^0.8.20;
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
import "../vendor/openzeppelin/UUPSUpgradeable.sol";
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
/**

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,259 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "AccessControlUpgradeable",
"sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol",
"abi": [
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,34 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "Initializable",
"sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
"abi": [
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,139 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "UUPSUpgradeable",
"sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,342 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC20Upgradeable",
"sourceName": "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,34 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ContextUpgradeable",
"sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol",
"abi": [
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,39 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ReentrancyGuardUpgradeable",
"sourceName": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol",
"abi": [
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,53 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC165Upgradeable",
"sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol",
"abi": [
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,236 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "AccessControl",
"sourceName": "@openzeppelin/contracts/access/AccessControl.sol",
"abi": [
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,204 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IAccessControl",
"sourceName": "@openzeppelin/contracts/access/IAccessControl.sol",
"abi": [
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,85 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "Ownable",
"sourceName": "@openzeppelin/contracts/access/Ownable.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,328 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC4906",
"sourceName": "@openzeppelin/contracts/interfaces/IERC4906.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_fromTokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_toTokenId",
"type": "uint256"
}
],
"name": "BatchMetadataUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "MetadataUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,60 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC5267",
"sourceName": "@openzeppelin/contracts/interfaces/IERC5267.sol",
"abi": [
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,24 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC1822Proxiable",
"sourceName": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol",
"abi": [
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,113 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC1155Errors",
"sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC1155InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC1155InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "idsLength",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "valuesLength",
"type": "uint256"
}
],
"name": "ERC1155InvalidArrayLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "ERC1155InvalidOperator",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC1155InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC1155InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC1155MissingApprovalForAll",
"type": "error"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,97 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC20Errors",
"sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,114 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC721Errors",
"sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC721IncorrectOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC721InsufficientApproval",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC721InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "ERC721InvalidOperator",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC721InvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC721InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC721InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC721NonexistentToken",
"type": "error"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,76 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC1967Proxy",
"sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
}
],
"bytecode": "0x60806040526102d38038038061001481610194565b92833981019060408183031261018f5780516001600160a01b03811680820361018f5760208381015190936001600160401b03821161018f570184601f8201121561018f5780519061006d610068836101cf565b610194565b9582875285838301011161018f57849060005b83811061017b57505060009186010152813b15610163577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28351156101455750600080848461012c96519101845af4903d1561013c573d61011c610068826101cf565b908152600081943d92013e6101ea565b505b6040516085908161024e8239f35b606092506101ea565b9250505034610154575061012e565b63b398979f60e01b8152600490fd5b60249060405190634c9c8ce360e01b82526004820152fd5b818101830151888201840152869201610080565b600080fd5b6040519190601f01601f191682016001600160401b038111838210176101b957604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101b957601f01601f191660200190565b9061021157508051156101ff57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580610244575b610222575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561021a56fe60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54600090819081906001600160a01b0316368280378136915af43d82803e15604b573d90f35b3d90fdfea26469706673582212206a4b026448cb134b4a6b58a87bec82036df2a76f2d05bc80fe8765d80c24bc2164736f6c63430008160033",
"deployedBytecode": "0x60806040527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54600090819081906001600160a01b0316368280378136915af43d82803e15604b573d90f35b3d90fdfea26469706673582212206a4b026448cb134b4a6b58a87bec82036df2a76f2d05bc80fe8765d80c24bc2164736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,94 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC1967Utils",
"sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"name": "ERC1967InvalidAdmin",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "ERC1967InvalidBeacon",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
}
],
"bytecode": "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122005955f440b5be71a2131ffb5c8f48783bb258a30328293bf76ab0ff92a9686ea64736f6c63430008160033",
"deployedBytecode": "0x600080fdfea264697066735822122005955f440b5be71a2131ffb5c8f48783bb258a30328293bf76ab0ff92a9686ea64736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,15 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "Proxy",
"sourceName": "@openzeppelin/contracts/proxy/Proxy.sol",
"abi": [
{
"stateMutability": "payable",
"type": "fallback"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,87 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "BeaconProxy",
"sourceName": "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "beacon",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "payable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "ERC1967InvalidBeacon",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
}
],
"bytecode": "0x60a06040908082526104a8803803809161001982856102ae565b8339810182828203126101e95761002f826102e7565b60208084015191939091906001600160401b0382116101e9570182601f820112156101e957805190610060826102fb565b9361006d875195866102ae565b8285528383830101116101e957829060005b83811061029a57505060009184010152823b1561027a577fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b038581169182179092558551635c60da1b60e01b8082529194928482600481895afa91821561026f57600092610238575b50813b1561021f5750508551847f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e600080a282511561020057508290600487518096819382525afa9283156101f5576000936101b3575b5091600080848461019096519101845af4903d156101aa573d610174816102fb565b90610181885192836102ae565b8152600081943d92013e610316565b505b6080525161012e908161037a82396080518160180152f35b60609250610316565b92508183813d83116101ee575b6101ca81836102ae565b810103126101e9576000806101e1610190956102e7565b945050610152565b600080fd5b503d6101c0565b85513d6000823e3d90fd5b9350505050346102105750610192565b63b398979f60e01b8152600490fd5b8751634c9c8ce360e01b81529116600482015260249150fd5b9091508481813d8311610268575b61025081836102ae565b810103126101e957610261906102e7565b90386100fb565b503d610246565b88513d6000823e3d90fd5b8351631933b43b60e21b81526001600160a01b0384166004820152602490fd5b81810183015186820184015284920161007f565b601f909101601f19168101906001600160401b038211908210176102d157604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036101e957565b6001600160401b0381116102d157601f01601f191660200190565b9061033d575080511561032b57805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580610370575b61034e575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561034656fe60806040819052635c60da1b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811560a9576000916054575b5060da565b905060203d60201160a3575b601f8101601f191682019167ffffffffffffffff831181841017608d576088926040520160b5565b38604f565b634e487b7160e01b600052604160045260246000fd5b503d6060565b6040513d6000823e3d90fd5b602090607f19011260d5576080516001600160a01b038116810360d55790565b600080fd5b6000808092368280378136915af43d82803e1560f4573d90f35b3d90fdfea2646970667358221220022f3bb92a05e9d23fbafb077cf86afa919df8e4559dd93cf6e930d4e7cd05c664736f6c63430008160033",
"deployedBytecode": "0x60806040819052635c60da1b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811560a9576000916054575b5060da565b905060203d60201160a3575b601f8101601f191682019167ffffffffffffffff831181841017608d576088926040520160b5565b38604f565b634e487b7160e01b600052604160045260246000fd5b503d6060565b6040513d6000823e3d90fd5b602090607f19011260d5576080516001600160a01b038116810360d55790565b600080fd5b6000808092368280378136915af43d82803e1560f4573d90f35b3d90fdfea2646970667358221220022f3bb92a05e9d23fbafb077cf86afa919df8e4559dd93cf6e930d4e7cd05c664736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,24 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IBeacon",
"sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol",
"abi": [
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,151 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "UpgradeableBeacon",
"sourceName": "@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "implementation_",
"type": "address"
},
{
"internalType": "address",
"name": "initialOwner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "BeaconInvalidImplementation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60803461012057601f6103c438819003918201601f19168301916001600160401b038311848410176101255780849260409485528339810103126101205760206100488261013b565b916001600160a01b0391829161005e910161013b565b1690811561010757600080546001600160a01b0319808216851783556040519295909490929184167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08780a3813b156100f0575016809160015416176001557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b6040519280a261027490816101508239f35b63211eb15960e21b81529082166004820152602490fd5b604051631e4fbdf760e01b815260006004820152602490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036101205756fe6080604052600436101561001257600080fd5b6000803560e01c80633659cfe61461018c5780635c60da1b14610163578063715018a6146101095780638da5cb5b146100e25763f2fde38b1461005457600080fd5b346100df5760203660031901126100df576004356001600160a01b03818116918290036100db57610083610212565b81156100c25782546001600160a01b0319811683178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b604051631e4fbdf760e01b815260048101849052602490fd5b8280fd5b80fd5b50346100df57806003193601126100df57546040516001600160a01b039091168152602090f35b50346100df57806003193601126100df57610122610212565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100df57806003193601126100df576001546040516001600160a01b039091168152602090f35b50346100df5760203660031901126100df576004356001600160a01b038116908181036100db576101bb610212565b3b156101fa57600180546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b6024906040519063211eb15960e21b82526004820152fd5b6000546001600160a01b0316330361022657565b60405163118cdaa760e01b8152336004820152602490fdfea2646970667358221220f1118b550c4f798f997903e32358e0e4770a4585ef8d5a4752c9afa6605b690564736f6c63430008160033",
"deployedBytecode": "0x6080604052600436101561001257600080fd5b6000803560e01c80633659cfe61461018c5780635c60da1b14610163578063715018a6146101095780638da5cb5b146100e25763f2fde38b1461005457600080fd5b346100df5760203660031901126100df576004356001600160a01b03818116918290036100db57610083610212565b81156100c25782546001600160a01b0319811683178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b604051631e4fbdf760e01b815260048101849052602490fd5b8280fd5b80fd5b50346100df57806003193601126100df57546040516001600160a01b039091168152602090f35b50346100df57806003193601126100df57610122610212565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346100df57806003193601126100df576001546040516001600160a01b039091168152602090f35b50346100df5760203660031901126100df576004356001600160a01b038116908181036100db576101bb610212565b3b156101fa57600180546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b6024906040519063211eb15960e21b82526004820152fd5b6000546001600160a01b0316330361022657565b60405163118cdaa760e01b8152336004820152602490fdfea2646970667358221220f1118b550c4f798f997903e32358e0e4770a4585ef8d5a4752c9afa6605b690564736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,319 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC20",
"sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,194 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC20",
"sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,350 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC20Burnable",
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "burnFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,233 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC20Metadata",
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,86 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "IERC20Permit",
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol",
"abi": [
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "permit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x",
"deployedBytecode": "0x",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

View File

@@ -1,43 +0,0 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "SafeERC20",
"sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "currentAllowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "requestedDecrease",
"type": "uint256"
}
],
"name": "SafeERC20FailedDecreaseAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
}
],
"bytecode": "0x60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212208c133190dfc3bb31c9677fc84e9a8b4e643a879c13082009cbc016ba563812bd64736f6c63430008160033",
"deployedBytecode": "0x600080fdfea26469706673582212208c133190dfc3bb31c9677fc84e9a8b4e643a879c13082009cbc016ba563812bd64736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}

View File

@@ -1,4 +0,0 @@
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../../../../build-info/f28b9c3a99e57d746df74b03e4ef45aa.json"
}

Some files were not shown because too many files have changed in this diff Show More