An online NFT platform
Explore the docs »
View App
MantleMultisig contract is a smart contract on the Ethereum blockchain that implements a multi-signature wallet with the following features:
Multiple owners: The wallet can have multiple owners, each of whom has the ability to submit and confirm transactions. Required signatures: The number of required signatures can be set, which determines the minimum number of confirmations needed to execute a transaction.
Timelock: Transactions can be timelocked, which means they can only be executed after a certain amount of time has elapsed.
Authorized users: Each transaction can have a list of authorized users who have permission to execute the transaction.
Nonce: Each transaction is associated with a nonce, which is used to prevent replay attacks.
Events: The contract emits events for depositing funds, submitting transactions, confirming transactions, and executing transactions.
This section should list any major frameworks/libraries used to bootstrap your project. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples.
The project consist of the backend and also the front end.
- nodejs installed
- npm
- Hardhat
npm install npm@latest -g
npm install -g hardhat
To run this project locally, follow these steps.
- Clone the project locally, change into the directory, and install the dependencies:
git clone https://github.com/stugufaka/MantleMultisig
cd nftproject
# install using NPM or Yarn
npm install
# or
yarn
- Start the local Hardhat node
npx hardhat node- With the network running, deploy the contracts to the local network in a separate terminal window
npx hardhat run scripts/deploy.js --network localhost- Start the app
npm run dev
The chain ID should be 80001. If you have a localhost rpc set up, you may need to overwrite it.
To deploy to Polygon test or main networks, update the configurations located in hardhat.config.js to use a private key and, optionally, deploy to a private RPC like Infura.
/* hardhat.config.js */
require("@nomiclabs/hardhat-waffle");
require("hardhat-contract-sizer");
const privateKey = "private key here";
const projectId = "xxx";
module.exports = {
defaultNetwork: "hardhat",
networks: {
hardhat: {
chainId: 1337,
allowUnlimitedContractSize: true,
},
mantel: {
url: "https://rpc.testnet.mantle.xyz",
allowUnlimitedContractSize: true,
accounts: [privateKey],
},
},
solidity: {
version: "0.8.9",
settings: {
optimizer: {
enabled: true,
runs: 1,
},
},
},
};If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License.
- Mends Albert - https://twitter.com/mendalbert