nim-codex/codex/blockexchange/protobuf/payments.nim

42 lines
1.1 KiB
Nim
Raw Normal View History

2021-04-07 10:19:00 +00:00
import pkg/protobuf_serialization
2021-04-08 08:09:59 +00:00
import pkg/stew/byteutils
import pkg/stint
2021-04-07 10:19:00 +00:00
import pkg/nitro
import pkg/questionable
import pkg/upraises
import ./blockexc
2021-04-07 10:19:00 +00:00
export AccountMessage
export StateChannelUpdate
2021-04-07 10:19:00 +00:00
export stint
2021-04-07 10:19:00 +00:00
export nitro
push: {.upraises: [].}
2021-04-07 10:19:00 +00:00
type
Account* = object
2021-04-07 10:19:00 +00:00
address*: EthAddress
func init*(_: type AccountMessage, account: Account): AccountMessage =
AccountMessage(address: @(account.address.toArray))
2021-04-07 10:19:00 +00:00
func parse(_: type EthAddress, bytes: seq[byte]): ?EthAddress =
var address: array[20, byte]
if bytes.len != address.len:
return EthAddress.none
for i in 0..<address.len:
address[i] = bytes[i]
EthAddress(address).some
func init*(_: type Account, message: AccountMessage): ?Account =
without address =? EthAddress.parse(message.address):
return none Account
some Account(address: address)
func init*(_: type StateChannelUpdate, state: SignedState): StateChannelUpdate =
StateChannelUpdate(update: state.toJson.toBytes)
proc init*(_: type SignedState, update: StateChannelUpdate): ?SignedState =
SignedState.fromJson(string.fromBytes(update.update))