Skip to content

Commit

Permalink
build: setup LSP10 as its own package
Browse files Browse the repository at this point in the history
  • Loading branch information
CJ42 committed Jan 21, 2024
1 parent c8db9e0 commit 0835a79
Show file tree
Hide file tree
Showing 19 changed files with 476 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
ERC165Checker
} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
import {LSP5Utils} from "lsp5/contracts/LSP5Utils.sol";
import {LSP10Utils} from "../../LSP10ReceivedVaults/LSP10Utils.sol";
import {LSP10Utils} from "lsp10/contracts/LSP10Utils.sol";

// constants
import {_INTERFACEID_LSP1_DELEGATE} from "../LSP1Constants.sol";
Expand Down
93 changes: 93 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,8 @@
"@openzeppelin/contracts-upgradeable": "^4.9.2",
"solidity-bytes-utils": "0.8.0",
"lsp2": "*",
"lsp5": "*"
"lsp5": "*",
"lsp10": "*"
},
"devDependencies": {
"@b00ste/hardhat-dodoc": "^0.3.15",
Expand Down
4 changes: 4 additions & 0 deletions packages/LSP10ReceivedVaults/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
root: true,
extends: ['custom'],
};
25 changes: 25 additions & 0 deletions packages/LSP10ReceivedVaults/.solhint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"extends": "solhint:recommended",
"rules": {
"avoid-sha3": "error",
"avoid-suicide": "error",
"avoid-throw": "error",
"avoid-tx-origin": "error",
"check-send-result": "error",
"compiler-version": ["error", "^0.8.0"],
"func-visibility": ["error", { "ignoreConstructors": true }],
"not-rely-on-block-hash": "error",
"not-rely-on-time": "error",
"reentrancy": "error",
"constructor-syntax": "error",
"private-vars-leading-underscore": ["error", { "strict": false }],
"imports-on-top": "error",
"visibility-modifier-order": "error",
"no-unused-import": "error",
"no-global-import": "error",
"reason-string": ["warn", { "maxLength": 120 }],
"avoid-low-level-calls": "off",
"no-empty-blocks": ["error", { "ignoreConstructors": true }],
"custom-errors": "off"
}
}
5 changes: 5 additions & 0 deletions packages/LSP10ReceivedVaults/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# LSP Template

This project can be used as a skeleton to build a package for a LSP implementation in Solidity (LUKSO Standard Proposal)

It is based on Hardhat.
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ import {
import {LSP2Utils} from "lsp2/contracts/LSP2Utils.sol";

// constants
import {_INTERFACEID_LSP9} from "../LSP9Vault/LSP9Constants.sol";

// TODO: add LSP9 as a dependency to this package and import the constant from it
bytes4 constant _INTERFACEID_LSP9 = 0x28af17e6;

import {
_LSP10_VAULTS_MAP_KEY_PREFIX,
_LSP10_VAULTS_ARRAY_KEY
} from "../LSP10ReceivedVaults/LSP10Constants.sol";
} from "./LSP10Constants.sol";

/**
* @title LSP10 Utility library.
Expand Down
128 changes: 128 additions & 0 deletions packages/LSP10ReceivedVaults/hardhat.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
import { HardhatUserConfig } from 'hardhat/config';
import { NetworkUserConfig } from 'hardhat/types';
import { config as dotenvConfig } from 'dotenv';
import { resolve } from 'path';

/**
* this package includes:
* - @nomiclabs/hardhat-ethers
* - @nomicfoundation/hardhat-chai-matchers
* - @nomicfoundation/hardhat-network-helpers
* - @nomiclabs/hardhat-etherscan
* - hardhat-gas-reporter (is this true? Why do we have it as a separate dependency?)
* - @typechain/hardhat
* - solidity-coverage
*/
import '@nomicfoundation/hardhat-toolbox';

// additional hardhat plugins
import 'hardhat-packager';
import 'hardhat-contract-sizer';
import 'hardhat-deploy';

// custom built hardhat plugins and scripts
// can be imported here (e.g: docs generation, gas benchmark, etc...)

dotenvConfig({ path: resolve(__dirname, './.env') });

function getTestnetChainConfig(): NetworkUserConfig {
const config: NetworkUserConfig = {
live: true,
url: 'https://rpc.testnet.lukso.network',
chainId: 4201,
};

if (process.env.CONTRACT_VERIFICATION_TESTNET_PK !== undefined) {
config['accounts'] = [process.env.CONTRACT_VERIFICATION_TESTNET_PK];
}

return config;
}

const config: HardhatUserConfig = {
defaultNetwork: 'hardhat',
networks: {
hardhat: {
live: false,
saveDeployments: false,
allowBlocksWithSameTimestamp: true,
},
luksoTestnet: getTestnetChainConfig(),
},
namedAccounts: {
owner: 0,
},
// uncomment if the contracts from this LSP package must be deployed at deterministic
// // addresses across multiple chains
// deterministicDeployment: {
// luksoTestnet: {
// // Nick Factory. See https://github.com/Arachnid/deterministic-deployment-proxy
// factory: '0x4e59b44847b379578588920ca78fbf26c0b4956c',
// deployer: '0x3fab184622dc19b6109349b94811493bf2a45362',
// funding: '0x0000000000000000000000000000000000000000000000000000000000000000',
// signedTx:
// '0xf8a58085174876e800830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222',
// },
// },
etherscan: {
apiKey: 'no-api-key-needed',
customChains: [
{
network: 'luksoTestnet',
chainId: 4201,
urls: {
apiURL: 'https://api.explorer.execution.testnet.lukso.network/api',
browserURL: 'https://explorer.execution.testnet.lukso.network/',
},
},
],
},
gasReporter: {
enabled: true,
currency: 'USD',
gasPrice: 21,
excludeContracts: ['Helpers/'],
src: './contracts',
showMethodSig: true,
},
solidity: {
version: '0.8.17',
settings: {
optimizer: {
enabled: true,
/**
* Optimize for how many times you intend to run the code.
* Lower values will optimize more for initial deployment cost, higher
* values will optimize more for high-frequency usage.
* @see https://docs.soliditylang.org/en/v0.8.6/internals/optimizer.html#opcode-based-optimizer-module
*/
runs: 1000,
},
outputSelection: {
'*': {
'*': ['storageLayout'],
},
},
},
},
packager: {
// What contracts to keep the artifacts and the bindings for.
contracts: [],
// Whether to include the TypeChain factories or not.
// If this is enabled, you need to run the TypeChain files through the TypeScript compiler before shipping to the registry.
includeFactories: true,
},
paths: {
artifacts: 'artifacts',
tests: 'tests',
},
typechain: {
outDir: 'types',
target: 'ethers-v5',
},
mocha: {
timeout: 10000000,
},
};

export default config;
45 changes: 45 additions & 0 deletions packages/LSP10ReceivedVaults/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"name": "lsp10",
"version": "0.12.1",
"description": "Package for the LSP10 Received Vaults standard",
"license": "Apache-2.0",
"author": "",
"keywords": [
"LUKSO",
"LSP",
"Blockchain",
"Standards",
"Smart Contracts",
"Ethereum",
"EVM",
"Solidity"
],
"scripts": {
"build": "hardhat compile --show-stack-traces",
"clean": "hardhat clean",
"format": "prettier --write .",
"lint": "eslint . --ext .ts,.js",
"lint:solidity": "solhint 'contracts/**/*.sol' && prettier --check 'contracts/**/*.sol'"
},
"dependencies": {
"@erc725/smart-contracts": "^6.0.0"
},
"devDependencies": {
"@nomicfoundation/hardhat-toolbox": "^2.0.2",
"@typechain/ethers-v5": "^10.2.0",
"dotenv": "^16.0.3",
"eslint-config-custom": "*",
"ethers": "^5.7.2",
"hardhat": "^2.13.0",
"hardhat-contract-sizer": "^2.8.0",
"hardhat-deploy": "^0.11.25",
"hardhat-gas-reporter": "^1.0.9",
"hardhat-packager": "^1.4.2",
"lsp2": "*",
"solhint": "^3.3.6",
"ts-node": "^10.2.0",
"tsconfig": "*",
"typechain": "^8.0.0",
"typescript": "^4.9.5"
}
}
4 changes: 4 additions & 0 deletions packages/LSP10ReceivedVaults/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"extends": "tsconfig/contracts.json",
"include": ["**/*.ts"]
}
4 changes: 4 additions & 0 deletions packages/LSP5ReceivedAssets/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
root: true,
extends: ['custom'],
};
Loading

0 comments on commit 0835a79

Please sign in to comment.