mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-01-08 08:23:07 +00:00
* don't force logging syncs * Add failing test * wip discovery engine * re-add chronicles sinks * wip * move network related stuff to own folder * move peer related stuff to own folder * extract discovery into it's own engine * update imports * move pending blocks into engine module * add top level exports * update imports * update import paths * update imports * support for inflight request filtering and tests * use `remove` instead of `del` * fix sorting in `selectCheapest` * re-org test file structure * fix to use discovery engine * file re-org * fix compilation * fixup discovery to use async handlers * more re-org * rework with support for discovery engine * add logging * use defaults * wip: reworking with discoveryengine * wip: more test fixes * more logging * use ordered table * use `bt` for blocktype Block * fix tests * make tests work with discovery engine * expose all node components * fix to work with discovery engine * wip * propagate cancellation in listBlocks * start/stop disc engine in blockexc engine * remove disc engine start/stop * wire up discovery engine * misc comments and imports * pass discovery to dagger node * set sleep timers * unused imports * misc * don't spawn a task, await it * don't await handlers * trace logging * reduce default sleep time Co-authored-by: Tanguy <tanguy@status.im>
40 lines
1.2 KiB
Nim
40 lines
1.2 KiB
Nim
import std/math
|
|
import pkg/nitro
|
|
import pkg/questionable/results
|
|
import ../peers
|
|
|
|
export nitro
|
|
export results
|
|
|
|
push: {.upraises: [].}
|
|
|
|
const ChainId* = 0.u256 # invalid chain id for now
|
|
const Asset* = EthAddress.zero # invalid ERC20 asset address for now
|
|
const AmountPerChannel = (10'u64^18).u256 # 1 asset, ERC20 default is 18 decimals
|
|
|
|
func openLedgerChannel*(wallet: WalletRef,
|
|
hub: EthAddress,
|
|
asset: EthAddress): ?!ChannelId =
|
|
wallet.openLedgerChannel(hub, ChainId, asset, AmountPerChannel)
|
|
|
|
func getOrOpenChannel(wallet: WalletRef, peer: BlockExcPeerCtx): ?!ChannelId =
|
|
if channel =? peer.paymentChannel:
|
|
success channel
|
|
elif account =? peer.account:
|
|
let channel = ?wallet.openLedgerChannel(account.address, Asset)
|
|
peer.paymentChannel = channel.some
|
|
success channel
|
|
else:
|
|
failure "no account set for peer"
|
|
|
|
func pay*(wallet: WalletRef,
|
|
peer: BlockExcPeerCtx,
|
|
amount: UInt256): ?!SignedState =
|
|
if account =? peer.account:
|
|
let asset = Asset
|
|
let receiver = account.address
|
|
let channel = ?wallet.getOrOpenChannel(peer)
|
|
wallet.pay(channel, asset, receiver, amount)
|
|
else:
|
|
failure "no account set for peer"
|