Storage Protocol made by DeNet Team.
Contract Storage available by address: 0xf1EFEd8F60b10B897A474E0470FE038bb2D2F1fa on polygon network.
Storage protocol consists of two dependent applications - storage node, and ProofOfStorage validation algorithm.. The ProofOfStorage contract is the core feature that allows you to build decentralized storage on top of any EVM.
Proof-of-Storage contract helps nodes and clients achieve consensus and auto-scalability without 100% uptime from client side. But the node must always be online.
- No protocol fees
- No scaling limit
- No need to create your own blockchain
- No system-requirements for creating proof
- Works with any EVM-compatible blockchain
- Support any ERC20 tokens for payments
- Gas limit of one proof lower than usual token swap
v3.0.2 Node NFT
- Added whitelist
- Updated limit algo into proofs
v3.0.2 Payments
- Removed "Automigration"
- Removing "token" address from getBalance
- Removing "token" address from localTransferFrom
- maxDepositPerUser updated from 1 USDC to 100 USDC (need to fix later)
- fixes with require error text
v3.0.2 PoS
- Added user_storage_size for payments
- Added user_storage_size for user storage
- Updates Signatures from User
- Solidity Version upgrade ^0.8.0 > 0.8.9 in PoS
- AutoTest Updated
- Last Block Proof changed to Last Proof Timestamp
- Support old payments version in PoS
- IsValidSign replaced into ECDSA from PoS
- removed "IPayments" from getUserRewardInfo
- Added minimal proofrange
- Added code comments
- Added base_difficulty changing via sending proofs
- Added debug mode (to disable check of user signature) (will depricated in v4 or later)
- AutoDifficulty fix
v0.2.0 Payments
- Bug fix
- GasToken Creation
- AutoMigration from old versions
v0.2.0 PoS
- Added Node NFT
- Added new version of Payments contract
v0.1.0
- First ProofOfStorage Contract
Name | Network | Address | Updated | Status |
---|---|---|---|---|
NodeNFT | Kovan | 0x805F977832959F39Cd7C2D9cDf5B30cE5A560d16 |
2021-12-21 | V3.0.2 |
ProofOfStorage | Kovan | 0x721F6078C009453bFdfa702f05aD54df7900B0eA |
2021-12-20 | V3.0.2 |
UserStorage | Kovan | 0x721F6078C009453bFdfa702f05aD54df7900B0eA |
2021-12-20 | V3.0.2 |
Payments V2 | Kovan | 0x0dC0B02e6763fC4f57176A6813d7B100C169AcC1 |
2021-09-09 | V0.3.0 |
Reward | Kovan | 0x7708A1Bd5C36e6f57C39c089575163662B35Ea94 |
2021-09-15 | V0.3.0 |
UserStorage | Kovan | 0x6C5eb19854A80037C7E911128CFF13E81841A40F |
2021-05-26 | V0.1.0 |
Payments | Kovan | 0xA260B0aD50fB996cEffa614bAb75846E06991622 |
2021-07-02 | V0.1.0 |
ProofOfStorage | Kovan | 0x2E8630780A231E8bCf12Ba1172bEB9055deEBF8B |
2021-05-22 | V0.1.0 |
DFILE Token | Kovan | 0x0d3C95079Ff0B4cf055a65EF4b63BbB047456848 |
2021-05-21 | V0.1.0 |
Consensus algorithm requirements:
- Minimum system requirements
- Minimum blockchain using
- Infinity scalability
- Decentralized
- Zero Knowledge Proofs (no sending full file for proof, or no using third-party)
- Proving files without any metadata storing in blockchain
- The complexity of the security of your own blockchain
Node operate and provide storage proofs without third-party:
- Load MerkleTree from user FS
- Select any file from user FS
- Make proof for selected file and one of 100 latest blocks
- Verify proof % base_diff < selected user difficulty
- Send proof to Smart Contract to get rewarded
Where:
- user FS - User filesystem merkle tree of selected user.
- proof - f(MerkleTree8kb, RHFS, nonce, digsig) (returns sha256(node address + file + blockhash)
- user_difficulty - (selected block number).sub(last proof block number for this user)
- base_diff - Constanta or dynamically updatable number
- reward - min((1/365 x days from last proof), 7) x deposited amount
More about PoS will available in docs
-
ProofOfStorage
Main contract for getting rewarded by ProofOfStorage
Available methods:
- makeDeposit (deposit reward for storage)
- closeDeposit (withdraw rewards)
- sendProof (Send proof from node)
- sendProofFrom (Send proof for other node)
- getUserRewardInfo (Returns info about user reward for ProofOfStorage)
- getUserRootHash (get last uploaded user root hash)
-
Payments
Contract for make local transfers for rewarding PoS actions
Available methods:
- localTransferFrom (call from PoS if valid proof)
- depositToLocal (deposit funds from other token, call from PoS if deposit)
- closeDeposit (withdraw funds, call from PoS if closing deposit)
-
User Storage
Contract for storing the last version of storage root hash and emit data about updater for nodes updated.
Available methods:
- updateRootHash (call from PoS, if updated user root hash from valid proof or signature)
- updateLastBlockNumber (call from PoS, if valid proof)
- setUserPlan (call from PoS, if updated Token for payments)
Est Gas Amount to send proof
Part Size | Gas | TX | Save on blockchain |
---|---|---|---|
8kb | 163,969 gas | Kovan Testnet | No |
16kb | 300,038 gas | Kovan Testnet | No |
16kb | 10,581,008 gas | Kovan Testnet | Yes |