mirror of
https://github.com/codex-storage/nim-codex.git
synced 2025-01-14 23:15:00 +00:00
2e5c28781c
Integrate dagger contracts from `nim-dagger-contracts` repo. Add `dagger-contracts`, `nim-web3`, and all of `nim-web3`’s transitive deps as submodule deps to `nim-dagger`. Note: `nim-web3` and its transitive deps may no longer be needed when we switch to `nim-ethers`. Add a `testContracts` nimble task to test all of the contracts functionality. Namely, this spins up an ethereum simulator, deploys the contracts (in `dagger-contracts`), runs the contract tests, and finally, regardless of success/error, kills the ethereum sim processes. The nimble task can be run with `./env.sh nimble testContracts`. We also tested `nim-dagger-contracts` as a submodule dep of `nim-dagger`, and while the tests run as expected, the preference is to merge `nim-dagger-contracts` inside of `nim-dagger` for ease of parallel development. There’s also a high probability that `nim-dagger-contracts` is not being used as a dep by other projects. Are there any strong objections to this? Co-authored-by: Michael Bradley <michaelsbradleyjr@gmail.com>
43 lines
915 B
Nim
43 lines
915 B
Nim
import pkg/stint
|
|
import pkg/contractabi except Address
|
|
import pkg/nimcrypto
|
|
import pkg/chronos
|
|
|
|
export stint
|
|
|
|
type
|
|
StorageRequest* = object
|
|
duration*: UInt256
|
|
size*: UInt256
|
|
contentHash*: Hash
|
|
proofPeriod*: UInt256
|
|
proofTimeout*: UInt256
|
|
nonce*: array[32, byte]
|
|
StorageBid* = object
|
|
requestHash*: Hash
|
|
bidExpiry*: UInt256
|
|
price*: UInt256
|
|
Hash = array[32, byte]
|
|
Signature = array[65, byte]
|
|
|
|
func hashRequest*(request: StorageRequest): Hash =
|
|
let encoding = AbiEncoder.encode: (
|
|
"[dagger.request.v1]",
|
|
request.duration,
|
|
request.size,
|
|
request.contentHash,
|
|
request.proofPeriod,
|
|
request.proofTimeout,
|
|
request.nonce
|
|
)
|
|
keccak256.digest(encoding).data
|
|
|
|
func hashBid*(bid: StorageBid): Hash =
|
|
let encoding = AbiEncoder.encode: (
|
|
"[dagger.bid.v1]",
|
|
bid.requestHash,
|
|
bid.bidExpiry,
|
|
bid.price
|
|
)
|
|
keccak256.digest(encoding).data
|