[contracts] StorageRequest/Offer is object instead of tuple

This commit is contained in:
Mark Spanbroek 2022-03-23 14:20:36 +01:00 committed by markspanbroek
parent 5f10549f19
commit 9ade3fdd37
4 changed files with 49 additions and 17 deletions

View File

@ -4,11 +4,25 @@ import pkg/nimcrypto
export contractabi
type
StorageOffer* = tuple
host: Address
requestId: array[32, byte]
price: UInt256
expiry: UInt256
StorageOffer* = object
host*: Address
requestId*: array[32, byte]
price*: UInt256
expiry*: UInt256
func toTuple(offer: StorageOffer): auto =
(
offer.host,
offer.requestId,
offer.price,
offer.expiry
)
func solidityType*(_: type StorageOffer): string =
solidityType(typeof StorageOffer.default.toTuple)
func encode*(encoder: var AbiEncoder, offer: StorageOffer) =
encoder.write(offer.toTuple)
func id*(offer: StorageOffer): array[32, byte] =
let encoding = AbiEncoder.encode(offer)

View File

@ -4,15 +4,33 @@ import pkg/nimcrypto
export contractabi
type
StorageRequest* = tuple
client: Address
duration: UInt256
size: UInt256
contentHash: array[32, byte]
proofProbability: UInt256
maxPrice: UInt256
expiry: UInt256
nonce: array[32, byte]
StorageRequest* = object
client*: Address
duration*: UInt256
size*: UInt256
contentHash*: array[32, byte]
proofProbability*: UInt256
maxPrice*: UInt256
expiry*: UInt256
nonce*: array[32, byte]
func toTuple(request: StorageRequest): auto =
(
request.client,
request.duration,
request.size,
request.contentHash,
request.proofProbability,
request.maxPrice,
request.expiry,
request.nonce
)
func solidityType*(_: type StorageRequest): string =
solidityType(typeof StorageRequest.default.toTuple)
func encode*(encoder: var AbiEncoder, request: StorageRequest) =
encoder.write(request.toTuple)
func id*(request: StorageRequest): array[32, byte] =
let encoding = AbiEncoder.encode(request)

View File

@ -41,7 +41,7 @@ proc getNonce(): array[32, byte] =
doAssert randomBytes(result) == 32
proc purchase*(purchasing: Purchasing, request: PurchaseRequest): Purchase =
let request: StorageRequest = (
let request = StorageRequest(
client: Address.default, # TODO
duration: request.duration,
size: request.size,

View File

@ -11,7 +11,7 @@ proc example*(_: type Address): Address =
Address(randomBytes(20))
proc example*(_: type StorageRequest): StorageRequest =
(
StorageRequest(
client: Address.example,
duration: (10 * 60 * 60).u256, # 10 hours
size: (1 * 1024 * 1024 * 1024).u256, # 1 Gigabyte
@ -23,7 +23,7 @@ proc example*(_: type StorageRequest): StorageRequest =
)
proc example*(_: type StorageOffer): StorageOffer =
(
StorageOffer(
host: Address.example,
requestId: StorageRequest.example.id,
price: 42.u256,