mirror of
https://github.com/zhigang1992/liquid-stacking.git
synced 2026-01-12 09:13:39 +08:00
initial commit
This commit is contained in:
13
.gitignore
vendored
Normal file
13
.gitignore
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
**/settings/Mainnet.toml
|
||||
**/settings/Testnet.toml
|
||||
.cache/**
|
||||
history.txt
|
||||
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
coverage
|
||||
*.info
|
||||
costs-reports.json
|
||||
node_modules
|
||||
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
{
|
||||
"files.eol": "\n"
|
||||
}
|
||||
19
.vscode/tasks.json
vendored
Normal file
19
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "check contracts",
|
||||
"group": "test",
|
||||
"type": "shell",
|
||||
"command": "clarinet check"
|
||||
},
|
||||
{{
|
||||
"type": "npm",
|
||||
"script": "test",
|
||||
"group": "test",
|
||||
"problemMatcher": [],
|
||||
"label": "npm test"
|
||||
}
|
||||
]
|
||||
}
|
||||
26
Clarinet.toml
Normal file
26
Clarinet.toml
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
[project]
|
||||
name = "lisa"
|
||||
description = ""
|
||||
authors = []
|
||||
telemetry = false
|
||||
cache_dir = "./.cache"
|
||||
|
||||
# [contracts.counter]
|
||||
# path = "contracts/counter.clar"
|
||||
|
||||
[[project.requirements]]
|
||||
contract_id = "SP21YTSM60CAY6D011EZVEVNKXVW8FVZE198XEFFP.pox-fast-pool-v2"
|
||||
|
||||
|
||||
[repl.analysis]
|
||||
passes = ["check_checker"]
|
||||
check_checker = { trusted_sender = false, trusted_caller = false, callee_filter = false }
|
||||
|
||||
# Check-checker settings:
|
||||
# trusted_sender: if true, inputs are trusted after tx_sender has been checked.
|
||||
# trusted_caller: if true, inputs are trusted after contract-caller has been checked.
|
||||
# callee_filter: if true, untrusted data may be passed into a private function without a
|
||||
# warning, if it gets checked inside. This check will also propagate up to the
|
||||
# caller.
|
||||
# More informations: https://www.hiro.so/blog/new-safety-checks-in-clarinet
|
||||
98
LICENSE
Normal file
98
LICENSE
Normal file
@@ -0,0 +1,98 @@
|
||||
Business Source License 1.1
|
||||
|
||||
License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
|
||||
"Business Source License" is a trademark of MariaDB Corporation Ab.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Parameters
|
||||
|
||||
Licensor: LISA
|
||||
|
||||
Licensed Work: liquid-stacking
|
||||
The Licensed Work is (c) 2024 LISA
|
||||
|
||||
Additional Use Grant: None
|
||||
|
||||
Change Date: 2028-01-01
|
||||
|
||||
Change License: MIT License
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Terms
|
||||
|
||||
The Licensor hereby grants you the right to copy, modify, create derivative
|
||||
works, redistribute, and make non-production use of the Licensed Work. The
|
||||
Licensor may make an Additional Use Grant, above, permitting limited
|
||||
production use.
|
||||
|
||||
Effective on the Change Date, or the fourth anniversary of the first publicly
|
||||
available distribution of a specific version of the Licensed Work under this
|
||||
License, whichever comes first, the Licensor hereby grants you rights under
|
||||
the terms of the Change License, and the rights granted in the paragraph
|
||||
above terminate.
|
||||
|
||||
If your use of the Licensed Work does not comply with the requirements
|
||||
currently in effect as described in this License, you must purchase a
|
||||
commercial license from the Licensor, its affiliated entities, or authorized
|
||||
resellers, or you must refrain from using the Licensed Work.
|
||||
|
||||
All copies of the original and modified Licensed Work, and derivative works
|
||||
of the Licensed Work, are subject to this License. This License applies
|
||||
separately for each version of the Licensed Work and the Change Date may vary
|
||||
for each version of the Licensed Work released by Licensor.
|
||||
|
||||
You must conspicuously display this License on each original or modified copy
|
||||
of the Licensed Work. If you receive the Licensed Work in original or
|
||||
modified form from a third party, the terms and conditions set forth in this
|
||||
License apply to your use of that work.
|
||||
|
||||
Any use of the Licensed Work in violation of this License will automatically
|
||||
terminate your rights under this License for the current and all other
|
||||
versions of the Licensed Work.
|
||||
|
||||
This License does not grant you any right in any trademark or logo of
|
||||
Licensor or its affiliates (provided that you may use a trademark or logo of
|
||||
Licensor as expressly required by this License).
|
||||
|
||||
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
|
||||
AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
|
||||
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
|
||||
TITLE.
|
||||
|
||||
MariaDB hereby grants you permission to use this License’s text to license
|
||||
your works, and to refer to it using the trademark "Business Source License",
|
||||
as long as you comply with the Covenants of Licensor below.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Covenants of Licensor
|
||||
|
||||
In consideration of the right to use this License’s text and the "Business
|
||||
Source License" name and trademark, Licensor covenants to MariaDB, and to all
|
||||
other recipients of the licensed work to be provided by Licensor:
|
||||
|
||||
1. To specify as the Change License the GPL Version 2.0 or any later version,
|
||||
or a license that is compatible with GPL Version 2.0 or a later version,
|
||||
where "compatible" means that software provided under the Change License can
|
||||
be included in a program with software provided under GPL Version 2.0 or a
|
||||
later version. Licensor may specify additional Change Licenses without
|
||||
limitation.
|
||||
|
||||
2. To either: (a) specify an additional grant of rights to use that does not
|
||||
impose any additional restriction on the right granted in this License, as
|
||||
the Additional Use Grant; or (b) insert the text "None".
|
||||
|
||||
3. To specify a Change Date.
|
||||
|
||||
4. Not to modify this License in any other way.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Notice
|
||||
|
||||
The Business Source License (this document, or the "License") is not an Open
|
||||
Source license. However, the Licensed Work will eventually be made available
|
||||
under an Open Source License, as stated in this License.
|
||||
23
package.json
Normal file
23
package.json
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
{
|
||||
"name": "lisa-tests",
|
||||
"version": "1.0.0",
|
||||
"description": "Run unit tests on this project.",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"test": "vitest run",
|
||||
"test:report": "vitest run -- --coverage --costs",
|
||||
"test:watch": "chokidar \"tests/**/*.ts\" \"contracts/**/*.clar\" -c \"npm run test:report\""
|
||||
},
|
||||
"author": "",
|
||||
"license": "BSL",
|
||||
"dependencies": {
|
||||
"@hirosystems/clarinet-sdk": "^1.0.0",
|
||||
"@stacks/transactions": "^6.9.0",
|
||||
"chokidar-cli": "^3.0.0",
|
||||
"typescript": "^5.2.2",
|
||||
"vite": "^4.4.9",
|
||||
"vitest": "^0.34.4",
|
||||
"vitest-environment-clarinet": "^1.0.0"
|
||||
}
|
||||
}
|
||||
150
settings/Devnet.toml
Normal file
150
settings/Devnet.toml
Normal file
@@ -0,0 +1,150 @@
|
||||
[network]
|
||||
name = "devnet"
|
||||
deployment_fee_rate = 10
|
||||
|
||||
[accounts.deployer]
|
||||
mnemonic = "twice kind fence tip hidden tilt action fragile skin nothing glory cousin green tomorrow spring wrist shed math olympic multiply hip blue scout claw"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: 753b7cc01a1a2e86221266a154af739463fce51219d97e4f856cd7200c3bd2a601
|
||||
# stx_address: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
|
||||
# btc_address: mqVnk6NPRdhntvfm4hh9vvjiRkFDUuSYsH
|
||||
|
||||
[accounts.wallet_1]
|
||||
mnemonic = "sell invite acquire kitten bamboo drastic jelly vivid peace spawn twice guilt pave pen trash pretty park cube fragile unaware remain midnight betray rebuild"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: 7287ba251d44a4d3fd9276c88ce34c5c52a038955511cccaf77e61068649c17801
|
||||
# stx_address: ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5
|
||||
# btc_address: mr1iPkD9N3RJZZxXRk7xF9d36gffa6exNC
|
||||
|
||||
[accounts.wallet_2]
|
||||
mnemonic = "hold excess usual excess ring elephant install account glad dry fragile donkey gaze humble truck breeze nation gasp vacuum limb head keep delay hospital"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: 530d9f61984c888536871c6573073bdfc0058896dc1adfe9a6a10dfacadc209101
|
||||
# stx_address: ST2CY5V39NHDPWSXMW9QDT3HC3GD6Q6XX4CFRK9AG
|
||||
# btc_address: muYdXKmX9bByAueDe6KFfHd5Ff1gdN9ErG
|
||||
|
||||
[accounts.wallet_3]
|
||||
mnemonic = "cycle puppy glare enroll cost improve round trend wrist mushroom scorpion tower claim oppose clever elephant dinosaur eight problem before frozen dune wagon high"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: d655b2523bcd65e34889725c73064feb17ceb796831c0e111ba1a552b0f31b3901
|
||||
# stx_address: ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC
|
||||
# btc_address: mvZtbibDAAA3WLpY7zXXFqRa3T4XSknBX7
|
||||
|
||||
[accounts.wallet_4]
|
||||
mnemonic = "board list obtain sugar hour worth raven scout denial thunder horse logic fury scorpion fold genuine phrase wealth news aim below celery when cabin"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: f9d7206a47f14d2870c163ebab4bf3e70d18f5d14ce1031f3902fbbc894fe4c701
|
||||
# stx_address: ST2NEB84ASENDXKYGJPQW86YXQCEFEX2ZQPG87ND
|
||||
# btc_address: mg1C76bNTutiCDV3t9nWhZs3Dc8LzUufj8
|
||||
|
||||
[accounts.wallet_5]
|
||||
mnemonic = "hurry aunt blame peanut heavy update captain human rice crime juice adult scale device promote vast project quiz unit note reform update climb purchase"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: 3eccc5dac8056590432db6a35d52b9896876a3d5cbdea53b72400bc9c2099fe801
|
||||
# stx_address: ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB
|
||||
# btc_address: mweN5WVqadScHdA81aATSdcVr4B6dNokqx
|
||||
|
||||
[accounts.wallet_6]
|
||||
mnemonic = "area desk dutch sign gold cricket dawn toward giggle vibrant indoor bench warfare wagon number tiny universe sand talk dilemma pottery bone trap buddy"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: 7036b29cb5e235e5fd9b09ae3e8eec4404e44906814d5d01cbca968a60ed4bfb01
|
||||
# stx_address: ST3AM1A56AK2C1XAFJ4115ZSV26EB49BVQ10MGCS0
|
||||
# btc_address: mzxXgV6e4BZSsz8zVHm3TmqbECt7mbuErt
|
||||
|
||||
[accounts.wallet_7]
|
||||
mnemonic = "prevent gallery kind limb income control noise together echo rival record wedding sense uncover school version force bleak nuclear include danger skirt enact arrow"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: b463f0df6c05d2f156393eee73f8016c5372caa0e9e29a901bb7171d90dc4f1401
|
||||
# stx_address: ST3PF13W7Z0RRM42A8VZRVFQ75SV1K26RXEP8YGKJ
|
||||
# btc_address: n37mwmru2oaVosgfuvzBwgV2ysCQRrLko7
|
||||
|
||||
[accounts.wallet_8]
|
||||
mnemonic = "female adjust gallery certain visit token during great side clown fitness like hurt clip knife warm bench start reunion globe detail dream depend fortune"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: 6a1a754ba863d7bab14adbbc3f8ebb090af9e871ace621d3e5ab634e1422885e01
|
||||
# stx_address: ST3NBRSFKX28FQ2ZJ1MAKX58HKHSDGNV5N7R21XCP
|
||||
# btc_address: n2v875jbJ4RjBnTjgbfikDfnwsDV5iUByw
|
||||
|
||||
[accounts.faucet]
|
||||
mnemonic = "shadow private easily thought say logic fault paddle word top book during ignore notable orange flight clock image wealth health outside kitten belt reform"
|
||||
balance = 100_000_000_000_000
|
||||
# secret_key: de433bdfa14ec43aa1098d5be594c8ffb20a31485ff9de2923b2689471c401b801
|
||||
# stx_address: STNHKEPYEPJ8ET55ZZ0M5A34J0R3N5FM2CMMMAZ6
|
||||
# btc_address: mjSrB3wS4xab3kYqFktwBzfTdPg367ZJ2d
|
||||
|
||||
[devnet]
|
||||
disable_stacks_explorer = false
|
||||
disable_stacks_api = false
|
||||
# disable_subnet_api = false
|
||||
# disable_bitcoin_explorer = true
|
||||
# working_dir = "tmp/devnet"
|
||||
# stacks_node_events_observers = ["host.docker.internal:8002"]
|
||||
# miner_mnemonic = "fragile loan twenty basic net assault jazz absorb diet talk art shock innocent float punch travel gadget embrace caught blossom hockey surround initial reduce"
|
||||
# miner_derivation_path = "m/44'/5757'/0'/0/0"
|
||||
# faucet_mnemonic = "shadow private easily thought say logic fault paddle word top book during ignore notable orange flight clock image wealth health outside kitten belt reform"
|
||||
# faucet_derivation_path = "m/44'/5757'/0'/0/0"
|
||||
# orchestrator_port = 20445
|
||||
# bitcoin_node_p2p_port = 18444
|
||||
# bitcoin_node_rpc_port = 18443
|
||||
# bitcoin_node_username = "devnet"
|
||||
# bitcoin_node_password = "devnet"
|
||||
# bitcoin_controller_block_time = 30_000
|
||||
# stacks_node_rpc_port = 20443
|
||||
# stacks_node_p2p_port = 20444
|
||||
# stacks_api_port = 3999
|
||||
# stacks_api_events_port = 3700
|
||||
# bitcoin_explorer_port = 8001
|
||||
# stacks_explorer_port = 8000
|
||||
# postgres_port = 5432
|
||||
# postgres_username = "postgres"
|
||||
# postgres_password = "postgres"
|
||||
# postgres_database = "postgres"
|
||||
# bitcoin_node_image_url = "quay.io/hirosystems/bitcoind:devnet-v3"
|
||||
# stacks_node_image_url = "quay.io/hirosystems/stacks-node:devnet-2.4.0.0.0"
|
||||
# stacks_api_image_url = "hirosystems/stacks-blockchain-api:latest"
|
||||
# stacks_explorer_image_url = "hirosystems/explorer:latest"
|
||||
# bitcoin_explorer_image_url = "quay.io/hirosystems/bitcoin-explorer:devnet"
|
||||
# postgres_image_url = "postgres:14"
|
||||
# enable_subnet_node = true
|
||||
# subnet_node_image_url = "hirosystems/stacks-subnets:0.8.1"
|
||||
# subnet_leader_mnemonic = "twice kind fence tip hidden tilt action fragile skin nothing glory cousin green tomorrow spring wrist shed math olympic multiply hip blue scout claw"
|
||||
# subnet_leader_derivation_path = "m/44'/5757'/0'/0/0"
|
||||
# subnet_contract_id = "ST173JK7NZBA4BS05ZRATQH1K89YJMTGEH1Z5J52E.subnet-v3-0-1"
|
||||
# subnet_node_rpc_port = 30443
|
||||
# subnet_node_p2p_port = 30444
|
||||
# subnet_events_ingestion_port = 30445
|
||||
# subnet_node_events_observers = ["host.docker.internal:8002"]
|
||||
# subnet_api_image_url = "hirosystems/stacks-blockchain-api:latest"
|
||||
# subnet_api_postgres_database = "subnet_api"
|
||||
|
||||
# For testing in epoch 2.1 / using Clarity2
|
||||
# epoch_2_0 = 100
|
||||
# epoch_2_05 = 100
|
||||
# epoch_2_1 = 101
|
||||
# pox_2_activation = 102
|
||||
# epoch_2_2 = 103
|
||||
# epoch_2_3 = 104
|
||||
# epoch_2_4 = 105
|
||||
|
||||
|
||||
# Send some stacking orders
|
||||
[[devnet.pox_stacking_orders]]
|
||||
start_at_cycle = 3
|
||||
duration = 12
|
||||
wallet = "wallet_1"
|
||||
slots = 2
|
||||
btc_address = "mr1iPkD9N3RJZZxXRk7xF9d36gffa6exNC"
|
||||
|
||||
[[devnet.pox_stacking_orders]]
|
||||
start_at_cycle = 3
|
||||
duration = 12
|
||||
wallet = "wallet_2"
|
||||
slots = 1
|
||||
btc_address = "muYdXKmX9bByAueDe6KFfHd5Ff1gdN9ErG"
|
||||
|
||||
[[devnet.pox_stacking_orders]]
|
||||
start_at_cycle = 3
|
||||
duration = 12
|
||||
wallet = "wallet_3"
|
||||
slots = 1
|
||||
btc_address = "mvZtbibDAAA3WLpY7zXXFqRa3T4XSknBX7"
|
||||
26
tsconfig.json
Normal file
26
tsconfig.json
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ESNext",
|
||||
"useDefineForClassFields": true,
|
||||
"module": "ESNext",
|
||||
"lib": ["ESNext"],
|
||||
"skipLibCheck": true,
|
||||
|
||||
"moduleResolution": "bundler",
|
||||
"allowImportingTsExtensions": true,
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"noEmit": true,
|
||||
|
||||
"strict": true,
|
||||
"noImplicitAny": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"noFallthroughCasesInSwitch": true
|
||||
},
|
||||
"include": [
|
||||
"node_modules/@hirosystems/clarinet-sdk/vitest-helpers/src",
|
||||
"tests"
|
||||
]
|
||||
}
|
||||
37
vitest.config.js
Normal file
37
vitest.config.js
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
/// <reference types="vitest" />
|
||||
|
||||
import { defineConfig } from "vite";
|
||||
import { vitestSetupFilePath, getClarinetVitestsArgv } from "@hirosystems/clarinet-sdk/vitest";
|
||||
|
||||
/*
|
||||
In this file, Vitest is configured so that it works seamlessly with Clarinet and the Simnet.
|
||||
|
||||
The `vitest-environment-clarinet` will initialise the clarinet-sdk
|
||||
and make the `simnet` object available globally in the test files.
|
||||
|
||||
`vitestSetupFilePath` points to a file in the `@hirosystems/clarinet-sdk` package that does two things:
|
||||
- run `before` hooks to initialize the simnet and `after` hooks to collect costs and coverage reports.
|
||||
- load custom vitest matchers to work with Clarity values (such as `expect(...).toBeUint()`)
|
||||
|
||||
The `getClarinetVitestsArgv()` will parse options passed to the command `vitest run --`
|
||||
- vitest run -- --manifest ./Clarinet.toml # pass a custom path
|
||||
- vitest run -- --coverage --costs # collect coverage and cost reports
|
||||
*/
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
environment: "clarinet", // use vitest-environment-clarinet
|
||||
singleThread: true,
|
||||
setupFiles: [
|
||||
vitestSetupFilePath,
|
||||
// custom setup files can be added here
|
||||
],
|
||||
environmentOptions: {
|
||||
clarinet: {
|
||||
...getClarinetVitestsArgv(),
|
||||
// add or override options
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user