CircuitSage.psm1
|
function Invoke-CDRPC{ param( [Parameter(Mandatory=$true)] [string]$endpoint, $json ) $json = $json | ConvertTo-Json $uri = "https://api.circuitdao.com/$endpoint" #$uri = "https://testnet-api.circuitdao.com/$endpoint" Invoke-RestMethod -Method Post -Uri $uri -Body $json -ContentType "application/json" -AllowInsecureRedirect } function Get-CDOracle{ $json =@{ } Invoke-CircuitDaoRPC -endpoint oracle -json $json } <# endpoint -- /protocol/state #> function Get-CDProtocolState{ $json = @{ vaults = $true } Invoke-CDRPC -endpoint "protocol/state" -json $json } function Get-CDVaults(){ [CmdletBinding()] param( [Parameter(Mandatory=$true)] [ValidateSet("Any","NearingLiquidation","PendingLiquidation","InLiquidation","BadDebt")] [string]$status ) $vaults = Get-CDProtocolState switch ($status) { "NearingLiquidation" { return $vaults.vaults_nearing_liquidation } "PendingLiquidation" { return $vaults.vaults_pending_liquidation } "InLiquidation" { return $vaults.vaults_in_liquidation } "BadDebt" { return $vaults.vaults_bad_debt} "Any" { return $vaults } } } function Get-CDVault{ param( [Parameter(Mandatory=$true)] [string]$vault ) Invoke-CDRPC -endpoint "vaults/$vault/" -json @{} } function Get-CDMyVault{ $synthetic_pks = Get-CDSyntheticPKs $json = @{ synthetic_pks = $synthetic_pks } Invoke-CDRPC -endpoint "vault" -json $json } function Get-CDMySavingsVault{ $synthetic_pks = Get-CDSyntheticPKs $json = @{ synthetic_pks = $synthetic_pks } Invoke-CDRPC -endpoint "savings" -json $json } function Invoke-CDVaultAction{ param( [Parameter(Mandatory=$true)] [ValidateSet("borrow","deposit","repay","withdraw")] [string]$operation, [Parameter(Mandatory=$true)] [UInt64]$amount, [switch]$submit ) $synthetic_pks = Get-CDSyntheticPKs $json = @{ synthetic_pks = $synthetic_pks fee_per_cost = 0 only_estimate_fee = $false amount = $amount } $response = Invoke-CDRPC -endpoint "vault/$operation" -json $json if($submit.IsPresent){ $spend = invoke-sagerpc -endpoint sign_coin_spends -json @{ auto_submit = $true partial = $false coin_spends = ($response.bundle.coin_spends) } return $spend } else { return $response } } function Get-CDSyntheticPKs{ $keys = (PowerSage\Get-SageDerivations -limit 100 -offset 0 ).derivations.public_key return $keys } function Start-CDVaultAuction{ param( [Parameter(Mandatory=$true)] [string]$vault ) $synthetic_pks = Get-CDSyntheticPKs $initiator_puzzle_hash = Get-CDMyPuzzleHash $json = @{ synthetic_pks = $synthetic_pks fee_per_cost = 0 only_estimate_fee = $false vault_name = $vault initiator_puzzle_hash = $initiator_puzzle_hash } Invoke-CDRPC -endpoint "vaults/start_auction" -json $json } function Get-CDMyPuzzleHash{ $response = Get-CDAddress if($null -ne $response){ return ($response."0".puzzle_hash) } return $false } function Get-CDAddress{ $synthetic_pks = Get-CDSyntheticPKs $json = @{ synthetic_pks = $synthetic_pks fee_per_cost = 0 derivation_index = 0 include_puzzle_hashes = $true } Invoke-CDRPC -endpoint "wallet/addresses" -json $json } function New-CDVaultBid{ param( [Parameter(Mandatory=$true)] [string]$vault, [Parameter(Mandatory=$true)] [UInt64]$amount, [Parameter(Mandatory=$true)] [UInt64]$max_bid_price, [Parameter(Mandatory=$true)] [switch]$info ) $synthetic_pks = Get-CDSyntheticPKs $initiator_puzzle_hash = Get-CDMyPuzzleHash if($initiator_puzzle_hash -and $synthetic_pks){ $json = @{ synthetic_pks = $synthetic_pks fee_per_cost = 0 only_estimate_fee = $false vault_name = $vault target_puzzle_hash = $initiator_puzzle_hash amount = $amount max_bid_price = $max_bid_price info = $false ignore_coin_names = @() } if($info.IsPresent){ $json.info = $true } Invoke-CDRPC -endpoint "vaults/bid_auction" -json $json } } function Invoke-CDSignCoinSpend{ param( [Parameter(Mandatory=$true)] $coin_spend, [switch]$submit, [switch]$partial ) if($partial.IsPresent){ $partial = $true } else { $partial = $false } if($submit.IsPresent){ $auto_submit = $true } else { $auto_submit = $false } $json = @{ auto_submit = $auto_submit coin_spends = (@($coin_spend.coin_spend)) partial = $false } Invoke-SageRPC -endpoint sign_coin_spends -json $json } function Get-CDMyTransactions{ param( [int32]$start_index=0 ) $synthetic_pks = Get-CDSyntheticPKs [int32]$end_index = $start_index + 20 $json = @{ synthetic_pks = $synthetic_pks fee_per_cost = 0 only_estimate_fee=$false } Invoke-CDRPC -endpoint "vault/transactions/?start_index=$start_index&end_index=$end_index" -json $json } Export-ModuleMember -Function Get-CDMyVault, Invoke-CDVaultAction, Invoke-CDRPC, Get-CDVault, Get-CDVaults, Get-CDSyntheticPKs, Get-CDMySavingsVault |