Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GovTool 1.0.18-dev #2028

Merged
merged 61 commits into from
Sep 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
a101555
Add governance script support for gov action loader
nabinpkl Aug 23, 2024
4166cbc
Add multiple testnet feature
reeshavacharya Sep 3, 2024
cea87fb
FIx api network selection
reeshavacharya Sep 3, 2024
56dd69d
Add guardrail script input and remove mock database
reeshavacharya Sep 3, 2024
97ef2ab
Add network header on api calls
reeshavacharya Sep 3, 2024
060171b
Enable explicit guardrail script parsing
reeshavacharya Sep 3, 2024
38b9513
Add guardrail script field for parameter update
reeshavacharya Sep 3, 2024
9c38453
Fix loading balance placeholer
reeshavacharya Sep 3, 2024
64da258
Generate valid hardfork action
reeshavacharya Sep 4, 2024
86a69a6
chore: add function to skip tests if not hardfork
kneerose Aug 7, 2024
61cff2d
chore: skip bootstrap and teardown test if not hardfork
kneerose Aug 7, 2024
c52a23f
chore: skip hardfork dependent test if not hardfork
kneerose Aug 7, 2024
8d0c407
test: add test 6s
kneerose Aug 28, 2024
0b836a0
test: add test 6T to display proper network name
kneerose Aug 28, 2024
e0765fb
chore: add condition to create and view info proposal only on bootstrap
kneerose Sep 4, 2024
a4ec43d
chore: skip treasury proposal for bootstrap phase
kneerose Sep 4, 2024
a9aadc5
fix: change vote button and proposal sort
kneerose Sep 4, 2024
757cd11
chore: update network name and warn bootstrap test by testid and netw…
kneerose Sep 4, 2024
5b0c62a
enhance: JSON.stringify formatting with pretty-printing while upload …
kneerose Sep 5, 2024
2bd4445
test: add test 3Q to ensure dRep is excluded from dRep directory when…
kneerose Sep 5, 2024
fe83a8f
chore: update dRep info content testids
kneerose Sep 5, 2024
12c5266
chore: filter info type only on bootstraping phase
kneerose Sep 5, 2024
d25a824
chore: add wallet bootstrap dependencies on dRep project
kneerose Sep 5, 2024
12854bc
fix: test 8B with missing filter button and extra sort button
kneerose Sep 5, 2024
3097505
chore: update govAction type and generalize view proposal logic for a…
kneerose Sep 6, 2024
0398941
test: add test 5L to restrict votes to info gov action during bootstrap
kneerose Sep 6, 2024
d966f3b
chore: use multiple stake adaholder for delegated ada visibility test
kneerose Sep 6, 2024
4ba2c5e
fix: dRep registration dependent test due to additional link and desc…
kneerose Sep 6, 2024
028ef7a
chore: update package-lock.json with latest package versions
kneerose Sep 6, 2024
2fc441b
chore: rename isTreasuryAndBootStraping function to skipIfTreasuryAnd…
kneerose Sep 6, 2024
c7b24c6
Merge pull request #1966 from IntersectMBO/feat/test-conditions-hardfork
kneerose Sep 9, 2024
3534ebe
Update guardrail script
reeshavacharya Sep 9, 2024
ead3e5a
Add preview/preprod config on gov-action-loader build
mesudip Sep 9, 2024
1c90e28
Merge remote-tracking branch 'origin/develop' into HEAD
mesudip Sep 9, 2024
c438146
Merge pull request #1926 from cardanoapi/develop
mesudip Sep 9, 2024
4e76c9d
[#1941] fix passing DRep votes to the modal
j-dyczka Sep 10, 2024
a4f6f48
Merge pull request #1994 from IntersectMBO/fix/1941-wrong-votes-in-modal
jdyczka Sep 10, 2024
0b1ac94
change base readme for header image and mainnet launch
Ryun1 Sep 10, 2024
3f5b8d1
fix terms and conditions link
Ryun1 Sep 6, 2024
3856733
fix: broken terms and conditions link
Ryun1 Sep 6, 2024
5cb570e
fix failing storybook test
j-dyczka Sep 11, 2024
8200529
Merge pull request #2017 from IntersectMBO/fix/failing-storybook-test
jdyczka Sep 11, 2024
823ca6f
[#1817] add Matomo Analytics script
j-dyczka Sep 11, 2024
aead00d
chore / bump pdf-ui to v0.3.9
j-dyczka Sep 11, 2024
eaa03df
[#1941] show all kinds of votes in the modal showing vote numbers
j-dyczka Sep 11, 2024
a6991e8
[#1982] hide Delegate button if already delegated to this DRep
j-dyczka Sep 11, 2024
7100933
Merge pull request #2015 from IntersectMBO/chore/bump-pdf-ui-to-v0.3.9
jdyczka Sep 12, 2024
d4a118a
Merge pull request #2014 from IntersectMBO/fix/1982-hide-delegate-but…
jdyczka Sep 12, 2024
ec47306
Merge pull request #2022 from IntersectMBO/fix/1941-show-all-votes-in…
jdyczka Sep 12, 2024
594671c
[#2008] fix condition for disabling voting on different GA types
j-dyczka Sep 11, 2024
70c9204
Merge pull request #2021 from IntersectMBO/chore/1817-matomo-script
jdyczka Sep 12, 2024
69daf62
Merge pull request #2024 from IntersectMBO/fix/2008-enable-voting-on-…
jdyczka Sep 12, 2024
66437d9
fix incorrect copy
Ryun1 Sep 12, 2024
4982292
add to changelog
Ryun1 Sep 12, 2024
7cc24fd
[#1923] display value of Ada holder voting power
j-dyczka Sep 11, 2024
892238a
Merge pull request #2009 from IntersectMBO/fix/1923-display-voting-po…
jdyczka Sep 12, 2024
b520ab0
new phrasing for direct voter registration
Ryun1 Sep 10, 2024
75fecef
Merge branch 'develop' into update-basereadme-for-mainnet-launch
Ryun1 Sep 12, 2024
5be158e
Merge pull request #2004 from IntersectMBO/update-basereadme-for-main…
jdyczka Sep 12, 2024
df6896c
chore: bump GovTool version to v1.0.18
j-dyczka Sep 12, 2024
4b6c5fb
Merge pull request #2027 from IntersectMBO/chore/bump-govtool-to-v1.0.18
jdyczka Sep 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/images/cardano-govtool-header.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions .github/workflows/build-and-deploy-test-stack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,4 @@ jobs:
USERSNAP_SPACE_API_KEY: ${{ secrets.USERSNAP_SPACE_API_KEY }}
APP_ENV: test
PDF_API_URL: ${{ secrets.PDF_API_URL }}
KUBER_API_KEY: ${{secrets.KUBER_API_KEY}}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ node_storage/

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

.venv
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,26 @@ changes.

-

## [sancho-v1.0.18](https://github.com/IntersectMBO/govtool/releases/tag/sancho-v1.0.18) 2024-09-12

### Added

- Add script for Matomo Analytics [Issue 1817](https://github.com/IntersectMBO/govtool/issues/1817)

### Fixed

- Correctly show all kinds of votes in the modal showing vote numbers [Issue 1941](https://github.com/IntersectMBO/govtool/issues/1941)
- Fixed terms and conditions link [Issue 1968](https://github.com/IntersectMBO/govtool/issues/1968)
- Hide Delegate button in DRep list and details if user has already delegated to this DRep [Issue 1982](https://github.com/IntersectMBO/govtool/issues/1982)
- Fix condition for disabling voting on different GA types [Issue 2008](https://github.com/IntersectMBO/govtool/issues/2008)
- Fix incorrect copy (ex. github) to (e.g. github) [Issue 1748](https://github.com/IntersectMBO/govtool/issues/1748)

### Changed

- Bump @intersect.mbo/pdf-ui to v0.3.9
- Changed misleading text for direct voter registration [Issue 1976](https://github.com/IntersectMBO/govtool/issues/1976)
- Change base repo README header image to have correct branding and reflect mainnet launch.

## [sancho-v1.0.17](https://github.com/IntersectMBO/govtool/releases/tag/sancho-v1.0.17) 2024-09-05

### Added
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img width="750" src=".github/images/voltaire-govtool-header.png"/>
<img width="750" src=".github/images/cardano-govtool-header.png"/>
</p>

<p align="center">
Expand All @@ -24,7 +24,7 @@ The Cardano GovTool enables ada holders to experience the governance features de

#### Mainnet

- _Coming soon_
- [gov.tools](https://gov.tools/)

#### SanchoNet

Expand Down
4 changes: 3 additions & 1 deletion gov-action-loader/backend/.env.example
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
KUBER_API_URL=https://sanchonet.kuber.cardanoapi.io
KUBER_API_URL_SANCHO=https://sanchonet.kuber.cardanoapi.io
KUBER_API_URL_PREVIEW=https://preview.kuber.cardanoapi.io
KUBER_API_URL_PREPROD=https://preprod.kuber.cardanoapi.io
KUBER_API_KEY=xxxxxxxxxxxxx
5 changes: 5 additions & 0 deletions gov-action-loader/backend/app/data/gov-script.plutus
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "PlutusScriptV3",
"description": "",
"cborHex": "5908545908510101003232323232323232323232323232323232323232323232323232323232323232323232323232323232259323255333573466e1d20000011180098111bab357426ae88d55cf00104554ccd5cd19b87480100044600422c6aae74004dd51aba1357446ae88d55cf1baa3255333573466e1d200a35573a002226ae84d5d11aab9e00111637546ae84d5d11aba235573c6ea800642b26006003149a2c8a4c301f801c0052000c00e0070018016006901e4070c00e003000c00d20d00fc000c0003003800a4005801c00e003002c00d20c09a0c80e1801c006001801a4101b5881380018000600700148013003801c006005801a410100078001801c006001801a4101001f8001800060070014801b0038018096007001800600690404002600060001801c0052008c00e006025801c006001801a41209d8001800060070014802b003801c006005801a410112f501c3003800c00300348202b7881300030000c00e00290066007003800c00b003482032ad7b806038403060070014803b00380180960003003800a4021801c00e003002c00d20f40380e1801c006001801a41403f800100a0c00e0029009600f0030078040c00e002900a600f003800c00b003301a483403e01a600700180060066034904801e00060001801c0052016c01e00600f801c006001801980c2402900e30000c00e002901060070030128060c00e00290116007003800c00b003483c0ba03860070018006006906432e00040283003800a40498003003800a404d802c00e00f003800c00b003301a480cb0003003800c003003301a4802b00030001801c01e0070018016006603490605c0160006007001800600660349048276000600030000c00e0029014600b003801c00c04b003800c00300348203a2489b00030001801c00e006025801c006001801a4101b11dc2df80018000c0003003800a4055802c00e007003012c00e003000c00d2080b8b872c000c0006007003801809600700180060069040607e4155016000600030000c00e00290166007003012c00e003000c00d2080c001c000c0003003800a405d801c00e003002c00d20c80180e1801c006001801a412007800100a0c00e00290186007003013c0006007001480cb005801801e006003801800e00600500403003800a4069802c00c00f003001c00c007003803c00e003002c00c05300333023480692028c0004014c00c00b003003c00c00f003003c00e00f003800c00b00301480590052008003003800a406d801c00e003002c00d2000c00d2006c00060070018006006900a600060001801c0052038c00e007001801600690006006901260003003800c003003483281300020141801c005203ac00e006027801c006001801a403d800180006007001480f3003801804e00700180060069040404af3c4e302600060001801c005203ec00e006013801c006001801a4101416f0fd20b80018000600700148103003801c006005801a403501c3003800c0030034812b00030000c00e0029021600f003800c00a01ac00e003000c00ccc08d20d00f4800b00030000c0000000000803c00c016008401e006009801c006001801807e0060298000c000401e006007801c0060018018074020c000400e00f003800c00b003010c000802180020070018006006019801805e0003000400600580180760060138000800c00b00330134805200c400e00300080330004006005801a4001801a410112f58000801c00600901260008019806a40118002007001800600690404a75ee01e00060008018046000801801e000300c4832004c025201430094800a0030028052003002c00d2002c000300648010c0092002300748028c0312000300b48018c0292012300948008c0212066801a40018000c0192008300a2233335573e00250002801994004d55ce800cd55cf0008d5d08014c00cd5d10011263009222532900389800a4d2219002912c80344c01526910c80148964cc04cdd68010034564cc03801400626601800e0071801226601800e01518010096400a3000910c008600444002600244004a664600200244246466004460044460040064600444600200646a660080080066a00600224446600644b20051800484ccc02600244666ae68cdc3801000c00200500a91199ab9a33710004003000801488ccd5cd19b89002001800400a44666ae68cdc4801000c00a00122333573466e20008006005000912a999ab9a3371200400222002220052255333573466e2400800444008440040026eb400a42660080026eb000a4264666015001229002914801c8954ccd5cd19b8700400211333573466e1c00c006001002118011229002914801c88cc044cdc100200099b82002003245200522900391199ab9a3371066e08010004cdc1001001c002004403245200522900391199ab9a3371266e08010004cdc1001001c00a00048a400a45200722333573466e20cdc100200099b820020038014000912c99807001000c40062004912c99807001000c400a2002001199919ab9a357466ae880048cc028dd69aba1003375a6ae84008d5d1000934000dd60010a40064666ae68d5d1800c0020052225933006003357420031330050023574400318010600a444aa666ae68cdc3a400000222c22aa666ae68cdc4000a4000226600666e05200000233702900000088994004cdc2001800ccdc20010008cc010008004c01088954ccd5cd19b87480000044400844cc00c004cdc300100091119803112c800c60012219002911919806912c800c4c02401a442b26600a004019130040018c008002590028c804c8888888800d1900991111111002a244b267201722222222008001000c600518000001112a999ab9a3370e004002230001155333573466e240080044600823002229002914801c88ccd5cd19b893370400800266e0800800e00100208c8c0040048c0088cc008008005"
}
14 changes: 8 additions & 6 deletions gov-action-loader/backend/app/funds.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

from fastapi import HTTPException

from app.network import get_api_url
from app.settings import settings
from app.transaction import (default_proposal_deposit_ada, main_wallet,
submit_tx)


async def get_ada_balance(address, client):
utxo_url = settings.kuber_api_url + "/api/v3/utxo"
async def get_ada_balance(address, client, network):

utxo_url = get_api_url(network) + "/api/v3/utxo"
kuber_response = await client.get(
utxo_url,
params={"address": address},
Expand All @@ -25,8 +27,8 @@ async def get_ada_balance(address, client):
)


async def get_protocol_params(client):
pParamsQuery = settings.kuber_api_url + "/api/v3/protocol-params"
async def get_protocol_params(client, network):
pParamsQuery = get_api_url(network) + "/api/v3/protocol-params"
kuber_response = await client.get(
pParamsQuery,
headers={"api-key": settings.kuber_api_key},
Expand All @@ -41,7 +43,7 @@ async def get_protocol_params(client):


async def check_balance_and_fund_wallets(
wallets, supported_proposals_in_single_tx, per_proposal_deposit, client
wallets, supported_proposals_in_single_tx, per_proposal_deposit, client, network
):
wallets_with_balance = await asyncio.gather(
*[get_ada_balance(wallet["address"], client) for wallet in wallets]
Expand Down Expand Up @@ -82,7 +84,7 @@ async def check_balance_and_fund_wallets(
for wallet in low_balance_wallets
],
}
tx = await submit_tx(fund_from_main_tx, client)
tx = await submit_tx(fund_from_main_tx, client, network)
raise HTTPException(
status_code=412,
detail="This action required multiple transaction and wallet setup TX:"
Expand Down
45 changes: 19 additions & 26 deletions gov-action-loader/backend/app/main.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
import asyncio
import json
import math
from typing import Any, Dict
from typing import Any, Dict, Literal

import httpx
from fastapi import Depends, FastAPI, HTTPException
from fastapi import Depends, FastAPI, HTTPException, Header

from app.cors import add_cors
from app.funds import (check_balance_and_fund_wallets, get_ada_balance,
get_protocol_params)
from app.http_utils import get_client
from app.models import MultipleProposal
from app.network import get_api_url
from app.settings import settings
from app.transaction import (get_base_proposal_for_multiple,
get_default_transaction,
get_proposal_data_from_type,
main_wallet, submit_proposal_tx)
main_wallet, submit_proposal_tx,
get_gov_script
)

app = FastAPI()
add_cors(app)
Expand All @@ -25,13 +28,14 @@
async def submit_multiple_proposals(
multi_proposal: MultipleProposal,
client: httpx.AsyncClient = Depends(get_client),
network: str = Header(...)
):
required_proposals = multi_proposal.no_of_proposals
base_proposal = get_base_proposal_for_multiple()

supported_proposals_in_single_tx = 50
maximum_supported_proposals = 10000
pparams = await get_protocol_params(client)
pparams = await get_protocol_params(client, network)

if required_proposals <= supported_proposals_in_single_tx:
tx = await submit_proposal_tx(
Expand All @@ -40,6 +44,7 @@ async def submit_multiple_proposals(
| get_proposal_data_from_type(multi_proposal.proposal_type, pparams),
required_proposals,
client,
network
)
return [{"proposal_count": required_proposals, "tx_hash": tx}]
elif required_proposals <= maximum_supported_proposals:
Expand Down Expand Up @@ -73,6 +78,7 @@ async def submit_multiple_proposals(
supported_proposals_in_single_tx,
per_proposal_deposit,
client,
network
)

proposals_numbers_in_last_tx = (
Expand All @@ -93,6 +99,7 @@ async def submit_multiple_proposals(
if wallet != required_wallets[-1]
else proposals_numbers_in_last_tx,
client,
network
)
for wallet in required_wallets
]
Expand All @@ -111,21 +118,26 @@ async def submit_multiple_proposals(


@app.get("/api/balance")
async def getWalletBalance(client: httpx.AsyncClient = Depends(get_client)):
return await get_ada_balance(main_wallet["address"], client)
async def getWalletBalance(client: httpx.AsyncClient = Depends(get_client),
network: str = Header(...)):
return await get_ada_balance(main_wallet["address"], client, network)


@app.post("/api/load/single")
async def submit_single_proposal(
proposal: Dict[str, Any],
client: httpx.AsyncClient = Depends(get_client),
network: str = Header(...)
):
default_transaction = get_default_transaction()
default_proposal_data = default_transaction["proposals"][0]
combined_proposal = default_proposal_data | proposal
default_transaction["proposals"][0] = combined_proposal

tx_url = settings.kuber_api_url + "/api/v1/tx?submit=true"
if "withdraw" in combined_proposal or "parameterupdate" in combined_proposal:
if combined_proposal["script"]["cborHex"] == "":
combined_proposal["script"] = get_gov_script()
tx_url = get_api_url(network) + "/api/v1/tx?submit=true"
kuber_response = await client.post(
tx_url,
json=default_transaction,
Expand All @@ -141,22 +153,3 @@ async def submit_single_proposal(
raise HTTPException(
status_code=kuber_response.status_code, detail=kuber_response.text
)


@app.get("/api/blockfrost/transaction/{tx_hash}")
async def get_transaction_from_blockfrost(
tx_hash: str,
client: httpx.AsyncClient = Depends(get_client),
):
tx_url = settings.blockfrost_api_url + "/txs/" + tx_hash
tx_response = await client.get(
tx_url,
headers={"project_id": settings.blockfrost_project_id},
)
if tx_response.status_code == 200:
return tx_response.json()
else:
print(tx_response.text)
raise HTTPException(
status_code=tx_response.status_code, detail=tx_response.json()
)
1 change: 1 addition & 0 deletions gov-action-loader/backend/app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
class MultipleProposal(BaseModel):
proposal_type: str
no_of_proposals: int

15 changes: 15 additions & 0 deletions gov-action-loader/backend/app/network.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from fastapi import HTTPException
from app.settings import settings

NETWORKS = {"preview", "preprod", "sanchonet"}

def get_api_url (network):
network_l_case = network.lower()
if network_l_case == "sancho" or network_l_case == "sanchonet":
return settings.kuber_api_url_sancho
elif network_l_case == "preview":
return settings.kuber_api_url_preview
elif network_l_case == "preprod":
return settings.kuber_api_url_preprod
else:
raise HTTPException(status_code=400, detail=f"Invalid network: {network}. Expected: {NETWORKS}")
4 changes: 3 additions & 1 deletion gov-action-loader/backend/app/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@


class Settings(BaseSettings):
kuber_api_url: str
kuber_api_url_sancho: str
kuber_api_url_preview: str
kuber_api_url_preprod: str
kuber_api_key: str = ''

settings = Settings()
Loading
Loading