Commit Graph

191 Commits

Author SHA1 Message Date
Mark Spanbroek 111dce58e8 [proofs] Test that pointer increases by one every block 2022-04-05 11:36:31 +02:00
Mark Spanbroek 81c7dcd25a Disallow finishing of contract that wasn't started 2022-03-22 12:41:13 +01:00
Mark Spanbroek c606b455d6 Disallow starting an offer that was not selected 2022-03-22 12:41:13 +01:00
Mark Spanbroek 2a745d7abe Fix flaky test
Ensure that when we check whether a proof is required,
the pointer isn't about to wrap.
2022-03-15 17:01:04 +01:00
Mark Spanbroek 438fb605c0 Ensure local ethereum node has at least 256 blocks
Storage contract cannot be deployed when block height
is less than 256 blocks.
2022-03-15 17:01:04 +01:00
Mark Spanbroek 29698fee71 Fix tests after OpenZeppelin update 2022-03-15 17:01:04 +01:00
Mark Spanbroek 3fd7c756d9 Fix flaky tests
By ensuring that there's enough blocks left
for submitting a proof.
2022-03-15 10:01:12 +01:00
Mark Spanbroek f8ddc4a2f6 Add getChallenge() to Storage contract 2022-03-15 10:01:12 +01:00
Mark Spanbroek fd55afcc5a Make pointer downtime configurable 2022-03-15 10:01:12 +01:00
Mark Spanbroek 476956c4d5 Replace pointer duos with pointer downtime design 2022-03-15 10:01:12 +01:00
Mark Spanbroek 241fcf10a5 Unlock host collateral at end of contract 2022-03-15 10:01:12 +01:00
Mark Spanbroek f4d895113f Fix flaky test 2022-03-15 10:01:12 +01:00
Mark Spanbroek bb14732ddc Remove mine*() testing functions 2022-03-15 10:01:12 +01:00
Mark Spanbroek 6d726fc2cc Require a block height of at least 256 2022-03-15 10:01:12 +01:00
Mark Spanbroek fd06bc00b3 Move periodOf(), periodStart(), periodEnd() into time module 2022-03-15 10:01:12 +01:00
Mark Spanbroek 78eaaa7812 Replace Proof implementation with new design
More info: https://github.com/status-im/dagger-research/pull/66
2022-03-15 10:01:12 +01:00
Mark Spanbroek 22e8ea50e2 Add EVM snapshots including time for tests 2022-03-15 10:01:12 +01:00
Mark Spanbroek ee4683e50c Add proof probability to Request 2022-03-15 10:01:12 +01:00
Mark Spanbroek 036a214427 Proof period and proof timeout are network constants now 2022-03-15 10:01:12 +01:00
Mark Spanbroek c181195487 Temporarily disable test 2022-03-15 10:01:12 +01:00
Mark Spanbroek e818d70b85 Remove Contracts in favor of Marketplace 2022-03-15 10:01:12 +01:00
Mark Spanbroek 7e7134b99d Allow events to be filtered by request id 2022-03-15 10:01:12 +01:00
Mark Spanbroek c835ac1cc4 Emit event when offer is selected 2022-03-15 10:01:12 +01:00
Mark Spanbroek 6e6cc1a230 Reject offer for expired request 2022-03-15 10:01:12 +01:00
Mark Spanbroek 85b212c703 Select a storage offer 2022-03-15 10:01:12 +01:00
Mark Spanbroek cc57155792 Lock collateral of host that offers storage 2022-03-15 10:01:12 +01:00
Mark Spanbroek 980e2343ed Add expiry to storage requests 2022-03-15 10:01:12 +01:00
Mark Spanbroek 18e667bf19 Use client/host address to check for duplicates
Removes the need for the extra correctness checks
on request size and offer expiry, since these are
no longer used to check for duplicates.
2022-03-15 10:01:12 +01:00
Mark Spanbroek ae92f63987 Add host address to offers 2022-03-15 10:01:12 +01:00
Mark Spanbroek 51e2d65596 Add client address to requests 2022-03-15 10:01:12 +01:00
Mark Spanbroek b349b76ab7 Offer storage using Marketplace contract 2022-03-15 10:01:12 +01:00
Mark Spanbroek e1ef2a2216 Request storage using Marketplace contract 2022-03-15 10:01:12 +01:00
Mark Spanbroek b15f4e749b Fix test name 2022-03-01 09:38:53 +01:00
Mark Spanbroek e963a25c94 Replace Stakes with Collateral
Removes the old Stakes implementation in favor of the
new Collateral implementation.
2022-03-01 09:38:53 +01:00
Mark Spanbroek 91a976a007 Prevent withdrawal of locked collateral 2022-03-01 09:38:53 +01:00
Mark Spanbroek c5fab40535 Account locking 2022-03-01 09:38:53 +01:00
Mark Spanbroek 61c41e415d Fix test file name 2022-03-01 09:38:53 +01:00
Mark Spanbroek ab38473688 Slash collateral 2022-03-01 09:38:53 +01:00
Mark Spanbroek c86fdfbec1 Withdraw collateral 2022-03-01 09:38:53 +01:00
Mark Spanbroek 6e0aded775 Deposit collateral 2022-03-01 09:38:53 +01:00
Mark Spanbroek f7af18eb2d Lint with solhint 2022-02-10 07:46:03 +01:00
Mark Spanbroek 78755ecaa2 Format using prettier 2022-02-10 07:46:03 +01:00
Mark Spanbroek 0fedd8875f Use standard ABI encoding instead of the non-standard
packing mode.
2021-11-24 11:43:31 +01:00
Mark Spanbroek b9a9be350a Simplify signature of TestToken.mint
To be compatible with nim-web3, which doesn't
support arrays in a method signature.
2021-11-23 14:35:00 +01:00
Mark Spanbroek a69a6d6975 Use deployment fixture for Storage contract tests 2021-11-18 13:56:12 +01:00
Mark Spanbroek 7b16841534 Change test token to allow arbitrary minting 2021-11-18 13:56:12 +01:00
Mark Spanbroek 2277fd1366 Add TODO 2021-11-04 14:28:02 +01:00
Mark Spanbroek 8bb8441bce Slash host stake when too many proofs are missing 2021-11-04 14:19:58 +01:00
Mark Spanbroek 50bab88447 Allow slashing of stake 2021-11-04 13:16:11 +01:00
Mark Spanbroek 38fee6d83a Pay host when contract is finished 2021-11-04 11:55:47 +01:00
Mark Spanbroek d2a3cc4a89 Client pays price when creating contract 2021-11-04 11:40:03 +01:00
Mark Spanbroek afad0e49ec Mint test tokens for both client and host 2021-11-04 11:32:21 +01:00
Mark Spanbroek 54cc2987df Ensure that finishing a contract can only be done once 2021-11-04 11:18:05 +01:00
Mark Spanbroek 8fbb99630c Ensure that starting a contract can only be done once 2021-11-04 10:23:00 +01:00
Mark Spanbroek aa673ff71c Unlock host stake at end of contract 2021-11-04 10:19:23 +01:00
Mark Spanbroek d0a22afc3d Extract mining test helpers to separate module 2021-11-04 10:18:09 +01:00
Mark Spanbroek 6de82709ca Only host can call start on a contract 2021-11-04 10:00:41 +01:00
Mark Spanbroek 376962322d Only expect proofs when the contract is started 2021-11-04 10:00:41 +01:00
Mark Spanbroek 7bb949a5cc Wording 2021-11-03 17:20:33 +01:00
Mark Spanbroek b865d0f4c9 Decrease chance of incidental test failure 2021-11-03 17:15:24 +01:00
Mark Spanbroek c0fb0c725c Do not require proofs before start of contract 2021-11-03 17:15:03 +01:00
Mark Spanbroek 8efa9fe162 Stop requiring proofs when contract has ended 2021-11-03 17:02:12 +01:00
Mark Spanbroek 2784800c3e Add end time to proofs based on contract duration 2021-11-03 17:01:11 +01:00
Mark Spanbroek 3326c4fe74 Make isProofRequired() work for the current block
The block hash of the current block is not known yet, so
we use the block hash of the previous block to determine
whether a proof is required for a block.
2021-11-03 13:20:40 +01:00
Mark Spanbroek e7f3dc3dae Define contract duration in number of blocks
This makes calculation with duration in Solidity simpler
and less prone to errors.
2021-11-03 11:10:42 +01:00
Mark Spanbroek 65c3cacb66 Host stake is locked up when contract is created 2021-11-02 12:50:20 +01:00
Mark Spanbroek d49c75a74b Make amount of stake configurable 2021-11-02 12:45:53 +01:00
Mark Spanbroek 8736e5a1aa Host has to put up stake before entering into a contract 2021-11-02 11:25:01 +01:00
Mark Spanbroek 5eb571fe1c Use 'request' and 'bid' objects in tests 2021-11-02 09:45:49 +01:00
Mark Spanbroek a5e05018ad Move example values for tests into separate file 2021-11-02 09:04:51 +01:00
Mark Spanbroek 7b6c6c2fc5 Rename: StorageContracts -> Storage 2021-11-01 16:34:01 +01:00
Mark Spanbroek eefa23ff02 Change parameter order
Move parameters belonging to the bid together.
2021-11-01 16:23:37 +01:00
Mark Spanbroek 650f5d1f1a Checking of new storage contracts is moved to Contracts.sol 2021-11-01 16:17:42 +01:00
Mark Spanbroek aa0def1127 Move timeout validity check to Proofs contract 2021-11-01 15:28:22 +01:00
Mark Spanbroek d5dede6e6b Change visibility of stake functions to 'internal'
This ensures that any contract that inherits from Stakes
doesn't expose its functions by default.
2021-11-01 15:17:19 +01:00
Mark Spanbroek d1f5ce0786 Extract logic around proofs into separate contract 2021-11-01 15:12:05 +01:00
Mark Spanbroek c013a37229 Add contract for keeping track of stakes in ERC20 tokens 2021-10-21 14:09:37 +02:00
Mark Spanbroek 23887f9190 Do not mark proof as missing twice 2021-10-21 10:32:29 +02:00
Mark Spanbroek c3e85c675a Use bid hash as contract id
Adds nonce to storage request to ensure uniqueness.
2021-10-20 14:30:31 +02:00
Mark Spanbroek 08cedae4bf Multiple storage contracts in solidity contract 2021-10-20 14:30:31 +02:00
Mark Spanbroek d005bf7c3c Rename StorageContract -> StorageContracts 2021-10-20 10:59:08 +02:00
Mark Spanbroek 4913edb6ce Allow anyone to mark missing proofs 2021-10-19 09:37:03 +02:00
Mark Spanbroek 973b70734f Make test less dependent on exact timing of block timestamp 2021-10-18 16:20:30 +02:00
Mark Spanbroek 47f0746f06 Add expiration time to bids 2021-10-18 15:31:19 +02:00
Mark Spanbroek 71efdd36c7 Add (dummy) proof submission 2021-10-18 14:55:59 +02:00
Mark Spanbroek 04b2a31f74 Add hash of data that is to be stored to the contract 2021-10-14 14:49:29 +02:00
Mark Spanbroek 23a4b84816 Add proof period and timeout to request for storage 2021-10-14 14:01:28 +02:00
Mark Spanbroek cbf34df013 Require proofs on average once every proof period 2021-10-14 12:37:14 +02:00
Mark Spanbroek 550fcf4afe Add proof period and timeout to contract 2021-10-14 09:10:57 +02:00
Mark Spanbroek 31807dfe58 Add TODO's as suggested by Tanguy 2021-10-13 10:21:03 +02:00
Mark Spanbroek 6ef71f0419 Introduces StorageContract
A StorageContract can only be instantiated when a request
for storage and a bid have been signed.
2021-10-12 16:59:34 +02:00