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

RFC: Realms for coordinating audits on-chain #3062

Open
kristovatlas opened this issue Nov 4, 2024 · 1 comment
Open

RFC: Realms for coordinating audits on-chain #3062

kristovatlas opened this issue Nov 4, 2024 · 1 comment
Assignees
Labels
help wanted Want to contribute? We recommend these issues. security Security-sensitive issue

Comments

@kristovatlas
Copy link
Contributor

kristovatlas commented Nov 4, 2024

Description

To facilitate the security auditing of Gno realms, we will publish security provider realms to coordinate between realm developers and auditors.

There will be at least 2 realms in this process:

  1. r/sec/providers: Allows individuals and companies to register as auditors
  • register(label) -- one registration per calling address. label must be globally unique.
  • unregister()
  1. r/sec/audits: Allows devs and auditors to propose quotes for contract audits, and publish reports. It will also allow individuals to raise funds to pay for the audits. Devs will post a request, auditors will post competing proposals.
  • create(request) returns requestId -- creates an audit request specifying what is needed. SHOULD include contact information about how auditors can send intermediary reports prior to publicly disclosing final results to chain, like an email address, since this is the convention for how such information will be exchanged. request is Github-Flavored Markdown. Caller will become owner of this request indexed by address.
  • updateRequest(requestId, request) -- Update existing audit request (callable by owner of request only)
  • deleteRequest(requestId)
  • createPool(requestId, tokenType) -- creates a token pool of either GNOT or GRC-20 to receive funds to fund audit. This function may only be called once for each request and lacks an update mechanism currently.
  • addProposal(requestId, proposal, [paymentAddress]) returns propId-- upload a proposal to fulfill an existing audit request.proposalis Github-flavored Markdown indicating intended work, budget requirements, etc. Caller must have registered withr/sec/providers`.
  • updateProposal(propId, proposal) -- callable by proposal owner
  • updatePaymentAddress(propId, paymentAddress) -- callable by proposal owner
  • accept(requestId, propId) -- can only be set to one at a time, but can be called multiple times to replace previous invocations. Callable by request owner.
  • pay(requestId, amt) -- Send payment to auditor who owns proposal. The owner of the request must have already called accept and the proposal must have set paymentAdress. Execution does not necessarily indicate that the audit is fully paid for. Callable by request owner.
  • report(propId, doc) -- Uploads a public document from an auditor, where doc is Github-flavored Markdown. The caller must be the owner of the proposal, ensuring that only the auditor can update this report. In clients such as gnoweb, reports SHOULD be displayed after a warning banner reminding users that the information is not approved by Gno.land contributors and to be cautious of any links or social engineering instructions related to signing, sending funds, etc.
@kristovatlas kristovatlas added the security Security-sensitive issue label Nov 4, 2024
@moul moul added the help wanted Want to contribute? We recommend these issues. label Nov 4, 2024
@moul
Copy link
Member

moul commented Nov 4, 2024

We should seek feedback from auditors who might be interested in helping us design this on-chain pentest platform.

We can also delegate most of the creation of the platform's realms through a bounty.

Later, we will likely integrate with Gnoweb to create a "badge."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Want to contribute? We recommend these issues. security Security-sensitive issue
Projects
Status: 📥 Inbox
Status: Triage
Development

No branches or pull requests

2 participants