├── .github
├── pull_request_template.md
└── workflows
│ ├── am-big-gsheet.yml
│ ├── am-big-parser.yml
│ ├── am-scrape-appfile.yml
│ ├── grant-committee-approved.yml
│ ├── grant-fully-approved.yml
│ ├── grant-translated.yaml
│ ├── label-dispatch.yml
│ ├── mail-on-starred-repo.yml
│ ├── pr-received-send-thank-you.yml
│ ├── pr-received.yml
│ ├── readme.md
│ ├── reusable-gsheet.yml
│ ├── reusable-parser.yml
│ ├── ru-big-gsheet.yml
│ ├── ru-big-parser.yml
│ ├── ru-check-filename.yml
│ ├── ru-committee-approved-email.yml
│ ├── ru-fully-approved-email.yml
│ ├── ru-pr-received-email.yml
│ ├── scrape-appfile.yml
│ ├── test-append-gsheet.yml
│ ├── test-big-email.yml
│ ├── test-example.yml
│ ├── test-inputs.yml
│ ├── test-jobs-exit.yml
│ ├── test-reusable-gsheet.yml
│ ├── test-reusable-parser.yml
│ ├── test-ru-check-filename.yml
│ ├── test-ru-full-approve-email.yml
│ └── test-ru-gc-approve-email.yml
├── .gitignore
├── README.md
├── applications
├── CETF.md
├── Defibox_vault.md
├── EOS-Cryptography-Proposal-2-b.md
├── EVMNS.md
├── EVMNS_Audit_Assistance.md
├── TheLostDiamond_BjornOmsland.md
├── WelcomeWagonEngagement.md
├── alphaday.md
├── antelopeio_firewall.md
├── application-template.md
├── challengedac.md
├── chronicle.md
├── cost-comparing-research-rust-cdt.md
├── dev_book.md
├── eos-cryptography-proposal.md
├── eosreddit.md
├── eosreddit2.md
├── eosreddit3.md
├── facings-nft-collection-manager-stage-2.md
├── facings-nft-collection-manager.md
├── genereos-testing-libraries.md
├── greymass-web-client-sdk.md
├── knockout_wars_game.md
├── nice1-tools-ecosystem.md
├── oci-transaction-lifecycle.md
├── ssi-toolkit-verifiable-credentials.md
├── tokenomics_enhancement_neutroswap.md
└── trustswap.md
├── docs
├── LICENSE
├── T&Cs.md
├── acceptance-recommendations.md
├── accepted_grant_applications.md
├── announcement-guidelines.md
├── co-promotion.md
├── faq.md
├── grant-badge.md
├── grant_guidelines_per_category.md
├── maintenance-grants.md
├── milestone-deliverables-guidelines.md
├── minimum-requirements.md
├── rfp_info.md
└── rfps
│ └── suggestion-template.md
└── img
├── ENF-grant-badge-black.png
├── ENF-grant-badge-white.png
├── ENF-grant-badge.svg
└── enf-header.png
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | ### Project Abstract
2 |
3 | > Please provide a brief description of your project here summarising key points (1-2 paragraphs).
4 | >
5 | > If your application is a follow-up to a previous grant, please mention which one in the first line of the abstract and include a link to previous pull requests if applicable.
6 | > Please delete these lines that start with a `>`
7 |
8 | ### For which grant [level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels) are you applying?
9 |
10 | - [ ] **Level 1**: Up to $10,000, 2 approvals
11 | - [ ] **Level 2**: Up to $50,000, 3 approvals
12 | - [ ] **Level 3**: Up to $200,000, 4 approvals
13 |
14 | ### Application Checklist
15 |
16 | - [x] The [application template]([xxxx](https://github.com/eosnetworkfoundation/grant-framework/blob/main/applications/application-template.md)) has been copied, renamed (`my_project_name.md`) and updated.
17 | - [ ] The application file (`my_project_name.md`) has no spaces in its name, ends with the `.md` extension has been placed in the `applications` directory.
18 | - [ ] I have read and understood the:
19 | - [ ] [FAQs](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/faq.md),
20 | - [ ] [application guidelines](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/grant_guidelines_per_category.md) and
21 | - [ ] [announcement guidelines](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/announcement-guidelines.md).
22 | - [ ] An EOS address for the payment of the milestones is provided inside the application.
23 | - [ ] I have read and acknowledge the [terms and conditions](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/T&Cs.md).
24 | - [ ] The software delivered for this grant will be released under an open-source license specified in the application.
25 | - [ ] This project has NOT been part of a token sale or NFT sale.
26 | - [ ] The initial PR contains only one commit (squash and force-push if needed).
27 | - [ ] The grant will only be announced once the first milestone [has been accepted](https://github.com/eosnetworkfoundation/grant-milestones#process).
28 |
29 | ### How Did You Hear About our grants program?
30 |
31 | - [ ] Social Media
32 | - [ ] EOSNetwork.com
33 | - [ ] Personal Recommendation
34 | - [ ] ENF Fireside Chat
35 | - [ ] Investor/VC
36 | - [ ] Online Search
37 | - [ ] Hackathon
38 | - [ ] Other: _______
39 |
--------------------------------------------------------------------------------
/.github/workflows/am-big-gsheet.yml:
--------------------------------------------------------------------------------
1 | name: AM Reusable Gsheet Update
2 | on:
3 | workflow_call:
4 | inputs:
5 | project_name:
6 | required: true
7 | type: string
8 | contact_name:
9 | required: true
10 | type: string
11 | team_name:
12 | required: true
13 | type: string
14 | app_email:
15 | required: true
16 | type: string
17 | total_cost:
18 | required: true
19 | type: string
20 | legal_entity:
21 | required: true
22 | type: string
23 | legal_addr:
24 | required: true
25 | type: string
26 | level:
27 | required: true
28 | type: string
29 | eos_addr:
30 | required: true
31 | type: string
32 | github_actor:
33 | required: true
34 | type: string
35 | pr_no:
36 | required: true
37 | type: string
38 | website:
39 | required: true
40 | type: string
41 | open_source:
42 | required: true
43 | type: string
44 | token_sale:
45 | required: true
46 | type: string
47 | basename:
48 | required: true
49 | type: string
50 |
51 | secrets:
52 | gsheet_private_key:
53 | required: true
54 |
55 | jobs:
56 | appendrow:
57 | runs-on: ubuntu-latest
58 | steps:
59 | - id: 'update_worksheet'
60 | uses: jroehl/gsheet.action@v1.2.0
61 | with:
62 | spreadsheetId: 128L-4NQpOT0f2MLRcd5NiNAMsxS_Y1XGqFRXnyxtfLk
63 | commands: |
64 | [
65 | { "command": "appendData", "args": { "data": [["${{ inputs.pr_no }}", "${{ inputs.project_name }}",
66 | "${{ inputs.team_name }}",
67 | "${{ inputs.open_source }}", "${{ inputs.token_sale }}",
68 | "${{ inputs.level }}", "${{ inputs.total_cost }}",
69 | "${{ inputs.eos_addr }}",
70 | "${{ inputs.github_actor }}",
71 | "${{ inputs.website }}", "${{ inputs.basename }}",
72 | "${{ inputs.contact_name }}", "${{ inputs.app_email }}",
73 | "${{ inputs.legal_entity }}", "${{ inputs.legal_addr }}"
74 | ]], "worksheetTitle": "GrantInfo", "minCol": 1 }}
75 | ]
76 | env:
77 | GSHEET_CLIENT_EMAIL: enf-grant-service-account@sonorous-haven-350712.iam.gserviceaccount.com
78 | GSHEET_PRIVATE_KEY: ${{ secrets.gsheet_private_key }}
79 |
--------------------------------------------------------------------------------
/.github/workflows/am-big-parser.yml:
--------------------------------------------------------------------------------
1 | # Parse the ENF Grant Framework Application and return the important parts
2 | # Alysha Mims modified copy of - Ted Cahall 25May2022 -
3 | # 30June2022 modified to scrape more fields.
4 | # 12Nov2022 - Added more fields for the Big Scrape and made a new file from old one
5 | # File may be called from a PR or with a filename passed in (not associated with a PR)
6 | #
7 | name: AM Reusable "Big" Application Parser
8 | on:
9 | workflow_call:
10 | inputs:
11 | filename:
12 | required: true
13 | type: string
14 | outputs:
15 | app_email:
16 | value: ${{ jobs.parse.outputs.app_email }}
17 | contact_name:
18 | value: ${{ jobs.parse.outputs.contact_name }}
19 | project_name:
20 | value: ${{ jobs.parse.outputs.project_name }}
21 | team_name:
22 | value: ${{ jobs.parse.outputs.team_name }}
23 | total_cost:
24 | value: ${{ jobs.parse.outputs.total_cost }}
25 | legal_entity:
26 | value: ${{ jobs.parse.outputs.legal_entity }}
27 | legal_addr:
28 | value: ${{ jobs.parse.outputs.legal_addr }}
29 | level:
30 | value: ${{ jobs.parse.outputs.level }}
31 | eos_addr:
32 | value: ${{ jobs.parse.outputs.eos_addr }}
33 | repo_owner:
34 | value: ${{ jobs.parse.outputs.repo_owner }}
35 | github_actor:
36 | value: ${{ jobs.parse.outputs.github_actor }}
37 | pr_no:
38 | value: ${{ jobs.parse.outputs.pr_no }}
39 | website:
40 | value: ${{ jobs.parse.outputs.website }}
41 | open_source:
42 | value: ${{ jobs.parse.outputs.open_source }}
43 | token_sale:
44 | value: ${{ jobs.parse.outputs.token_sale }}
45 | basename:
46 | value: ${{ jobs.parse.outputs.basename }}
47 |
48 | jobs:
49 | parse:
50 | #if: inputs.filename
51 | runs-on: ubuntu-latest
52 | outputs:
53 | app_email: ${{ steps.grep_appl.outputs.email_addr }}
54 | contact_name: ${{ steps.grep_appl.outputs.contact_name }}
55 | project_name: ${{ steps.grep_appl.outputs.project_name }}
56 | team_name: ${{ steps.grep_appl.outputs.team_name }}
57 | total_cost: ${{ steps.grep_appl.outputs.total_cost }}
58 | legal_entity: ${{ steps.grep_appl.outputs.legal_entity }}
59 | legal_addr: ${{ steps.grep_appl.outputs.legal_addr }}
60 | level: ${{ steps.grep_appl.outputs.level }}
61 | eos_addr: ${{ steps.grep_appl.outputs.eos_addr }}
62 | basename: ${{ steps.grep_appl.outputs.basename }}
63 | github_actor: ${{ steps.grep_appl.outputs.github_actor }}
64 | pr_no: ${{ steps.grep_appl.outputs.pr_no }}
65 | website: ${{ steps.grep_appl.outputs.website }}
66 | open_source: ${{ steps.grep_appl.outputs.open_source }}
67 | token_sale: ${{ steps.grep_appl.outputs.token_sale }}
68 |
69 | steps:
70 | - name: Checkout
71 | id: checkout
72 | uses: actions/checkout@v3
73 | with:
74 | ref: ${{ github.event.pull_request.head.sha }}
75 |
76 | # Parse the application template for the required fields
77 | - name: assign the env variables from the parsing
78 | id: grep_appl
79 | run: |
80 | export APP_EMAIL=`/bin/grep -F "**Contact Email:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4`
81 | echo "email_addr=$APP_EMAIL" >> $GITHUB_OUTPUT
82 | export CNAME=`/bin/grep -F "**Contact Name:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-8`
83 | echo "contact_name=$CNAME" >> $GITHUB_OUTPUT
84 | export PNAME=`/bin/grep -F "**Project Name:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-10`
85 | echo "project_name=$PNAME" >> $GITHUB_OUTPUT
86 | export TNAME=`/bin/grep -F "**Team Name:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-10`
87 | echo "team_name=$TNAME" >> $GITHUB_OUTPUT
88 | export TCOST=`/bin/grep -F "**Total Costs:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-8`
89 | echo "total_cost=$TCOST" >> $GITHUB_OUTPUT
90 | export LENTITY=`/bin/grep -F "**Registered Legal Entity:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f5-12`
91 | echo "legal_entity=$LENTITY" >> $GITHUB_OUTPUT
92 | export LADDR=`/bin/grep -F "**Registered Address:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-30`
93 | echo "legal_addr=$LADDR" >> $GITHUB_OUTPUT
94 | export LEVEL=`/bin/grep -F "**[Level](https" ${{ inputs.filename }} | tr -s " " | cut -d" " -f3-8`
95 | echo "level=$LEVEL" >> $GITHUB_OUTPUT
96 | export EOSADDR=`/bin/grep -F "**EOS Payment Address:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f5-8`
97 | echo "eos_addr=$EOSADDR" >> $GITHUB_OUTPUT
98 | export WEBSITE=`/bin/grep -F "**Website:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f3-8`
99 | echo "website=$WEBSITE" >> $GITHUB_OUTPUT
100 | export OPENSOURCE=`/bin/grep -F "**Project is Open-Source:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f5`
101 | echo "open_Source=$OPENSOURCE" >> $GITHUB_OUTPUT
102 | export TOKENSALE=`/bin/grep -F "**Project was part of Token sale:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f8`
103 | echo "token_sale=$TOKENSALE" >> $GITHUB_OUTPUT
104 | # following three only work when parser launched by a pull request
105 | echo "repo_owner=${{ github.event.pull_request.head.repo.owner.login }}" >> $GITHUB_OUTPUT
106 | echo "pr_no=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
107 | echo "github_actor=${{ github.actor }}" >> $GITHUB_OUTPUT
108 | export BASENAME=`/bin/echo ${{ inputs.filename }} | cut -d"/" -f2`
109 | echo "basename=$BASENAME" >> $GITHUB_OUTPUT
110 | echo $BASENAME
111 |
--------------------------------------------------------------------------------
/.github/workflows/am-scrape-appfile.yml:
--------------------------------------------------------------------------------
1 | # Scrape application file to the "DataBigScrape" spreadsheet
2 | # Alysha Mims copy of Ted Cahall 12Nov2022
3 | #
4 |
5 | name: AM Scrape Application to Gsheet
6 |
7 | on:
8 | workflow_dispatch:
9 | inputs:
10 | AppFile:
11 | type: string
12 | description: Name of Application File
13 |
14 | jobs:
15 | build:
16 | runs-on: ubuntu-latest
17 |
18 | steps:
19 | - uses: actions/checkout@v3
20 |
21 | - name: greet
22 | id: test_echo
23 | run: |
24 | echo "Application file is: ${{ github.event.inputs.AppFile }}"
25 | export APP_EMAIL=`/bin/grep "**Contact Email:**" "applications/${{ github.event.inputs.AppFile }}" | cut -d" " -f4`
26 | echo "email_addr=$APP_EMAIL" >> $GITHUB_OUTPUT
27 | echo email addr is $APP_EMAIL
28 | - name: test_output
29 | run: echo "the new output test shows the email_addr is ${{ steps.test_echo.outputs.email_addr }}"
30 |
31 | call-parser:
32 | uses: ./.github/workflows/am-big-parser.yml
33 | with:
34 | filename: "applications/${{ github.event.inputs.AppFile }}"
35 | needs: build
36 |
37 | echo-the-returned-fields:
38 | runs-on: ubuntu-latest
39 | needs: call-parser
40 | steps:
41 | - id: echo-output
42 | run: |
43 | echo "basename ${{ needs.call-parser.outputs.basename }} "
44 | echo "project name ${{ needs.call-parser.outputs.project_name }} "
45 | echo "contact name ${{ needs.call-parser.outputs.contact_name }}"
46 | echo "team name ${{ needs.call-parser.outputs.team_name }}"
47 | echo "app_email ${{ needs.call-parser.outputs.app_email }}"
48 | echo "total cost ${{ needs.call-parser.outputs.total_cost }}"
49 | echo "legal entity ${{ needs.call-parser.outputs.legal_entity }}"
50 | echo "legal addr ${{ needs.call-parser.outputs.legal_addr }}"
51 | echo "level ${{ needs.call-parser.outputs.level }}"
52 | echo "eos_addr ${{ needs.call-parser.outputs.eos_addr }}"
53 | echo "github_actor ${{ needs.call-parser.outputs.github_actor }}"
54 | echo "pr_no ${{ needs.call-parser.outputs.pr_no }}"
55 | echo "website ${{ needs.call-parser.outputs.website }}"
56 | echo "open_source ${{ needs.call-parser.outputs.open_source }}"
57 | echo "token_sale ${{ needs.call-parser.outputs.token_sale }}"
58 | write-spreadsheet:
59 | uses: ./.github/workflows/am-big-gsheet.yml
60 | needs: call-parser
61 | with:
62 | project_name: ${{ needs.call-parser.outputs.project_name }}
63 | contact_name: ${{ needs.call-parser.outputs.contact_name }}
64 | team_name: ${{ needs.call-parser.outputs.team_name }}
65 | app_email: ${{ needs.call-parser.outputs.app_email }}
66 | total_cost: ${{ needs.call-parser.outputs.total_cost }}
67 | legal_entity: ${{ needs.call-parser.outputs.legal_entity }}
68 | legal_addr: ${{ needs.call-parser.outputs.legal_addr }}
69 | level: ${{ needs.call-parser.outputs.level }}
70 | eos_addr: ${{ needs.call-parser.outputs.eos_addr }}
71 | github_actor: ${{ needs.call-parser.outputs.github_actor }}
72 | pr_no: ${{ needs.call-parser.outputs.pr_no }}
73 | website: ${{ needs.call-parser.outputs.website }}
74 | open_source: ${{ needs.call-parser.outputs.open_source }}
75 | token_sale: ${{ needs.call-parser.outputs.token_sale }}
76 | basename: ${{ needs.call-parser.outputs.basename }}
77 | secrets:
78 | gsheet_private_key: ${{ secrets.GHSEET_API_KEY }}
79 |
--------------------------------------------------------------------------------
/.github/workflows/grant-committee-approved.yml:
--------------------------------------------------------------------------------
1 | # ENF Grant Framework - The Committee approved the Grant and it is on to the Evaluators
2 | # 1) Parse the grant
3 | # 2) Email the grantee the notice
4 | #
5 | # grant-committee-approved.yml
6 | #
7 | # Ted Cahall 31May2022
8 | # Updated to remove node12 warnings 22May2023
9 |
10 | name: Grant Committee Approved
11 |
12 | on:
13 | pull_request_target:
14 | types: labeled
15 |
16 | jobs:
17 | check_label:
18 | if: github.event.label.name == 'Grant Committee Approved'
19 | runs-on: ubuntu-latest
20 | steps:
21 | - name: Good Label
22 | run: echo "Good label ${{ github.event.label.name }}"
23 |
24 | get_filename:
25 | needs: check_label
26 | runs-on: ubuntu-latest
27 | outputs:
28 | filename: ${{ steps.files.outputs.added }}
29 | steps:
30 | - name: Get application file name
31 | id: 'files'
32 | uses: Ana06/get-changed-files@v2.2.0
33 | with:
34 | filter: 'applications/*.md'
35 |
36 | call_parser:
37 | needs: get_filename
38 | if: needs.get_filename.outputs.filename
39 | uses: ./.github/workflows/reusable-parser.yml
40 | with:
41 | filename: ${{ needs.get_filename.outputs.filename }}
42 |
43 | # This is for debugging and can be removed later to make file shorter
44 | echo-the-returned-fields:
45 | runs-on: ubuntu-latest
46 | needs: call_parser
47 | steps:
48 | - id: echo1
49 | run: echo "project name ${{ needs.call_parser.outputs.project_name }} "
50 | - id: echo2
51 | run: echo "contact name ${{ needs.call_parser.outputs.contact_name }}"
52 | - id: echo3
53 | run: echo "team name ${{ needs.call_parser.outputs.team_name }}"
54 | - id: echo4
55 | run: echo "app_email ${{ needs.call_parser.outputs.app_email }}"
56 | - id: echo5
57 | run: echo "total cost ${{ needs.call_parser.outputs.total_cost }}"
58 |
59 | send_email:
60 | needs: [get_filename, call_parser]
61 | uses: ./.github/workflows/ru-committee-approved-email.yml
62 | with:
63 | app_email: ${{ needs.call_parser.outputs.app_email }}
64 | contact_name: ${{ needs.call_parser.outputs.contact_name }}
65 | project_name: ${{ needs.call_parser.outputs.project_name }}
66 | team_name: ${{ needs.call_parser.outputs.team_name }}
67 | total_cost: ${{ needs.call_parser.outputs.total_cost }}
68 | repo_account: ${{ github.event.pull_request.head.repo.owner.login }}
69 | secrets:
70 | gmail_password: ${{ secrets.ENFMAILBOT_PASSWORD }}
71 |
--------------------------------------------------------------------------------
/.github/workflows/grant-fully-approved.yml:
--------------------------------------------------------------------------------
1 | # ENF Grant Framework - The Evaluators approved the Grant
2 | # 1) Parse the grant
3 | # 2) Email the grantee the notice
4 | #
5 | # grant-fully-approved.yml
6 | #
7 | # Ted Cahall 28May2022
8 | # Updated to remove node12 warnings 22May2023 - Ana06/get-changed-files@v2.2.0
9 |
10 | name: Grant Fully Approved
11 |
12 | on:
13 | pull_request_target:
14 | types: labeled
15 |
16 | jobs:
17 | check_label:
18 | if: github.event.label.name == 'Grant Fully Approved'
19 | runs-on: ubuntu-latest
20 | steps:
21 | - name: Good Label
22 | run: echo "Good label ${{ github.event.label.name }}"
23 |
24 | get_filename:
25 | needs: check_label
26 | runs-on: ubuntu-latest
27 | outputs:
28 | filename: ${{ steps.files.outputs.added }}
29 | steps:
30 | - name: Get application file name
31 | id: 'files'
32 | uses: Ana06/get-changed-files@v2.2.0
33 | with:
34 | filter: 'applications/*.md'
35 |
36 | call_parser:
37 | needs: get_filename
38 | if: needs.get_filename.outputs.filename
39 | uses: ./.github/workflows/reusable-parser.yml
40 | with:
41 | filename: ${{ needs.get_filename.outputs.filename }}
42 |
43 | # This is for debugging and can be removed later to make file shorter
44 | echo-the-returned-fields:
45 | runs-on: ubuntu-latest
46 | needs: call_parser
47 | steps:
48 | - id: echo1
49 | run: echo "project name ${{ needs.call_parser.outputs.project_name }} "
50 | - id: echo2
51 | run: echo "contact name ${{ needs.call_parser.outputs.contact_name }}"
52 | - id: echo3
53 | run: echo "team name ${{ needs.call_parser.outputs.team_name }}"
54 | - id: echo4
55 | run: echo "app_email ${{ needs.call_parser.outputs.app_email }}"
56 | - id: echo5
57 | run: echo "total cost ${{ needs.call_parser.outputs.total_cost }}"
58 |
59 | send_email:
60 | needs: [get_filename, call_parser]
61 | uses: ./.github/workflows/ru-fully-approved-email.yml
62 | with:
63 | app_email: ${{ needs.call_parser.outputs.app_email }}
64 | contact_name: ${{ needs.call_parser.outputs.contact_name }}
65 | project_name: ${{ needs.call_parser.outputs.project_name }}
66 | team_name: ${{ needs.call_parser.outputs.team_name }}
67 | total_cost: ${{ needs.call_parser.outputs.total_cost }}
68 | repo_account: ${{ github.event.pull_request.head.repo.owner.login }}
69 | secrets:
70 | gmail_password: ${{ secrets.ENFMAILBOT_PASSWORD }}
71 |
--------------------------------------------------------------------------------
/.github/workflows/grant-translated.yaml:
--------------------------------------------------------------------------------
1 | # When the PR is labeled 'Grant Translated' do the following:
2 | # Add it to the Grant Committee Voting Google Sheet
3 | #
4 | # Ted Cahall May 21, 2022
5 |
6 | name: Grant Translated
7 | on:
8 | pull_request_target:
9 | types: labeled
10 |
11 | jobs:
12 | get_filename:
13 | runs-on: ubuntu-latest
14 | outputs:
15 | filename: ${{ steps.files.outputs.added }}
16 | steps:
17 | - name: Get grant application file name
18 | id: 'files'
19 | uses: Ana06/get-changed-files@v2.2.0
20 | with:
21 | filter: 'applications/*.md'
22 |
23 | parse_app:
24 | needs: get_filename
25 | if: needs.get_filename.outputs.filename
26 | runs-on: ubuntu-latest
27 | outputs:
28 | app_email: ${{ steps.grep_email.outputs.email_addr }}
29 | contact_name: ${{ steps.grep_email.outputs.contact_name }}
30 | project_name: ${{ steps.grep_email.outputs.project_name }}
31 | team_name: ${{ steps.grep_email.outputs.team_name }}
32 | total_cost: ${{ steps.grep_email.outputs.total_cost }}
33 | steps:
34 | - name: Checkout
35 | id: checkout
36 | uses: actions/checkout@v3
37 | with:
38 | ref: ${{ github.event.pull_request.head.sha }}
39 |
40 | - name: Echo_file
41 | run: echo This is the file ${{ needs.get_filename.outputs.filename }}
42 |
43 | # Parse the application template for the email account
44 | - name: assign the env from the email name
45 | id: grep_email
46 | run: |
47 | export APP_EMAIL=`/bin/grep -F "**Contact Email:**" ${{ needs.get_filename.outputs.filename }} | tr -s " " | cut -d" " -f4`
48 | echo "email_addr=$APP_EMAIL" >> $GITHUB_OUTPUT
49 | # old way-> echo "::set-output name=email_addr::$APP_EMAIL"
50 | export CNAME=`/bin/grep -F "**Contact Name:**" ${{ needs.get_filename.outputs.filename }} | tr -s " " | cut -d" " -f4-8`
51 | echo "contact_name=$CNAME" >> $GITHUB_OUTPUT
52 | export PNAME=`/bin/grep -F "**Project Name:**" ${{ needs.get_filename.outputs.filename }} | tr -s " " | cut -d" " -f4-8`
53 | echo "project_name=$PNAME" >> $GITHUB_OUTPUT
54 | export TNAME=`/bin/grep -F "**Team Name:**" ${{ needs.get_filename.outputs.filename }} | tr -s " " | cut -d" " -f4-8`
55 | echo "team_name=$TNAME" >> $GITHUB_OUTPUT
56 | export TCOST=`/bin/grep -F "**Total Costs:**" ${{ needs.get_filename.outputs.filename }} | tr -s " " | cut -d" " -f4-8`
57 | echo "total_cost=$TCOST" >> $GITHUB_OUTPUT
58 | echo ${{ github.actor }} ${{ github.event_name }} ${{ github.event.pull_request.head.repo.owner.login }}
59 | #echo $APP_MAIL $CNAME $PNAME $TNAME $TCOST
60 |
61 | checklabel:
62 | needs: [get_filename, parse_app]
63 | if: github.event.label.name == 'Grant Translated'
64 | runs-on: ubuntu-latest
65 | steps:
66 | - id: 'update_worksheet'
67 | uses: jroehl/gsheet.action@v2.0.1
68 | with:
69 | #spreadsheetId: 1FsNUKcfAJAorZGHpEzbRKLVYWbpZ_93Ts-R-JTpRK_A #This is the DummyTest sheet
70 | spreadsheetId: 1RdSK5Y_URnTSzg__fRHV51jwO90x4AUMy0ym0ytWwKA
71 | commands: |
72 | [
73 | { "command": "appendData", "args": { "data": [["${{ github.event.pull_request.head.repo.owner.login }}", "${{needs.parse_app.outputs.app_email}}", "${{needs.parse_app.outputs.project_name}}", "${{needs.parse_app.outputs.total_cost}}"]], "worksheetTitle": "Grants", "minCol": 2 }}
74 | ]
75 | env:
76 | GSHEET_CLIENT_EMAIL: enf-grant-service-account@sonorous-haven-350712.iam.gserviceaccount.com
77 | GSHEET_PRIVATE_KEY: ${{ secrets.GHSEET_API_KEY }}
78 | - name: dump results
79 | env:
80 | RESULTS: ${{ steps.update_worksheet.outputs.results }}
81 | run: echo "$RESULTS"
82 |
83 | alwaysrun:
84 | needs: checklabel
85 | if: ${{ always() }}
86 | runs-on: ubuntu-latest
87 | steps:
88 | - name: alwaysrunthis
89 | id: in-case-no-labels-matched
90 | run: echo "Always step was run to avoid error notice"
91 |
92 |
--------------------------------------------------------------------------------
/.github/workflows/label-dispatch.yml:
--------------------------------------------------------------------------------
1 | # Label Dispatcher - check the label and dispatch to the next yaml file
2 | # This drives the workflow through labeling. Workflow includes: sending emails, adding to Gsheet, adding/moving project cards
3 | # Ted Cahall 2022-05-23
4 | # Ted Cahall 14Nov2022 - retiered concept for now and move name to start with ZZ to move to end of console list.
5 |
6 | name: ZZ Label Dispatcher
7 | on:
8 | pull_request_target:
9 | types: labeled
10 |
11 | jobs:
12 | get_filename:
13 | runs-on: ubuntu-latest
14 | outputs:
15 | filename: ${{ steps.files.outputs.added }}
16 | steps:
17 | - name: Get grant application file name
18 | id: 'files'
19 | uses: Ana06/get-changed-files@v2.0.0
20 | with:
21 | filter: 'applications/*.md'
22 |
23 | checklabel:
24 | needs: get_filename
25 | if: needs.get_filename.outputs.filename
26 | runs-on: ubuntu-latest
27 | steps:
28 | - name: Grant Received
29 | id: grant-received
30 | if: github.event.label.name == 'Grant Received'
31 | run: echo "Grant Received label was added to application file ${{ needs.get_filename.outputs.filename }}"
32 |
33 | - name: Grant Translated
34 | id: grant-translated
35 | if: github.event.label.name == 'Grant Translated'
36 | run: echo "Grant Translated label was added to application file ${{ needs.get_filename.outputs.filename }}"
37 |
38 | - name: Grant Committee Approved
39 | id: grant-committee-approved
40 | if: github.event.label.name == 'Grant Committee Approved'
41 | run: echo "Grant Committee Approved label was added to application file ${{ needs.get_filename.outputs.filename }}"
42 |
43 | - name: Grant Fully Approved
44 | id: grant-fully-approved
45 | if: github.event.label.name == 'Grant Fully Approved'
46 | run: echo "Grant Fully Approved label was added to application file ${{ needs.get_filename.outputs.filename }}"
47 |
48 | - name: Grant Rejected
49 | id: grant-rejected
50 | if: github.event.label.name == 'Grant Rejected'
51 | run: echo "Grant Rejected label was added to application file ${{ needs.get_filename.outputs.filename }}"
52 |
53 |
54 | alwaysrun:
55 | needs: checklabel
56 | if: ${{ always() }}
57 | runs-on: ubuntu-latest
58 | steps:
59 | - name: alwaysrunthis
60 | id: in-case-no-labels-matched
61 | run: echo "Not a label we are interested in ${{ github.event.label.name }}"
62 |
63 |
64 |
--------------------------------------------------------------------------------
/.github/workflows/mail-on-starred-repo.yml:
--------------------------------------------------------------------------------
1 | name: Mail on Star
2 |
3 | on:
4 | watch:
5 | types: [ started ]
6 |
7 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
8 | # https://github.com/dawidd6/action-send-mail/releases/tag/v3.6.1
9 | jobs:
10 | # This workflow contains a single job called "email"
11 | email:
12 | # The type of runner that the job will run on
13 | runs-on: ubuntu-latest
14 |
15 | # Steps represent a sequence of tasks that will be executed as part of the job
16 | steps:
17 | - name: ✨ Send email, you star
18 | uses: dawidd6/action-send-mail@v3.6.1
19 | with:
20 | server_address: smtp.gmail.com
21 | server_port: 465
22 | secure: true
23 | username: enfmailbot@eosn.foundation
24 | password: ${{ secrets.ENFMAILBOT_PASSWORD }}
25 | subject: You got a star ✨
26 | body: ${{ github.actor }} just starred your ${{ github.repository }} repo!!!
27 | # to: ${{ secrets.GMAIL_ADDRESS }}
28 | # from: ${{ secrets.GMAIL_ADDRESS }}
29 | to: ted@eosn.foundation
30 | from: grants@eosn.foundation
31 | reply_to: grants@eosn.foundation
32 |
33 |
--------------------------------------------------------------------------------
/.github/workflows/pr-received-send-thank-you.yml:
--------------------------------------------------------------------------------
1 | # This workflow will parse the grant application, get needed data, and then send an email to the grant submitter
2 | #
3 | # send-thank-you.yml
4 | #
5 | # https://stackoverflow.com/questions/69499645/how-to-securely-allow-github-actions-to-check-pr-and-post-results-in-comment
6 | # https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
7 | #
8 | # Ted Cahall 14Nov2022 - Retired and replaced by pr-received.yml which calls replaceable components.
9 | # - added ZZ to name to move to end of console list
10 |
11 | name: ZZ OLD PR Received, Send Thank You Email
12 |
13 | # Controls when the workflow will run
14 | on:
15 | pull_request_target:
16 | types: [opened]
17 | # types: [opened, edited, synchronize]
18 |
19 | # Allows you to run this workflow manually from the Actions tab
20 | #workflow_dispatch:
21 |
22 | #env:
23 | # ACTIONS_ALLOW_UNSECURE_COMMANDS: true
24 |
25 | jobs:
26 | get_filename:
27 | runs-on: ubuntu-latest
28 | outputs:
29 | filename: ${{ steps.files.outputs.added }}
30 | steps:
31 | - name: Get application file name
32 | id: 'files'
33 | uses: Ana06/get-changed-files@v2.0.0
34 | with:
35 | filter: 'applications/*.md'
36 |
37 | parse_app:
38 | needs: get_filename
39 | if: needs.get_filename.outputs.filename
40 | runs-on: ubuntu-latest
41 | outputs:
42 | app_email: ${{ steps.grep_email.outputs.email_addr }}
43 | contact_name: ${{ steps.grep_email.outputs.contact_name }}
44 | project_name: ${{ steps.grep_email.outputs.project_name }}
45 | team_name: ${{ steps.grep_email.outputs.team_name }}
46 | steps:
47 | - name: Checkout
48 | id: checkout
49 | uses: actions/checkout@v3
50 | with:
51 | ref: ${{ github.event.pull_request.head.sha }}
52 |
53 | - name: Echo_file
54 | run: echo This is the file ${{ needs.get_filename.outputs.filename }}
55 |
56 | - name: Echo PR Number
57 | run: echo This is the PR number ${{ github.event.pull_request.number }}
58 |
59 | # Parse the application template for the email account
60 | - name: assign the env from the email name
61 | id: grep_email
62 | run: |
63 | export APP_EMAIL=`/bin/grep "**Contact Email:**" ${{ needs.get_filename.outputs.filename }} | cut -d" " -f4`
64 | #echo "::set-env name=APP_EMAIL::$APP_EMAIL"
65 | echo "::set-output name=email_addr::$APP_EMAIL"
66 | export CNAME=`/bin/grep "**Contact Name:**" ${{ needs.get_filename.outputs.filename }} | cut -d" " -f4-8`
67 | echo "::set-output name=contact_name::$CNAME"
68 | export PNAME=`/bin/grep "**Project Name:**" ${{ needs.get_filename.outputs.filename }} | cut -d" " -f4-8`
69 | echo "::set-output name=project_name::$PNAME"
70 | export TNAME=`/bin/grep "**Team Name:**" ${{ needs.get_filename.outputs.filename }} | cut -d" " -f4-8`
71 | echo "::set-output name=team_name::$TNAME"
72 |
73 | # Now echo the saved ENV name
74 | # - name: Echo the env email name inside the same job
75 | # run: echo "the env email name is ${APP_EMAIL} from the application - single step"
76 |
77 | email:
78 | needs: [get_filename, parse_app]
79 | runs-on: ubuntu-latest
80 | steps:
81 | - name: send email
82 | uses: dawidd6/action-send-mail@v3.6.1
83 | with:
84 | server_address: smtp.gmail.com
85 | server_port: 465
86 | secure: true
87 | username: enfmailbot@eosn.foundation
88 | password: ${{ secrets.ENFMAILBOT_PASSWORD }}
89 | subject: Thank you for your ENF Grant Framework Application
90 | body: |
91 | Hi ${{needs.parse_app.outputs.contact_name}},
92 |
93 | Thank you for your application to the ENF Grant Framework.
94 |
95 | We recieved your ${{needs.parse_app.outputs.project_name}} application by the ${{needs.parse_app.outputs.team_name}} team, submitted from the ${{ github.event.pull_request.head.repo.owner.login }} Github account.
96 |
97 | We are working through our internal processes which includes translating the application followed by a series of meetings. Thus it may take several weeks to get back to you.
98 |
99 | You may notice comments and feedback on your application in Github as it is being reviewed. Please respond to those comments and reviews as addressing each point will be required before the Application is given final approval.
100 |
101 | The process is still very new and we hope to improve the speed of processing moving forward.
102 |
103 | Thank you for your patience and understanding.
104 |
105 | Best,
106 | ENF Grant Framework Team
107 | html_body: |
108 | Hi ${{needs.parse_app.outputs.contact_name}},
109 |
110 | Thank you for your application to the ENF Grant Framework.
111 |
112 | We recieved your ${{needs.parse_app.outputs.project_name}} application
113 | by the ${{needs.parse_app.outputs.team_name}} team,
114 | submitted from the ${{ github.actor }} Github account.
115 |
116 | We are working through our internal processes which includes translating the application followed by a series of meetings. Thus it may take several weeks to get back to you.
117 |
118 | You may notice comments and feedback on your application in Github as it is being reviewed. Please respond to those comments and reviews as addressing each point will be required before the Application is given final approval.
119 |
120 | The process is still very new and we hope to improve the speed of processing moving forward.
121 |
122 | Thank you for your patience and understanding.
123 |
124 | Best,
125 | ENF Grant Framework Team
126 | to: ${{needs.parse_app.outputs.app_email}}
127 | from: grants@eosn.foundation
128 | reply_to: grants@eosn.foundation
129 | bcc: grants@eosn.foundation
130 |
131 |
132 |
--------------------------------------------------------------------------------
/.github/workflows/pr-received.yml:
--------------------------------------------------------------------------------
1 | # This action does the following things:
2 | # - kicks off the parser
3 | # - writes the data to the master spreadsheet
4 | # - sends the contact email address an email letting them know that the ENF got their application
5 | #
6 | # Ted Cahall 13Nov2022
7 | #
8 | # https://stackoverflow.com/questions/69499645/how-to-securely-allow-github-actions-to-check-pr-and-post-results-in-comment
9 | # https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
10 | #
11 |
12 | name: Grant PR Received
13 |
14 | # Controls when the workflow will run
15 | on:
16 | pull_request_target:
17 | # types: opened
18 | types: [opened, edited, synchronize]
19 | # types: [opened]
20 |
21 | jobs:
22 | get_filename:
23 | runs-on: ubuntu-latest
24 | outputs:
25 | filename: ${{ steps.files.outputs.added }}
26 | steps:
27 | - name: Get application file name
28 | id: 'files'
29 | uses: Ana06/get-changed-files@v2.2.0
30 | with:
31 | filter: 'applications/*.md'
32 |
33 | testfile:
34 | uses: ./.github/workflows/ru-check-filename.yml
35 | with:
36 | filename: "${{ needs.get_filename.outputs.filename }}"
37 | needs: get_filename
38 |
39 | call-parser:
40 | uses: ./.github/workflows/ru-big-parser.yml
41 | with:
42 | filename: "${{ needs.get_filename.outputs.filename }}"
43 | needs: [get_filename, testfile]
44 |
45 | echo-the-returned-fields:
46 | runs-on: ubuntu-latest
47 | needs: call-parser
48 | steps:
49 | - id: echo-output
50 | run: |
51 | echo "filename is ${{ needs.get_filename.outputs.filename }} "
52 | echo "basename is ${{ needs.call-parser.outputs.basename }} "
53 | echo "project name ${{ needs.call-parser.outputs.project_name }} "
54 | echo "contact name ${{ needs.call-parser.outputs.contact_name }}"
55 | echo "team name ${{ needs.call-parser.outputs.team_name }}"
56 | echo "app_email ${{ needs.call-parser.outputs.app_email }}"
57 | echo "total cost ${{ needs.call-parser.outputs.total_cost }}"
58 | echo "legal entity ${{ needs.call-parser.outputs.legal_entity }}"
59 | echo "legal addr ${{ needs.call-parser.outputs.legal_addr }}"
60 | echo "level ${{ needs.call-parser.outputs.level }}"
61 | echo "eos_addr ${{ needs.call-parser.outputs.eos_addr }}"
62 | echo "github_actor ${{ needs.call-parser.outputs.github_actor }}"
63 | echo "pr_no ${{ needs.call-parser.outputs.pr_no }}"
64 | echo "website ${{ needs.call-parser.outputs.website }}"
65 | echo "open_source ${{ needs.call-parser.outputs.open_source }}"
66 | echo "token_sale ${{ needs.call-parser.outputs.token_sale }}"
67 |
68 | write-spreadsheet:
69 | uses: ./.github/workflows/ru-big-gsheet.yml
70 | needs: call-parser
71 | with:
72 | project_name: ${{ needs.call-parser.outputs.project_name }}
73 | contact_name: ${{ needs.call-parser.outputs.contact_name }}
74 | team_name: ${{ needs.call-parser.outputs.team_name }}
75 | app_email: ${{ needs.call-parser.outputs.app_email }}
76 | total_cost: ${{ needs.call-parser.outputs.total_cost }}
77 | legal_entity: ${{ needs.call-parser.outputs.legal_entity }}
78 | legal_addr: ${{ needs.call-parser.outputs.legal_addr }}
79 | level: ${{ needs.call-parser.outputs.level }}
80 | eos_addr: ${{ needs.call-parser.outputs.eos_addr }}
81 | github_actor: ${{ needs.call-parser.outputs.github_actor }}
82 | pr_no: ${{ needs.call-parser.outputs.pr_no }}
83 | website: ${{ needs.call-parser.outputs.website }}
84 | open_source: ${{ needs.call-parser.outputs.open_source }}
85 | token_sale: ${{ needs.call-parser.outputs.token_sale }}
86 | basename: ${{ needs.call-parser.outputs.basename }}
87 | secrets:
88 | gsheet_private_key: ${{ secrets.GHSEET_API_KEY }}
89 |
90 | send-the-email:
91 | uses: ./.github/workflows/ru-pr-received-email.yml
92 | needs: call-parser
93 | with:
94 | project_name: ${{ needs.call-parser.outputs.project_name }}
95 | contact_name: ${{ needs.call-parser.outputs.contact_name }}
96 | team_name: ${{ needs.call-parser.outputs.team_name }}
97 | app_email: ${{ needs.call-parser.outputs.app_email }}
98 | total_cost: ${{ needs.call-parser.outputs.total_cost }}
99 | legal_entity: ${{ needs.call-parser.outputs.legal_entity }}
100 | legal_addr: ${{ needs.call-parser.outputs.legal_addr }}
101 | level: ${{ needs.call-parser.outputs.level }}
102 | eos_addr: ${{ needs.call-parser.outputs.eos_addr }}
103 | github_actor: ${{ needs.call-parser.outputs.github_actor }}
104 | pr_no: ${{ needs.call-parser.outputs.pr_no }}
105 | website: ${{ needs.call-parser.outputs.website }}
106 | open_source: ${{ needs.call-parser.outputs.open_source }}
107 | token_sale: ${{ needs.call-parser.outputs.token_sale }}
108 | secrets:
109 | gmail_password: ${{ secrets.ENFMAILBOT_PASSWORD }}
110 |
--------------------------------------------------------------------------------
/.github/workflows/readme.md:
--------------------------------------------------------------------------------
1 | # Workflow Description
2 | The Grant Framework workflow allows the Grant Operations team to automatically:
3 | - move grant applications though their states
4 | - add them to a central spreadsheet for Ops management
5 | - send emails to applicants at the appropriate steps
6 |
7 | The first step in the overall grant workflow is the Pull Request. A `pull_request_target` action sends the applicant an email to let them know the grant
8 | was received and that it will go through processing. The remainder of the workflow occurs when the grant operations team adds labels to that PR.
9 |
10 | **Labels:**
11 | - Grant Issues
12 | - Grant Received
13 | - Grant Translated
14 | - Grant Committee Approved
15 | - Grant Fully Approved
16 | - Grant Rejected
17 |
18 | ## Upon Receipt of a Pull Request
19 | When a pull_request is received in the grant-framework directory, the grant is parsed and a thank you email is sent to the applicant.
20 |
21 | ## Grant Issues
22 | The grant has some formatting errors that will break the parser. Or it has incorrect information such as an invalid EOS Account name.
23 | This label is applied, but the grant applicant must still be notified of the errors that need to be corrected. It currently does
24 | not send an email or do any workflow. `FUTURE:` it may send a generic email notifying the applicant that the grant needs some corrections.
25 | It would cc the grants email address. Then a simple reply all email can be send from that account to note the items that need to be addressed.
26 |
27 | ## Grant Received
28 | This currently does nothing but add the tag so it is clear the grant is valid and has been processed (and sent to be translated).
29 |
30 | ## Grant Translated
31 | This adds the grant to the grant spreadsheet for the Grant Committee. `FUTURE:` It should also sent the notification email to the Grant Committee
32 | that there are new grants to be reviewed.
33 |
34 | ## Grant Committee Approved
35 | This label sends an email to the applicant letting them know the first step of approval is completed and to look for feedback from the
36 | grant evaluators.
37 |
38 | ## Grant Fully Approved
39 | This label sends an email to the applicant letting them know that the grant is fully approved and that they can begin coding. It let's them
40 | know to work with the grant-milestones repo to report milestones and request payment.
41 |
42 | ## Grant Rejected
43 | This tag currently does nothing. `FUTURE:` This should send a rejection email and cc the grants email account. Operations can then reply all to
44 | that email and list the reasons for rejection.
45 |
46 | # Testing
47 | There are a number of testing scripts that can call some of the reusable components. They all begin with the word "test-" in this directory
48 |
49 |
50 | 
51 |
52 |
53 | 
54 |
55 |
--------------------------------------------------------------------------------
/.github/workflows/reusable-gsheet.yml:
--------------------------------------------------------------------------------
1 | # Write the dummy spreadsheet for testing etc.
2 | # 22May2023 - updated to latest jroehl/gsheet.action@v2.0.1 to supress node12 warnings
3 | name: Reusable Gsheet Update
4 | on:
5 | workflow_call:
6 | inputs:
7 | project_name:
8 | required: true
9 | type: string
10 | secrets:
11 | gsheet_private_key:
12 | required: true
13 |
14 | jobs:
15 | appendrow:
16 | runs-on: ubuntu-latest
17 | steps:
18 | - id: 'update_worksheet'
19 | uses: jroehl/gsheet.action@v2.0.1
20 | with:
21 | # this is the dummy spreadsheet
22 | spreadsheetId: 1FsNUKcfAJAorZGHpEzbRKLVYWbpZ_93Ts-R-JTpRK_A
23 | commands: |
24 | [
25 | { "command": "appendData", "args": { "data": [["${{ inputs.project_name }}", "B2", "B3"]], "worksheetTitle": "Grants", "minCol": 1 }},
26 | { "command": "appendData", "args": { "data": [["C2", "C3", "C4"]], "worksheetTitle": "Grants", "minCol": 1 }}
27 | ]
28 | env:
29 | GSHEET_CLIENT_EMAIL: enf-grant-service-account@sonorous-haven-350712.iam.gserviceaccount.com
30 | GSHEET_PRIVATE_KEY: ${{ secrets.gsheet_private_key }}
31 |
--------------------------------------------------------------------------------
/.github/workflows/reusable-parser.yml:
--------------------------------------------------------------------------------
1 | # Parse the ENF Grant Framework Application and return the important parts
2 | # Ted Cahall 25May2022
3 | #
4 | name: Reusable Application Parser
5 | on:
6 | workflow_call:
7 | inputs:
8 | filename:
9 | required: true
10 | type: string
11 | outputs:
12 | app_email:
13 | value: ${{ jobs.parse.outputs.app_email }}
14 | contact_name:
15 | value: ${{ jobs.parse.outputs.contact_name }}
16 | project_name:
17 | value: ${{ jobs.parse.outputs.project_name }}
18 | team_name:
19 | value: ${{ jobs.parse.outputs.team_name }}
20 | total_cost:
21 | value: ${{ jobs.parse.outputs.total_cost }}
22 |
23 | jobs:
24 | parse:
25 | #if: inputs.filename
26 | runs-on: ubuntu-latest
27 | outputs:
28 | app_email: ${{ steps.grep_appl.outputs.email_addr }}
29 | contact_name: ${{ steps.grep_appl.outputs.contact_name }}
30 | project_name: ${{ steps.grep_appl.outputs.project_name }}
31 | team_name: ${{ steps.grep_appl.outputs.team_name }}
32 | total_cost: ${{ steps.grep_appl.outputs.total_cost }}
33 | steps:
34 | - name: Checkout
35 | id: checkout
36 | uses: actions/checkout@v3
37 | with:
38 | ref: ${{ github.event.pull_request.head.sha }}
39 |
40 | # Parse the application template for the email account
41 | - name: assign the env from the email name
42 | id: grep_appl
43 | run: |
44 | export APP_EMAIL=`/bin/grep "**Contact Email:**" ${{ inputs.filename }} | cut -d" " -f4`
45 | echo "::set-output name=email_addr::$APP_EMAIL"
46 | export CNAME=`/bin/grep "**Contact Name:**" ${{ inputs.filename }} | cut -d" " -f4-8`
47 | echo "::set-output name=contact_name::$CNAME"
48 | export PNAME=`/bin/grep "**Project Name:**" ${{ inputs.filename }} | cut -d" " -f4-8`
49 | echo "::set-output name=project_name::$PNAME"
50 | export TNAME=`/bin/grep "**Team Name:**" ${{ inputs.filename }} | cut -d" " -f4-8`
51 | echo "::set-output name=team_name::$TNAME"
52 | export TCOST=`/bin/grep "**Total Costs:**" ${{ inputs.filename }} | cut -d" " -f4-8`
53 | echo "::set-output name=total_cost::$TCOST"
54 |
--------------------------------------------------------------------------------
/.github/workflows/ru-big-gsheet.yml:
--------------------------------------------------------------------------------
1 | name: Reusable Gsheet Update
2 | on:
3 | workflow_call:
4 | inputs:
5 | project_name:
6 | required: true
7 | type: string
8 | contact_name:
9 | required: true
10 | type: string
11 | team_name:
12 | required: true
13 | type: string
14 | app_email:
15 | required: true
16 | type: string
17 | total_cost:
18 | required: true
19 | type: string
20 | legal_entity:
21 | required: true
22 | type: string
23 | legal_addr:
24 | required: true
25 | type: string
26 | level:
27 | required: true
28 | type: string
29 | eos_addr:
30 | required: true
31 | type: string
32 | github_actor:
33 | required: true
34 | type: string
35 | pr_no:
36 | required: true
37 | type: string
38 | website:
39 | required: true
40 | type: string
41 | open_source:
42 | required: true
43 | type: string
44 | token_sale:
45 | required: true
46 | type: string
47 | basename:
48 | required: true
49 | type: string
50 |
51 | secrets:
52 | gsheet_private_key:
53 | required: true
54 |
55 | jobs:
56 | appendrow:
57 | runs-on: ubuntu-latest
58 | steps:
59 | - id: 'update_worksheet'
60 | #uses: jroehl/gsheet.action@v1.2.0
61 | uses: jroehl/gsheet.action@v2.0.1
62 | with:
63 | spreadsheetId: 1hTRqt_iGDmFvwbn9leKwr7e-tL9eqHS3-h_dDP5Fpu8
64 | commands: |
65 | [
66 | { "command": "appendData", "args": { "data": [["${{ inputs.pr_no }}", "${{ inputs.project_name }}",
67 | "${{ inputs.team_name }}",
68 | "${{ inputs.open_source }}", "${{ inputs.token_sale }}",
69 | "${{ inputs.level }}", "${{ inputs.total_cost }}",
70 | "${{ inputs.eos_addr }}",
71 | "${{ inputs.github_actor }}",
72 | "${{ inputs.website }}", "${{ inputs.basename }}",
73 | "${{ inputs.contact_name }}", "${{ inputs.app_email }}",
74 | "${{ inputs.legal_entity }}", "${{ inputs.legal_addr }}"
75 | ]], "worksheetTitle": "GrantInfo", "minCol": 1 }}
76 | ]
77 | env:
78 | GSHEET_CLIENT_EMAIL: enf-grant-service-account@sonorous-haven-350712.iam.gserviceaccount.com
79 | GSHEET_PRIVATE_KEY: ${{ secrets.gsheet_private_key }}
80 |
--------------------------------------------------------------------------------
/.github/workflows/ru-big-parser.yml:
--------------------------------------------------------------------------------
1 | # Parse the ENF Grant Framework Application and return the important parts
2 | # Ted Cahall 25May2022 - modified 30June2022 to scrape more fields.
3 | # 12Nov2022 - Added more fields for the Big Scrape and made a new file from old one
4 | # File may be called from a PR or with a filename passed in (not associated with a PR)
5 | #
6 | name: Reusable "Big" Application Parser
7 | on:
8 | workflow_call:
9 | inputs:
10 | filename:
11 | required: true
12 | type: string
13 | outputs:
14 | app_email:
15 | value: ${{ jobs.parse.outputs.app_email }}
16 | contact_name:
17 | value: ${{ jobs.parse.outputs.contact_name }}
18 | project_name:
19 | value: ${{ jobs.parse.outputs.project_name }}
20 | team_name:
21 | value: ${{ jobs.parse.outputs.team_name }}
22 | total_cost:
23 | value: ${{ jobs.parse.outputs.total_cost }}
24 | legal_entity:
25 | value: ${{ jobs.parse.outputs.legal_entity }}
26 | legal_addr:
27 | value: ${{ jobs.parse.outputs.legal_addr }}
28 | level:
29 | value: ${{ jobs.parse.outputs.level }}
30 | eos_addr:
31 | value: ${{ jobs.parse.outputs.eos_addr }}
32 | repo_owner:
33 | value: ${{ jobs.parse.outputs.repo_owner }}
34 | github_actor:
35 | value: ${{ jobs.parse.outputs.github_actor }}
36 | pr_no:
37 | value: ${{ jobs.parse.outputs.pr_no }}
38 | website:
39 | value: ${{ jobs.parse.outputs.website }}
40 | open_source:
41 | value: ${{ jobs.parse.outputs.open_source }}
42 | token_sale:
43 | value: ${{ jobs.parse.outputs.token_sale }}
44 | basename:
45 | value: ${{ jobs.parse.outputs.basename }}
46 |
47 | jobs:
48 | parse:
49 | #if: inputs.filename
50 | runs-on: ubuntu-latest
51 | outputs:
52 | app_email: ${{ steps.grep_appl.outputs.email_addr }}
53 | contact_name: ${{ steps.grep_appl.outputs.contact_name }}
54 | project_name: ${{ steps.grep_appl.outputs.project_name }}
55 | team_name: ${{ steps.grep_appl.outputs.team_name }}
56 | total_cost: ${{ steps.grep_appl.outputs.total_cost }}
57 | legal_entity: ${{ steps.grep_appl.outputs.legal_entity }}
58 | legal_addr: ${{ steps.grep_appl.outputs.legal_addr }}
59 | level: ${{ steps.grep_appl.outputs.level }}
60 | eos_addr: ${{ steps.grep_appl.outputs.eos_addr }}
61 | basename: ${{ steps.grep_appl.outputs.basename }}
62 | github_actor: ${{ steps.grep_appl.outputs.github_actor }}
63 | pr_no: ${{ steps.grep_appl.outputs.pr_no }}
64 | website: ${{ steps.grep_appl.outputs.website }}
65 | open_source: ${{ steps.grep_appl.outputs.open_source }}
66 | token_sale: ${{ steps.grep_appl.outputs.token_sale }}
67 |
68 | steps:
69 | - name: Checkout
70 | id: checkout
71 | uses: actions/checkout@v3
72 | with:
73 | ref: ${{ github.event.pull_request.head.sha }}
74 |
75 | # Parse the application template for the required fields
76 | - name: assign the env variables from the parsing
77 | id: grep_appl
78 | run: |
79 | export APP_EMAIL=`/bin/grep -F "**Contact Email:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4`
80 | echo "email_addr=$APP_EMAIL" >> $GITHUB_OUTPUT
81 | export CNAME=`/bin/grep -F "**Contact Name:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-8`
82 | echo "contact_name=$CNAME" >> $GITHUB_OUTPUT
83 | export PNAME=`/bin/grep -F "**Project Name:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-10`
84 | echo "project_name=$PNAME" >> $GITHUB_OUTPUT
85 | export TNAME=`/bin/grep -F "**Team Name:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-10`
86 | echo "team_name=$TNAME" >> $GITHUB_OUTPUT
87 | export TCOST=`/bin/grep -F "**Total Costs:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-8`
88 | echo "total_cost=$TCOST" >> $GITHUB_OUTPUT
89 | export LENTITY=`/bin/grep -F "**Registered Legal Entity:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f5-12`
90 | echo "legal_entity=$LENTITY" >> $GITHUB_OUTPUT
91 | export LADDR=`/bin/grep -F "**Registered Address:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f4-30`
92 | echo "legal_addr=$LADDR" >> $GITHUB_OUTPUT
93 | export LEVEL=`/bin/grep -F "**[Level](https" ${{ inputs.filename }} | tr -s " " | cut -d" " -f3-8`
94 | echo "level=$LEVEL" >> $GITHUB_OUTPUT
95 | export EOSADDR=`/bin/grep -F "**EOS Payment Address:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f5-8`
96 | echo "eos_addr=$EOSADDR" >> $GITHUB_OUTPUT
97 | export WEBSITE=`/bin/grep -F "**Website:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f3-8`
98 | echo "website=$WEBSITE" >> $GITHUB_OUTPUT
99 | export OPENSOURCE=`/bin/grep -F "**Project is Open-Source:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f5`
100 | echo "open_Source=$OPENSOURCE" >> $GITHUB_OUTPUT
101 | export TOKENSALE=`/bin/grep -F "**Project was part of Token sale:**" ${{ inputs.filename }} | tr -s " " | cut -d" " -f8`
102 | echo "token_sale=$TOKENSALE" >> $GITHUB_OUTPUT
103 | # following three only work when parser launched by a pull request
104 | echo "repo_owner=${{ github.event.pull_request.head.repo.owner.login }}" >> $GITHUB_OUTPUT
105 | echo "pr_no=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
106 | echo "github_actor=${{ github.actor }}" >> $GITHUB_OUTPUT
107 | export BASENAME=`/bin/echo ${{ inputs.filename }} | cut -d"/" -f2`
108 | echo "basename=$BASENAME" >> $GITHUB_OUTPUT
109 | echo $BASENAME
110 |
111 |
--------------------------------------------------------------------------------
/.github/workflows/ru-check-filename.yml:
--------------------------------------------------------------------------------
1 | # Reusable filename checker
2 | # Checks for the following conditions and exits if found:
3 | # 1) missing the ".md" file extension
4 | # 2) embedded spaced in the filename
5 | # The job will exit and print an error message to the Annotations (Console) so others can diagnose.
6 | #
7 | # Ted Cahall 18May2023
8 | #
9 | name: Reusable Filename checker
10 | on:
11 | workflow_call:
12 | inputs:
13 | filename:
14 | required: true
15 | type: string
16 |
17 | jobs:
18 | checkfile:
19 | runs-on: ubuntu-latest
20 | steps:
21 | - name: test-has-md
22 | if: ${{ endsWith(inputs.filename, '.md') }}
23 | run: |
24 | echo "filename ${{inputs.filename}} ends with .md"
25 | - name: test-missing-md
26 | if: ${{ !endsWith(inputs.filename, '.md') }}
27 | uses: actions/github-script@v6
28 | with:
29 | script: |
30 | core.setFailed('filename ${{inputs.filename}} does not end with .md')
31 | - name: test-spaces
32 | if: ${{ contains(inputs.filename, ' ') }}
33 | uses: actions/github-script@v6
34 | with:
35 | script: |
36 | core.setFailed('filename \'${{inputs.filename}}\' cannot contain spaces. Exiting.')
37 |
--------------------------------------------------------------------------------
/.github/workflows/ru-committee-approved-email.yml:
--------------------------------------------------------------------------------
1 | # Callable workflow that emails the grantee to say their application was approved by the committee
2 | # and now will go to the evaluators. Gives them instructions on next steps.
3 | #
4 | # Ted Cahall 26May2022
5 | # 22May2023 - updated to dawidd6/action-send-mail@v3.7.1 to supress node12 warnings
6 |
7 | name: Committee Approved Email to Grantee
8 | on:
9 | workflow_call:
10 | inputs:
11 | app_email:
12 | required: true
13 | type: string
14 | contact_name:
15 | required: true
16 | type: string
17 | project_name:
18 | required: true
19 | type: string
20 | team_name:
21 | required: true
22 | type: string
23 | total_cost:
24 | required: true
25 | type: string
26 | repo_account:
27 | required: true
28 | type: string
29 | secrets:
30 | gmail_password:
31 | required: true
32 |
33 | jobs:
34 | email:
35 | runs-on: ubuntu-latest
36 | steps:
37 | - name: send email
38 | uses: dawidd6/action-send-mail@v3.7.1
39 | with:
40 | server_address: smtp.gmail.com
41 | server_port: 465
42 | secure: true
43 | username: enfmailbot@eosn.foundation
44 | password: ${{ secrets.gmail_password }}
45 | subject: Your ENF Grant Application has moved to the next step
46 | body: |
47 | Hi ${{inputs.contact_name}},
48 | Congratulations to you and the ${{inputs.team_name}} team. Your ENF Grant Framework application for ${{inputs.project_name}}
49 | submited from the ${{ inputs.repo_account }} Github account was approved by the ENF Grant Committee.
50 | Please note, this is the first step in the approval process.
51 | In the next step, the ENF Grant Evaluators will begin to review the technical aspects of your grant.
52 | Please look for comments on your PR and make sure you address each of them.
53 | Once the correct number of Grant Evaluators approve your application, we will notify you and you may begin work on the milestones.
54 | Best,
55 | ENF Operations Team
56 |
57 | html_body: |
58 | Hi ${{inputs.contact_name}},
59 |
60 | Congratulations to you and the ${{inputs.team_name}} team. Your ENF Grant Framework application for ${{inputs.project_name}}
61 | submited from the ${{ inputs.repo_account }} Github account was approved by the ENF Grant Committee.
62 |
63 | Please note, this is the first step in the approval process.
64 |
65 | In the next step, the ENF Grant Evaluators will begin to review the technical aspects of your grant.
66 | Please look for comments on your PR and make sure you address each of them.
67 |
68 | Once the correct number of Grant Evaluators approve your application, we will notify you and you may begin work on the milestones.
69 |
70 | Best,
71 | ENF Operations Team
72 | to: ${{inputs.app_email}}
73 | from: grants@eosnetwork.com
74 | reply_to: grants@eosnetwork.com
75 | bcc: grants@eosnetwork.com,grant-committee-approved@eosnetwork.com
76 |
77 |
--------------------------------------------------------------------------------
/.github/workflows/ru-fully-approved-email.yml:
--------------------------------------------------------------------------------
1 | # Callable workflow that emails the grantee to say their application has been fully approved.
2 | # In other words, the Evaluators have signed off.
3 | # They can now begin coding and submit their milestones.
4 | #
5 | # Ted Cahall 28May2022
6 | # 22May2023 - updated to dawidd6/action-send-mail@v3.7.1 to supress node12 warnings
7 |
8 | name: Fully Approved Email to Grantee
9 | on:
10 | workflow_call:
11 | inputs:
12 | app_email:
13 | required: true
14 | type: string
15 | contact_name:
16 | required: true
17 | type: string
18 | project_name:
19 | required: true
20 | type: string
21 | team_name:
22 | required: true
23 | type: string
24 | total_cost:
25 | required: true
26 | type: string
27 | repo_account:
28 | required: true
29 | type: string
30 | secrets:
31 | gmail_password:
32 | required: true
33 |
34 | jobs:
35 | email:
36 | runs-on: ubuntu-latest
37 | steps:
38 | - name: send email
39 | uses: dawidd6/action-send-mail@v3.7.1
40 | with:
41 | server_address: smtp.gmail.com
42 | server_port: 465
43 | secure: true
44 | username: enfmailbot@eosn.foundation
45 | password: ${{ secrets.gmail_password }}
46 | subject: Your ENF Grant Application has been fully approved!
47 | body: |
48 | Hi ${{inputs.contact_name}},
49 | Congratulations to you and the ${{inputs.team_name}} team. Your ENF Grant Framework application for ${{inputs.project_name}}
50 | submited from the ${{ inputs.repo_account }} Github account has been fully approved!
51 |
52 | Please work through your milestones and submit them via the milestones repository
53 | https://github.com/eosnetworkfoundation/grant-milestones
54 |
55 | Once your milestones have been approved, you may submit the invoice as described in the milestones description.
56 | Best,
57 | ENF Operations Team
58 |
59 | html_body: |
60 | Hi ${{inputs.contact_name}},
61 |
62 | Congratulations to you and the ${{inputs.team_name}} team. Your ENF Grant Framework application for ${{inputs.project_name}}
63 | submited from the ${{ inputs.repo_account }} Github account has been fully approved!
64 |
65 | Please work through your milestones and submit them via the milestones repository
66 | https://github.com/eosnetworkfoundation/grant-milestones
67 |
68 | Once your milestones have been approved, you may submit the invoice as described in the milestones description.
69 |
70 | Best,
71 | ENF Operations Team
72 | to: ${{inputs.app_email}}
73 | from: grants@eosnetwork.com
74 | reply_to: grants@eosnetwork.com
75 | bcc: grants@eosnetwork.com,grant-fully-approved@eosnetwork.com
76 |
77 |
--------------------------------------------------------------------------------
/.github/workflows/ru-pr-received-email.yml:
--------------------------------------------------------------------------------
1 | # ru-pr-received-email.yml
2 | #
3 | # This reusable component sends an acknowledgement email to the grant applicatnt contact person
4 | # letting them know we recieved the PR.
5 | #
6 | # Code expanded from the original file pr-received-send-thank-you.yml - which did the parsing and
7 | # email in the same file.
8 | #
9 | # https://stackoverflow.com/questions/69499645/how-to-securely-allow-github-actions-to-check-pr-and-post-results-in-comment
10 | # https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
11 | #
12 |
13 | name: PR Received Email
14 | on:
15 | workflow_call:
16 | inputs:
17 | project_name:
18 | required: true
19 | type: string
20 | contact_name:
21 | required: true
22 | type: string
23 | team_name:
24 | required: true
25 | type: string
26 | app_email:
27 | required: true
28 | type: string
29 | total_cost:
30 | required: true
31 | type: string
32 | legal_entity:
33 | required: true
34 | type: string
35 | legal_addr:
36 | required: true
37 | type: string
38 | level:
39 | required: true
40 | type: string
41 | eos_addr:
42 | required: true
43 | type: string
44 | github_actor:
45 | required: true
46 | type: string
47 | pr_no:
48 | required: true
49 | type: string
50 | website:
51 | required: true
52 | type: string
53 | open_source:
54 | required: true
55 | type: string
56 | token_sale:
57 | required: true
58 | type: string
59 | secrets:
60 | gmail_password:
61 | required: true
62 |
63 | jobs:
64 | send-email:
65 | runs-on: ubuntu-latest
66 | steps:
67 | - name: send email
68 | uses: dawidd6/action-send-mail@v3.7.1
69 | with:
70 | server_address: smtp.gmail.com
71 | server_port: 465
72 | secure: true
73 | username: enfmailbot@eosn.foundation
74 | password: ${{ secrets.gmail_password }}
75 | subject: Thank you for your ENF Grant Framework Application
76 | body: |
77 | Hi ${{inputs.contact_name}},
78 |
79 | Thank you for your application to the ENF Grant Framework.
80 |
81 | We received your ${{inputs.project_name}} application by the ${{inputs.team_name}} team, submitted from the ${{ github.event.pull_request.head.repo.owner.login }} Github account.
82 |
83 | We are working through our internal processes which includes translating the application followed by a series of meetings. Thus it may take several weeks to get back to you.
84 |
85 | You may notice comments and feedback on your application in Github as it is being reviewed. Please respond to those comments and reviews as addressing each point will be required before the Application is given final approval.
86 |
87 | Thank you for your patience and understanding.
88 |
89 | Best,
90 | ENF Grant Framework Team
91 |
92 | Grant Information Supplied:
93 | PR_ID: ${{inputs.pr_no}} Project_Name: ${{inputs.project_name}} Team_Name: ${{inputs.team_name}} Website: ${{inputs.website}}
94 |
95 | Legal Entity: ${{inputs.legal_entity}} Legal_Address: ${{inputs.legal_addr}}
96 |
97 | Grant_Amount: ${{inputs.total_cost}} Grant_Level: ${{inputs.level}}
98 |
99 | Contact_Name: ${{inputs.contact_name}} Contact_Email: ${{inputs.app_email}} Github_Account: ${{github.actor}}
100 |
101 | Open_Source: ${{inputs.open_source}} Token_Sale: ${{inputs.token_sale}}
102 |
103 | html_body: |
104 | Hi ${{inputs.contact_name}},
105 |
106 | Thank you for your application to the ENF Grant Framework.
107 |
108 | We received your ${{inputs.project_name}} application
109 | by the ${{needs.parse_app.outputs.team_name}} team,
110 | submitted from the ${{ github.actor }} Github account.
111 |
112 | We are working through our internal processes which includes translating the application followed by a series of meetings. Thus it may take several weeks to get back to you.
113 |
114 | You may notice comments and feedback on your application in Github as it is being reviewed. Please respond to those comments and reviews as addressing each point will be required before the Application is given final approval.
115 |
116 | Thank you for your patience and understanding.
117 |
118 | Best,
119 | ENF Grant Framework Team
120 |
121 | Grant Information Supplied:
122 | PR_ID: ${{ inputs.pr_no}} Project_Name: ${{inputs.project_name}} Team_Name: ${{inputs.team_name}} Website: ${{inputs.website}}
123 |
124 | Legal Entity: ${{inputs.legal_entity}} Legal_Address: ${{inputs.legal_addr}}
125 |
126 | Grant_Amount: ${{inputs.total_cost}} Grant_Level: ${{inputs.level}}
127 |
128 | Contact_Name: ${{inputs.contact_name}} Contact_Email: ${{inputs.app_email}} Github_Account: ${{github.actor}}
129 |
130 | Open_Source: ${{inputs.open_source}} Token_Sale: ${{inputs.token_sale}}
131 |
132 | to: ${{inputs.app_email}}
133 | from: grants@eosnetwork.com
134 | reply_to: grants@eosnetwork.com
135 | bcc: grant-pr-received@eosnetwork.com
136 |
137 |
138 |
--------------------------------------------------------------------------------
/.github/workflows/scrape-appfile.yml:
--------------------------------------------------------------------------------
1 | # Scrape application file to the "big" spreadsheet (not the Committee voting sheet)
2 | # Ted Cahall 12Nov2022
3 | #
4 |
5 | name: Scrape Application to Gsheet
6 |
7 | on:
8 | workflow_dispatch:
9 | inputs:
10 | AppFile:
11 | type: string
12 | description: Name of Application File
13 |
14 | jobs:
15 | build:
16 | runs-on: ubuntu-latest
17 |
18 | steps:
19 | - uses: actions/checkout@v3
20 |
21 | - name: greet
22 | id: test_echo
23 | run: |
24 | echo "Application file is: ${{ github.event.inputs.AppFile }}"
25 | export APP_EMAIL=`/bin/grep "**Contact Email:**" "applications/${{ github.event.inputs.AppFile }}" | cut -d" " -f4`
26 | echo "email_addr=$APP_EMAIL" >> $GITHUB_OUTPUT
27 | echo email addr is $APP_EMAIL
28 |
29 | - name: test_output
30 | run: echo "the new output test shows the email_addr is ${{ steps.test_echo.outputs.email_addr }}"
31 |
32 | call-parser:
33 | uses: ./.github/workflows/ru-big-parser.yml
34 | with:
35 | filename: "applications/${{ github.event.inputs.AppFile }}"
36 | needs: build
37 |
38 | echo-the-returned-fields:
39 | runs-on: ubuntu-latest
40 | needs: call-parser
41 | steps:
42 | - id: echo-output
43 | run: |
44 | echo "basename ${{ needs.call-parser.outputs.basename }} "
45 | echo "project name ${{ needs.call-parser.outputs.project_name }} "
46 | echo "contact name ${{ needs.call-parser.outputs.contact_name }}"
47 | echo "team name ${{ needs.call-parser.outputs.team_name }}"
48 | echo "app_email ${{ needs.call-parser.outputs.app_email }}"
49 | echo "total cost ${{ needs.call-parser.outputs.total_cost }}"
50 | echo "legal entity ${{ needs.call-parser.outputs.legal_entity }}"
51 | echo "legal addr ${{ needs.call-parser.outputs.legal_addr }}"
52 | echo "level ${{ needs.call-parser.outputs.level }}"
53 | echo "eos_addr ${{ needs.call-parser.outputs.eos_addr }}"
54 | echo "github_actor ${{ needs.call-parser.outputs.github_actor }}"
55 | echo "pr_no ${{ needs.call-parser.outputs.pr_no }}"
56 | echo "website ${{ needs.call-parser.outputs.website }}"
57 | echo "open_source ${{ needs.call-parser.outputs.open_source }}"
58 | echo "token_sale ${{ needs.call-parser.outputs.token_sale }}"
59 |
60 | write-spreadsheet:
61 | uses: ./.github/workflows/ru-big-gsheet.yml
62 | needs: call-parser
63 | with:
64 | project_name: ${{ needs.call-parser.outputs.project_name }}
65 | contact_name: ${{ needs.call-parser.outputs.contact_name }}
66 | team_name: ${{ needs.call-parser.outputs.team_name }}
67 | app_email: ${{ needs.call-parser.outputs.app_email }}
68 | total_cost: ${{ needs.call-parser.outputs.total_cost }}
69 | legal_entity: ${{ needs.call-parser.outputs.legal_entity }}
70 | legal_addr: ${{ needs.call-parser.outputs.legal_addr }}
71 | level: ${{ needs.call-parser.outputs.level }}
72 | eos_addr: ${{ needs.call-parser.outputs.eos_addr }}
73 | github_actor: ${{ needs.call-parser.outputs.github_actor }}
74 | pr_no: ${{ needs.call-parser.outputs.pr_no }}
75 | website: ${{ needs.call-parser.outputs.website }}
76 | open_source: ${{ needs.call-parser.outputs.open_source }}
77 | token_sale: ${{ needs.call-parser.outputs.token_sale }}
78 | basename: ${{ needs.call-parser.outputs.basename }}
79 | secrets:
80 | gsheet_private_key: ${{ secrets.GHSEET_API_KEY }}
81 |
--------------------------------------------------------------------------------
/.github/workflows/test-append-gsheet.yml:
--------------------------------------------------------------------------------
1 | # Test workflow to write a few rows to a Google Sheet. Triggered from Github UI.
2 | # Ted Cahall 19May2022
3 |
4 | name: Test Append Gsheet
5 | on:
6 | workflow_dispatch:
7 |
8 | jobs:
9 | appendrow:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - id: 'update_worksheet'
13 | uses: jroehl/gsheet.action@v1.2.0
14 | with:
15 | spreadsheetId: 1FsNUKcfAJAorZGHpEzbRKLVYWbpZ_93Ts-R-JTpRK_A
16 | commands: |
17 | [
18 | { "command": "appendData", "args": { "data": [["Ted", "B2", "B3"]], "worksheetTitle": "Grants", "minCol": 1 }},
19 | { "command": "appendData", "args": { "data": [["Test", "C3", "C4"]], "worksheetTitle": "Grants", "minCol": 1 }}
20 | ]
21 | env:
22 | GSHEET_CLIENT_EMAIL: enf-grant-service-account@sonorous-haven-350712.iam.gserviceaccount.com
23 | GSHEET_PRIVATE_KEY: ${{ secrets.GHSEET_API_KEY }}
24 | - name: dump results
25 | env:
26 | RESULTS: ${{ steps.update_worksheet.outputs.results }}
27 | run: echo "$RESULTS"
28 |
29 | # { "command": "addWorksheet", "args": { "worksheetTitle": "FHorseTest2" }},
30 |
--------------------------------------------------------------------------------
/.github/workflows/test-big-email.yml:
--------------------------------------------------------------------------------
1 | # Test the Expanded (Big) email by parsing an application in the apps directory.
2 | # Note: This only sends emails to ted.cahall@eosnetwork.com so as not to spam the actual users
3 | #
4 | # Ted Cahall 13Nov2022
5 | name: Test Big Email
6 |
7 | on:
8 | workflow_dispatch:
9 | inputs:
10 | AppFile:
11 | type: string
12 | description: Name of Application File
13 |
14 | jobs:
15 | build:
16 | runs-on: ubuntu-latest
17 |
18 | steps:
19 | - uses: actions/checkout@v3
20 |
21 | - name: greet
22 | id: test_echo
23 | run: |
24 | echo "Application file is: ${{ github.event.inputs.AppFile }}"
25 | export APP_EMAIL=`/bin/grep "**Contact Email:**" "applications/${{ github.event.inputs.AppFile }}" | cut -d" " -f4`
26 | echo "email_addr=$APP_EMAIL" >> $GITHUB_OUTPUT
27 | echo email addr is $APP_EMAIL
28 |
29 | - name: test_output
30 | run: echo "the new output test shows the email_addr is ${{ steps.test_echo.outputs.email_addr }}"
31 |
32 | call-parser:
33 | uses: ./.github/workflows/ru-big-parser.yml
34 | with:
35 | filename: "applications/${{ github.event.inputs.AppFile }}"
36 | needs: build
37 |
38 | echo-the-returned-fields:
39 | runs-on: ubuntu-latest
40 | needs: call-parser
41 | steps:
42 | - id: echo-output
43 | run: |
44 | echo "project name ${{ needs.call-parser.outputs.project_name }} "
45 | echo "contact name ${{ needs.call-parser.outputs.contact_name }}"
46 | echo "team name ${{ needs.call-parser.outputs.team_name }}"
47 | echo "app_email ${{ needs.call-parser.outputs.app_email }}"
48 | echo "total cost ${{ needs.call-parser.outputs.total_cost }}"
49 | echo "legal entity ${{ needs.call-parser.outputs.legal_entity }}"
50 | echo "legal addr ${{ needs.call-parser.outputs.legal_addr }}"
51 | echo "level ${{ needs.call-parser.outputs.level }}"
52 | echo "eos_addr ${{ needs.call-parser.outputs.eos_addr }}"
53 | echo "repo_owner ${{ needs.call-parser.outputs.repo_owner }}"
54 | echo "github_actor ${{ needs.call-parser.outputs.github_actor }}"
55 | echo "pr_no ${{ needs.call-parser.outputs.pr_no }}"
56 | echo "website ${{ needs.call-parser.outputs.website }}"
57 |
58 |
59 | send-the-email:
60 | uses: ./.github/workflows/ru-pr-received-email.yml
61 | needs: call-parser
62 | with:
63 | project_name: ${{ needs.call-parser.outputs.project_name }}
64 | contact_name: ${{ needs.call-parser.outputs.contact_name }}
65 | team_name: ${{ needs.call-parser.outputs.team_name }}
66 | #app_email: ${{ needs.call-parser.outputs.app_email }} ## changed so as not to spam original user
67 | app_email: ted.cahall@eosnetwork.com
68 | total_cost: ${{ needs.call-parser.outputs.total_cost }}
69 | legal_entity: ${{ needs.call-parser.outputs.legal_entity }}
70 | legal_addr: ${{ needs.call-parser.outputs.legal_addr }}
71 | level: ${{ needs.call-parser.outputs.level }}
72 | eos_addr: ${{ needs.call-parser.outputs.eos_addr }}
73 | repo_owner: ${{ needs.call-parser.outputs.repo_owner }}
74 | github_actor: ${{ needs.call-parser.outputs.github_actor }}
75 | pr_no: ${{ needs.call-parser.outputs.pr_no }}
76 | website: ${{ needs.call-parser.outputs.website }}
77 | secrets:
78 | gmail_password: ${{ secrets.ENFMAILBOT_PASSWORD }}
79 |
80 |
--------------------------------------------------------------------------------
/.github/workflows/test-example.yml:
--------------------------------------------------------------------------------
1 | # This is a basic workflow to help you get started with Actions
2 |
3 | name: Sample Worflow Code
4 |
5 | # Controls when the workflow will run
6 | on:
7 | # Triggers the workflow on push or pull request events but only for the main branch
8 | push:
9 | branches: [ main ]
10 | pull_request:
11 | branches: [ main ]
12 |
13 | # Allows you to run this workflow manually from the Actions tab
14 | workflow_dispatch:
15 |
16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel
17 | jobs:
18 | # This workflow contains a single job called "build"
19 | build:
20 | # The type of runner that the job will run on
21 | runs-on: ubuntu-latest
22 |
23 | # Steps represent a sequence of tasks that will be executed as part of the job
24 | steps:
25 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
26 | - uses: actions/checkout@v3
27 |
28 | # Runs a single command using the runners shell
29 | - name: Run a one-line script
30 | run: echo Hello, world!
31 |
32 | # Runs a set of commands using the runners shell
33 | - name: Run a multi-line script
34 | run: |
35 | echo Add other actions to build,
36 | echo test, and deploy your project.
37 |
--------------------------------------------------------------------------------
/.github/workflows/test-inputs.yml:
--------------------------------------------------------------------------------
1 | name: Test Inputs
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | string:
7 | type: string
8 | description: This is a string
9 | #environment:
10 | #type: environment
11 | #description: Select the environment
12 | string2:
13 | type: string
14 | description: Please enter the second string here
15 | boolean:
16 | type: boolean
17 | description: True or False
18 | choice:
19 | type: choice
20 | description: Make a choice
21 | options:
22 | - foo
23 | - bar
24 | - baz
25 | jobs:
26 | build:
27 | runs-on: ubuntu-latest
28 |
29 | steps:
30 | - uses: actions/checkout@v3
31 |
32 | - name: greet
33 | run: |
34 | echo "string is ${{ github.event.inputs.string }}"
35 | echo "string2 is ${{ github.event.inputs.string2 }}"
36 | echo "environment is ${{ github.event.inputs.environment }}"
37 | echo "boolean is ${{ github.event.inputs.boolean }}"
38 | echo "choice is ${{ github.event.inputs.choice }}"
39 |
--------------------------------------------------------------------------------
/.github/workflows/test-jobs-exit.yml:
--------------------------------------------------------------------------------
1 | # This is a test job to test various filenames for two known error conditions:
2 | # 1) missing the ".md" file extension
3 | # 2) embedded spaced in the filename
4 | # The job will exit and print an error message to the Annotations (Console) so others can diagnose.
5 | #
6 | # Ted Cahall 18May2023
7 | #
8 | name: Test Jobs Exit plus file test
9 |
10 | on:
11 | workflow_dispatch:
12 | inputs:
13 | filename:
14 | type: string
15 | description: Enter a sample filename with or without extension
16 |
17 | jobs:
18 | echofile:
19 | runs-on: ubuntu-latest
20 | steps:
21 | - uses: actions/checkout@v3
22 | - name: echofilename
23 | run: |
24 | echo "The filename is ${{ github.event.inputs.filename }}"
25 |
26 | testfile:
27 | runs-on: ubuntu-latest
28 | needs: echofile
29 | steps:
30 | - name: test-has-md
31 | if: ${{ endsWith(github.event.inputs.filename, '.md') }}
32 | run: |
33 | echo "filename ${{github.event.inputs.filename}} ends with .md"
34 | - name: test-missing-md
35 | if: ${{ !endsWith(github.event.inputs.filename, '.md') }}
36 | uses: actions/github-script@v6
37 | with:
38 | script: |
39 | core.setFailed('filename ${{github.event.inputs.filename}} does not end with .md')
40 | - name: test-spaces
41 | if: ${{ contains(github.event.inputs.filename, ' ') }}
42 | uses: actions/github-script@v6
43 | with:
44 | script: |
45 | core.setFailed('filename \'${{github.event.inputs.filename}}\' cannot contain spaces. Exiting.')
46 |
47 | nextjobstep:
48 | runs-on: ubuntu-latest
49 | needs: testfile
50 | steps:
51 | - name: finaljob
52 | run: |
53 | echo "job completed successfully"
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/.github/workflows/test-reusable-gsheet.yml:
--------------------------------------------------------------------------------
1 | name: Test reusable Gsheet append
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | call-workflow-passing-data:
8 | uses: ./.github/workflows/reusable-gsheet.yml
9 | with:
10 | project_name: test_project
11 | secrets:
12 | gsheet_private_key: ${{ secrets.GHSEET_API_KEY }}
13 |
--------------------------------------------------------------------------------
/.github/workflows/test-reusable-parser.yml:
--------------------------------------------------------------------------------
1 | # Test file to check the reusable parser for the ENF Grant Framework application
2 | # Ted Cahall 25May2022
3 | #
4 | # uses a sample file from the directory
5 | #
6 | name: Test reusable parser
7 |
8 | on:
9 | workflow_dispatch:
10 |
11 | jobs:
12 | call-parser:
13 | uses: ./.github/workflows/reusable-parser.yml
14 | with:
15 | filename: "applications/oci-transaction-lifecycle.md"
16 |
17 | echo-the-returned-fields:
18 | runs-on: ubuntu-latest
19 | needs: call-parser
20 | steps:
21 | - id: echo1
22 | run: echo "project name ${{ needs.call-parser.outputs.project_name }} "
23 | - id: echo2
24 | run: echo "contact name ${{ needs.call-parser.outputs.contact_name }}"
25 | - id: echo3
26 | run: echo "team name ${{ needs.call-parser.outputs.team_name }}"
27 | - id: echo4
28 | run: echo "app_email ${{ needs.call-parser.outputs.app_email }}"
29 | - id: echo5
30 | run: echo "total cost ${{ needs.call-parser.outputs.total_cost }}"
31 |
--------------------------------------------------------------------------------
/.github/workflows/test-ru-check-filename.yml:
--------------------------------------------------------------------------------
1 | # This is a test job to test various filenames for two known error conditions:
2 | # 1) missing the ".md" file extension
3 | # 2) embedded spaced in the filename
4 | # The job will exit and print an error message to the Annotations (Console) so others can diagnose.
5 | #
6 | # Ted Cahall 18May2023
7 | #
8 | name: Test Reusable Check Filename
9 |
10 | on:
11 | workflow_dispatch:
12 | inputs:
13 | filename:
14 | type: string
15 | description: Enter a sample filename with or without extension
16 |
17 | jobs:
18 | echofile:
19 | runs-on: ubuntu-latest
20 | steps:
21 | - uses: actions/checkout@v3
22 | - name: echofilename
23 | run: |
24 | echo "The filename is ${{ github.event.inputs.filename }}"
25 |
26 | testfile:
27 | needs: echofile
28 | uses: ./.github/workflows/ru-check-filename.yml
29 | with:
30 | filename: "${{ github.event.inputs.filename }}"
31 |
32 | job-complete:
33 | runs-on: ubuntu-latest
34 | needs: testfile
35 | steps:
36 | - name: echofilename
37 | run: |
38 | echo "Job Complete. The filename is ${{ github.event.inputs.filename }}"
39 |
40 |
--------------------------------------------------------------------------------
/.github/workflows/test-ru-full-approve-email.yml:
--------------------------------------------------------------------------------
1 | name: Test ru Full Appoval email
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | call-workflow-passing-data:
8 | uses: ./.github/workflows/ru-fully-approved-email.yml
9 | with:
10 | app_email: ted@eosn.foundation
11 | contact_name: Ted Cahall
12 | project_name: Brauhaus Brohaus
13 | team_name: Brauhaus Bros
14 | total_cost: $1,000,000
15 | repo_account: tedcahalleos
16 | secrets:
17 | gmail_password: ${{ secrets.ENFMAILBOT_PASSWORD }}
18 |
--------------------------------------------------------------------------------
/.github/workflows/test-ru-gc-approve-email.yml:
--------------------------------------------------------------------------------
1 | name: Test reusable Committee Appoval email
2 |
3 | on:
4 | workflow_dispatch:
5 |
6 | jobs:
7 | call-workflow-passing-data:
8 | uses: ./.github/workflows/ru-committee-approved-email.yml
9 | with:
10 | app_email: ted.cahall@eosnetwork.com
11 | contact_name: Ted Cahall
12 | project_name: Brauhaus Brohaus
13 | team_name: Brauhaus Bros
14 | total_cost: $1,000,000
15 | repo_account: tedcahalleos
16 | secrets:
17 | gmail_password: ${{ secrets.ENFMAILBOT_PASSWORD }}
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # VSCode
2 | .vscode/*
3 | !.vscode/settings.json
4 | !.vscode/tasks.json
5 | !.vscode/launch.json
6 | !.vscode/extensions.json
7 | *.code-workspace
8 | # Local History for Visual Studio Code
9 | .history/
10 |
11 | # Jetbrains
12 | .idea/
13 | *.iml
14 | *.iws
15 | *.ipr
16 |
--------------------------------------------------------------------------------
/applications/Defibox_vault.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** Vault Protocol
4 | - **Team Name:** Defibox
5 | - **EOS Payment Address:** liquid.defi
6 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 3
7 | - **Pomelo Grant(s):** https://pomelo.io/grants/vault
8 | - **Project is Open-Source:** Yes*
9 | - **Project was part of Token sale:** No
10 | - **Repository where Project resides:** https://github.com/defiboxswap/DefiboxVault-interface
11 | > Please only answer Yes or No to the Open-Source or Token sale questions. Do not explain more on that line. You may delete this line and all lines that begin with `>` from your application.
12 |
13 | ## Contact
14 |
15 | - **Contact Name:** Raven
16 | - **Contact Email:** raven@defibox.io
17 | - **Website:** https://eos.defibox.io/vault
18 |
19 | > ⚠️ *The combination of your GitHub account submitting the application and the EOS account address above will be your unique identifier during the program. Please keep them safe.*
20 |
21 |
22 | ## Open source - Timelines
23 |
24 | **Stage One (completed) "Version Beta v0.1.0"**
25 |
26 | > https://github.com/defiboxswap/DefiboxVault-interface
27 |
28 | - [x] Includes *.hpp interface
29 | - [x] Prebuilt WASM binaries *.wasm & *.abi (with version control)
30 | - [x] General documentation README.md
31 | - [x] Protocol Design (diagram)
32 |
33 | **Stage Two (not completed)**
34 |
35 | - [ ] Protocol Design Definition (translated in English/Korean/Chinese)
36 | - [ ] SC development (production)
37 | - [ ] User documentation
38 | - [ ] Automatic Contracts Tests
39 |
40 | **Stage Three (re-evaluation 2nd Security Audit from Certik) “Version v1.0.0”**
41 |
42 | - [ ] All smart contract source code will be made available (*.cpp)
43 |
44 | ## Project Overview
45 |
46 | > If this is an application for a follow-up grant (the continuation of an earlier, successful ENF grant), please provide name and/or pull request of said grant on the first line of this section.
47 |
48 | ### Overview
49 |
50 | > Please provide the following:
51 |
52 | - **Name:** Vault, a decentralized single-token staking protocol
53 | - **Brief Description:** The Vault protocol is the first single-token lossless yield protocol launched by Defibox. Users can earn corresponding token income by depositing tokens. The assets can be flexibly deposited and withdrawn with open and transparent on chain data. Vault income mainly comes from Defibox protocol income, Yield+ rewards, BP income, REX income, etc. At the same time, in order to improve the utility, the protocol will issue a standard EOS token called sToken, which represents a deposit certificate. sToken can be used in multiple DeFi protocols to obtain more benefits.
54 | - **Relationship to EOSIO:** a public use that provides a variety of staking strategies to EOS users and project teams for more yields. Code will be open source for contribution to EOSIO repository.
55 | - **Reason for Interest:** It provides a variety of staking strategies to EOS users and project teams for more yields. It will brings TVL and income to Defibox team while giving benefits to participants. Ecosystem Boost: attract inactive EOS tokens which will prosper ecosystem
56 |
57 |
58 | ### Ecosystem Fit
59 |
60 | > Help us locate your project in the EOSIO landscape and what problems it tries to solve by answering each of these questions:
61 |
62 | - Where and how does your project fit into the ecosystem?
63 | Users can earn corresponding token income by depositing tokens. The assets can be flexibly deposited and withdrawn with open and transparent on chain data. Vault income mainly comes from Defibox protocol income, Yield+ rewards, BP income, REX income, etc. At the same time, in order to improve the utility, the protocol will issue a standard EOS token called sToken, which represents a deposit certificate. sToken can be used in multiple DeFi protocols to obtain more benefits.
64 |
65 | - Who is your target audience (chain/dapp/wallet/UI developers, designers, your own user base, some dapp's userbase, yourself)?
66 | EOS users including any dapp user and project teams
67 |
68 | - What need(s) does your project meet?
69 | For generating yield and income when holding EOS
70 |
71 | - Are there any other projects similar to yours in the EOSIO ecosystem?
72 | Yes, BSS from Defibox
73 |
74 | - If so, how is your project different?
75 | Vault is widely supporting all the users on EOS while BSS is only available for Defibox users who have BOX tokens.
76 |
77 | ## Team
78 |
79 | ### Team members:16
80 |
81 | - **Team Leader:** Eason
82 |
83 |
84 | ### Legal Structure
85 | - **Registered Legal Entity:** METABOXTECHNOLOGYPTE.LTD.
86 | - **Registered Address:** 160 ROBINSONROAD #14-04 SINGAPORE (068914)
87 |
88 | ### Team Experience
89 |
90 | > Please describe the team's relevant experience. If your project involves development work, we would appreciate it if you singled out a few interesting projects or contributions made by team members in the past. For research-related grants, references to past publications and projects in a related domain are helpful. If you applied for a Pomelo grant in the past, please be sure you listed them in the section above and mention them in detail in this section.
91 | Defibox team is a full-time team that covers front-end, back-end, contract, operations, testing, and business on EOS, WAX and BSC. We have developed Swap, USN, Lending and many other DeFi protocols on EOS. We have been the leading DeFi on EOS in terms of TVL and running safely over 2 years. Besides this, we also co-developed major projects like Yield+ portal, etc.
92 |
93 | > If anyone on your team has applied for a grant at the EOS Network Foundation previously, please list the name of the project and legal entity here.
94 |
95 |
96 | ### Team Org Repos
97 |
98 | https://github.com/defiboxswap
99 |
100 |
101 | > Please also provide the GitHub accounts of all team members. If they contain no activity, references to projects hosted elsewhere or live are also fine.
102 |
103 |
104 |
105 | ### Milestone Summary
106 |
107 | - **Total Estimated Duration:** 3 months (remaining 3 weeks)
108 | - **Full-Time Equivalent (FTE):** 5 FTE
109 | - **Total Costs:** 80,000 USD
110 |
111 | - **Deliverables:**
112 |
113 | | Deliverable | Status | Cost |
114 | | ---------- | :-----------: | :-----------: |
115 | | Protocol Design - Diagram | Completed | $3,000 |
116 | | Protocol Design - Definitions (EN/KO/CN) | Not completed | $5,000 |
117 | | SC development (prototype) | Completed | $12,000 |
118 | | SC development (production) | Not completed | $12,000 |
119 | | Developer documentation | Completed | $4,000 |
120 | | User documentation | Not completed | $6,000 |
121 | | Automatic Contracts Tests | Not completed | $14,000 |
122 | | Certik Audit | Completed | $24,000 |
123 |
124 |
125 | ## Additional Information
126 |
127 | **How did you hear about the Grants Program?** EOS Network Foundation Website
128 |
129 |
130 | ------------------------------------------------------------------------------------------------------------------------------
131 |
132 |
133 |
134 | # Chinese Translation 中文翻译
135 |
136 | - **项目名称:** 金库协议 (Vault)
137 | - **团队名称:** Defibox
138 | - **EOS支付地址:** liquid.defi
139 | - **等级:** 3
140 | - **Pomelo资助:** https://pomelo.io/grants/vault
141 | - **项目是开源的:** 是*
142 | - **项目是代币销售的一部分:** 否
143 | - **项目资源库:** https://github.com/defiboxswap/DefiboxVault-interface
144 |
145 | ### 联系人
146 | - **联系人姓名:** Raven
147 | - **联系邮箱:** raven@defibox.io
148 | - **网站:** https://eos.defibox.io/vault
149 |
150 | ## 开源 - 时间表
151 |
152 | **第一阶段(已完成)“Beta 版 v0.1.0”**
153 |
154 | > https://github.com/defiboxswap/DefiboxVault-interface
155 |
156 | - [x] 包括 *.hpp 接口
157 | - [x] 预构建的 WASM 二进制文件 *.wasm 和 *.abi(带版本控制)
158 | - [x] 通用文档 README.md
159 | - [x] 协议设计(图表)
160 |
161 | **第二阶段(未完成)**
162 |
163 | - [ ] 协议设计定义(翻译成英文/韩文/中文)
164 | - [ ] SC 开发(生产)
165 | - [ ] 用户文档
166 | - [ ] 自动合约测试
167 |
168 | **第三阶段(Certik 重新评估第二次安全审计)“版本 v1.0.0”**
169 |
170 | - [ ] 将提供所有智能合约源代码 (*.cpp)
171 |
172 | ### 项目概况
173 | **概述**
174 | - **名称:金库协议**
175 |
176 | - **简介:** Vault协议是Defibox推出的第一个单代币无损收益协议。用户可以通过存入代币获得相应的代币收益。资产可灵活存取,链上数据公开透明。 Vault收益主要来自Defibox协议收益、Yield+奖励、BP收益、REX收益等。同时,为了提高效用,协议会发行一个标准的EOS代币sToken,代表存单。 sToken 可以在多种 DeFi 协议中使用以获得更多收益。
177 | - **与EOSIO的关系:** 一种公共设施,为 EOS用户和项目团队提供各种质押策略以获得更多收益,并提供开源,这将有助于EOSIO代码资源库。
178 | - **感兴趣的原因:** 它为 EOS 用户和项目团队提供了多种质押策略以获得更多收益。它将为 Defibox 团队带来锁仓量和收入,同时让参与者受益。生态系统提升:吸引不活跃的EOS代币,这将繁荣生态系统。
179 |
180 |
181 | ### 生态系统
182 | - **您的项目在哪里以及如何融入生态系统?**
183 | -用户可以通过存入代币获得相应的代币收益。资产可灵活存取,链上数据公开透明。 Valut收益主要来自Defibox协议收益、Yield+奖励、BP收益、REX收益等。同时,为了提高效用,协议会发行一个标准的EOS代币sToken,代表存单。 sToken可以在多种DeFi协议中使用以获得更多收益。
184 |
185 | - **谁是你的目标受众(链/dapp/钱包/UI 开发人员、设计师、你自己的用户群、一些 dapp 的用户群、你自己)?**
186 | -EOS 用户,包括任何dapp用户和项目团队
187 |
188 | - **您的项目满足什么需求?**
189 | -持有EOS用于产生收益和收入
190 |
191 | - **在EOSIO生态系统中还有其他类似的项目吗?**
192 | -有,类似项目有Defibox的BSS
193 |
194 | - **如果是这样,您的项目有何不同?**
195 | -Vault广泛支持EOS上的所有用户,而BSS仅适用于拥有BOX代币的Defibox用户。
196 |
197 | ### 团队
198 | - **团队成员:** 16
199 | - **团队负责人:** Eason
200 |
201 | **法律结构**
202 | - **注册法律实体:** METABOXTECHNOLOGYPTE.LTD.
203 | - **注册地址:** 160 ROBINSONROAD #14-04 SINGAPORE (068914)
204 |
205 | **团队经验**
206 | -Defibox是一只涵盖EOS、WAX、BSC上前端、后端、合约、运营、测试、商务的专业团队。我们在EOS上开发了Swap、USN、Lending 和许多其他 DeFi 协议。就锁仓量而言,我们一直是EOS上领先的DeFi,并且安全运行了 2 年多。 除此之外,我们还共同开发了Yield+等重大项目。
207 |
208 | **团队组织**
209 | -https://github.com/defiboxswap
210 |
211 |
212 | **里程碑总结**
213 | - **总预计持续时间:**3 个月 (剩余3周)
214 | - **全职当量 (FTE):**5 FTE
215 | - **总成本:** 80,000 美元
216 |
217 | - **可交付成果:**
218 |
219 | | 可交付成果 | 状态 | 成本 |
220 | | ---------- | :-----------: | :-----------: |
221 | | 协议设计 - 原型图 | 完成 | $3,000 |
222 | | 协议设计 - 原型图(中/英/韩) | 未完成 | $5,000 |
223 | | 智能合约开发(原型) | 完成 | $12,000 |
224 | | 智能合约开发(生产) | 未完成 | $12,000 |
225 | | 开发者文档 | 完成 | $4,000 |
226 | | 用户文档 | 未完成 | $6,000 |
227 | | 自动合约测试 | 未完成 | $14,000 |
228 | | Certik审计 | 完成 | $24,000 |
229 |
230 |
231 | **附加信息**
232 |
233 | **您是如何得知赠款计划的?:** EOS网络基金会网站
234 |
235 |
--------------------------------------------------------------------------------
/applications/EOS-Cryptography-Proposal-2-b.md:
--------------------------------------------------------------------------------
1 | # EOS Cryptography Proposal 2 b
2 |
3 | - **Project Name:** EOS Cryptography Proposal 2 b
4 | - **Team Name:** ZeroPass
5 | - **EOS Payment Address:** portxxxxxxxx
6 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 3
7 | - **Pomelo Grant(s)**
8 | https://pomelo.io/grants/ygc2lp2oe
9 | https://pomelo.io/grants/bot4eden
10 | - **Project is Open-Source:** Yes
11 | - **Project was part of Token sale:** No
12 | - **Repository where Project resides:** https://github.com/ZeroPass/ack
13 |
14 |
15 | ## Contact
16 |
17 | - **Contact Name:** Luka Percic
18 | - **Contact Email:** zeropass@pm.me
19 | - **Website:** [port.link](https://port.link/)
20 |
21 | ## Project Overview
22 |
23 |
24 | ### Overview
25 | We are exploring ways to introduce new signature verification algorithms to EOS smart contracts, including RSA and algorithms based on elliptic curves. There are various approaches to achieve this, and our research of various libraries in the [eos-cryptography-proposal](https://github.com/lukapercic/grant-framework/blob/main/applications/eos-cryptography-proposal.md) led us to implement some of the algorithms in our own ACK cryptographic library.
26 | Currently, signature verification using EC P-256 takes approximately ~7 ms in optimized compilation (OC). For Brainpool curves, we anticipate the verification time to exceed 10 ms, particularly for the 512-bit curve(s). Through the optimizations proposed in this grant, we aim to extract more performance and significantly reduce the verification times. Additionally, we are proposing implementation of ECDSA key recovery algorithm, new elliptic curves, and the SHA-384 hashing algorithm into the ACK library, making them available for EOS smart contracts.
27 |
28 | ### Project Details
29 |
30 | We have implemented [Antelope Cryptography Kits](https://github.com/ZeroPass/ack), a cryptographic library for the Antelope blockchain. This library supports basic elliptic curve mathematical operations, certain modular arithmetics, EC signature verification algorithms (P-256 and secp256k1), and the fastest RSA signature verification implementation for EOSIO. It can perform RSA-4096 verifications on the mainnet today. Furthermore, we have a working [PoC Port smart contract](https://github.com/ZeroPass/eosio-port). The smart contract can already do passive and active attestation of biometric passports which uses RSA PKCS 1.5 signature scheme.
31 |
32 | This proposal aims to optimize the current EC implementation in the ACK library and accelerate EC-based signature verification algorithms. Specifically, we intend to introduce another coordinate system, such as the Jacobian system or the mixed Jacobian/Chudnovsky coordinate system, with the goal of reducing the number of required EC division operations. This enhancement is expected to significantly boost performance.
33 |
34 | Furthermore, we are proposing the implementation of an ECDSA key recovery algorithm, which would reduce the need for the full public key during verification. Instead for example, a key hash could be utilized to verify the EC signature.
35 |
36 | Moreover, this proposal also aims to introduce widely used elliptic curves and the SHA-384 hashing algorithm (commonly used with some EC, such as P-384).
37 |
38 | ### Ecosystem Fit
39 |
40 | Port can be used as a better version of (anonymous) identity on the blockchain. Its open-source and open-access nature allows any dapp to plug into it, and profit from the infrastructure it provides. It fixes the issue with DIDs, where self-sovereign identity in the practice always gets implemented as one KYC provider signing the attestations. Here the passport proves authenticity itself, cutting the middle man and cutting friction associated with it. I.e.: removing the costs and needed trust (don't be evil, versus can't be evil). Adding different signature verification algorithms can serve as crypto primitive for Antelope, and upon which our contract can be built on. To expand the use cases we are mainly focusing on making the Port a native way for EOS to solve Sybil protection, Identity, and multiple levels of verifications.
41 |
42 | Right now, there are projects such as Pomelo and EOS Support integrating Port to help prevent Sybil attacks for their platforms (we would like to move it fully on-chain later). These signature verification algorithms will also benefit Randall Roland’s (CEO EOS Support) proposal that seeks to improve the user onboarding process of the RespectOS software. If successful, it might be the basis (or part of) the identity of the future EOS-based DAOs. We have been contacted by different NFT projects looking to do wide NFT drops, without the claimed abuse they detect right now. There are nice humanitarian applications, for instance, somebody can start an easy project to provide UBI-style donations to people with passports and IDs from affected countries. We are also defining a new concept of Escape Tokens, that allows governance and distribution tokens to escape the main liquidity pair, and when thriving, its value overflow to Port identities in (UBI style).
43 |
44 | In short; it is a real ID/Sybil building block that will enable many projects to plug and play.
45 |
46 | ## Team
47 |
48 | ### Team members
49 |
50 | - Luka Percic
51 | - Crt Vavros
52 | - Nejc Skerjanc
53 |
54 | ### Legal Structure
55 | - **Registered Legal Entity:** Žerjal IT, d.o.o.
56 | - **Registered Address:** Brje pri Komnu 40, 6223 Komen, Slovenia
57 |
58 | ### Team Experience
59 |
60 | ZeroPass is a team of 3 from Slovenia (EU) with product/developers/cryptography skills.
61 | Our most notable accomplishments in EOS community are:
62 |
63 | - High severity [bug discovery in EOSIO node](https://b1.com/press/eosio-ram-resource-exploit-patch/) and disclosed through B1 hacker one bounty.
64 | - EOS smart contract for BPs rotation.
65 | - EOS smart contract for RAM resource market (RAM token).
66 | - Providing bug fixes and patches for EOSIO CDT and EOSIO node software.
67 | - 3rd place with [ROW project](https://github.com/ZeroPass/row.contract) at B1 hackathon / Google Cloud Platform, for proving WebAuthn to be fully done on-chain.
68 | - [ack](https://github.com/ZeroPass/ack) - ECC primitives and ECDSA verification algorithms, RSA & Keccak hash algorithms cryptography library for Antelope smart contract.
69 |
70 | ### Team Code Repos
71 | - https://github.com/ZeroPass
72 | - https://github.com/ZeroPass/ack
73 |
74 | ### Team Members GitHub Accounts
75 | - https://github.com/smlu
76 | - https://github.com/nejc-skerjanc
77 | - https://github.com/lukapercic
78 |
79 | ### Team LinkedIn Profiles
80 | - https://www.linkedin.com/in/nejcskerjanc/
81 | - https://www.linkedin.com/in/crt-vavros/
82 | - https://www.linkedin.com/in/lukapercic/
83 |
84 | ## Development Status
85 |
86 | **RSA PoC**
87 | We painstakingly built, optimized, tested and deployed on the testnet to make it the fastest wasm RSA implementation in eosio. For example, it can verify RSA 4096 bit keys consistently under 10ms (3ms on average, much faster for the more standard RSA 2048 bit).
88 | - https://github.com/ZeroPass/ack
89 |
90 |
91 | Our team built and deployed Port itself (server solution) which acts as our beta version for what we are trying to move on the chain. In addition, we already experimented and built Port PoC smart contract for passport attestation on-chain (RSA PKCS 1.5 PKI only).
92 |
93 | ## Development Roadmap
94 |
95 | - **Total Estimated Duration:** 19 weeks
96 | - **Full-Time Equivalent (FTE):** 57 FTE weeks
97 | - **Total Costs:** $87,000
98 |
99 | ### Milestone 1 - Optimization
100 | - **Estimated duration:** 12 weeks
101 | - **FTE:** 36 FTE weeks
102 | - **Costs:** $55,000 USD
103 |
104 | | Number | Deliverable | Specification |
105 | | -----: | ----------- | ------------- |
106 | | 0a. | License | MIT |
107 | | 0b. | Documentation | Documentation and step-by-step guide will be updated in [README.md](https://github.com/ZeroPass/ack/blob/master/README.md). |
108 | | 0c. | Testing Guide | [In the guide](https://github.com/ZeroPass/eosio.ck/blob/master/README.md#algorithm-testing=), we will describe how to run those tests. |
109 | | 0d. | Running it | We will re-deploy on the [Jungle 4](https://github.com/ZeroPass/ack/blob/master/README.md#testnet).|
110 | | 1. | Antelope SDK library | Optimized EC arithmetic by using another coordinate system, such as the Jacobian coordinate system or the mixed Jacobian/Chudnovsky system.
111 | | 2. | Antelope SDK library | Sha-384 |
112 |
113 | Preliminary tests of using Jacobian coordinate system suggest a ~2-fold increase in speed using such a system.
114 |
115 | ### Milestone 2 - Adding Curves
116 | - **Estimated duration:** 7 weeks
117 | - **FTE:** 21 FTE weeks
118 | - **Costs:** $32,000 USD
119 |
120 | | Number | Deliverable | Specification |
121 | | -----: | ----------- | ------------- |
122 | | 0a. | License | MIT |
123 | | 0b. | Documentation | Documentation and step-by-step guide will be updated in [README.md](https://github.com/ZeroPass/ack/blob/master/README.md). |
124 | | 0c. | Testing Guide | [In the guide](https://github.com/ZeroPass/eosio.ck/blob/master/README.md#algorithm-testing=), we will describe how to run those tests. |
125 | | 0d. | Running it | We will re-deploy on the [Jungle 4](https://github.com/ZeroPass/ack/blob/master/README.md#testnet). |
126 | | 1. | Antelope SDK library | Implementation of P-384, P-512 NIST curves |
127 | | 2. | Antelope SDK library | Implementation of brainpoolP256r1, brainpoolP320r1, brainpoolP384r1, brainpoolP512r1 Brainpool curves |
128 | | 3. | Antelope SDK library | Implementing ECDSA key recovery from signature |
129 |
130 |
131 |
132 | ## Future Plans
133 | **Expected Part 3 of the proposal**
134 | - Implementation of EdDSA,
135 | - Writing a "system" contract so any outside contracts can consume it. That way BPs can deploy it on eosio.* account to enable Optimized Compilation (OC) in the EOS public chain.
136 |
137 | **Pending additional research;**
138 | Possibility of implementation for ECC curve alt_bn128 curve which is widely available on other major blockchain platforms like EVM and Polkadot.
139 |
140 | We are planning to rebuild [Port](https://port.link/) on-chain and this proposal provides the crypto primitives needed to begin the process.
141 | Our RSA PKCS 1.5 implementation is also already used in another project: [ROW](https://row.link/), which hopefully will one day become a full-fledged WebAuthn signer.
142 | In the more distant future, we are also planning to build a dapp on top of these projects, using both on-chain Port and ROW projects as building blocks.
143 |
144 | ## Additional Information
145 |
146 | **How did you hear about the Grants Program?**
147 | Telegram
148 |
149 | We also invite all to donate on Pomelo for our current [implementation of Port](https://pomelo.io/grants/ygc2lp2oe) and try increasing your Pomelo [Trust Bonus](https://pomelo.io/profile?tab=trust).
150 |
--------------------------------------------------------------------------------
/applications/EVMNS_Audit_Assistance.md:
--------------------------------------------------------------------------------
1 |
2 | # EOS Network Foundation Grant Proposal
3 | - **Project Name:** Security Audit Assistance for EVMNS
4 | - **Team Name:** EVMNS Labs
5 | - **EOS Payment Address:** evmnsdomains
6 | - **Level:** 2
7 | - **Pomelo Grant(s):** https://pomelo.io/grants/evmns
8 | - **Project is Open-Source:** Yes
9 | - **Project was part of Token sale:** No
10 | - **Repository where Project resides:** https://github.com/evmns/EVMNS
11 |
12 | # Contact
13 | - **Contact Name:** Harry Davis
14 | - **Contact Email:** evmns_manager@outlook.com
15 | - **Website:** https://evmns.space/
16 |
17 | # Project Overview
18 | **EVMNS (EOS EVM Name Service) is a distributed, open and extensible multi-chain DID domain naming system built on EOS EVM,** relying on the high performance, security and reliability of EOS to better and seamlessly connect people, information, assets, dApps, etc. in the WEB3 world.
19 | EVMNS domains use the ERC721 protocol standard with .evm as the domain suffix, such as abc.evm, 123.evm, jack.evm, etc., to map human-readable and easy-to-remember names with all kinds of content at the same time, including but not limited to EVM addresses, EOS addresses, other cryptocurrency addresses, content hashes, URLs, and metadata.
20 | ### Overview
21 | - **Name:** EVMNS (EOS EVM Name Service)
22 | - **Brief Description:** A distributed, open and extensible multi-chain DID domain naming system built on EOS EVM.
23 | - **Relationship to EOSIO:** EVMNS's multi-chain layout will bring more new users to EOS EVM, because it helps users of other chains to know and understand EOS EVM, and to enjoy the unique advantages of EOS EVM (industry-leading transaction speeds, high TPS and low transaction cost), and help EOS EVM to expand its positive influence in the WEB3 world.
24 | - **Reason for Interest:** WEB3 trend is developing rapidly, a set of DID domain naming system with perfect function, multi-chain layout and good user experience is the "identity infrastructure" of WEB3 application, and it can be confirmed that DID is like an avatar, which is the basic and essential element and the identity of WEB3 world.
25 |
26 | # Application Description
27 | The development work for EVMNS has been mostly completed, and We are currently conducting in-depth internal testing and debugging. We believe that the service will be officially launched shortly, and we are excited to share EVMNS with the community.
28 | Before the official release, we need to conduct a comprehensive security audit of the smart contract to ensure that there are no security issues. **However, due to the greater complexity and larger code volume of the smart contract than our team had anticipated, the corresponding security audit costs have exceeded our budget by a significant amount, making it an enormous burden for us, even to the point of being unbearable.**
29 | Therefore, we sincerely request assistance from the EOS Network Foundation to help us complete this important security audit work.
30 | More details are as follows:
31 | 1. Overview of Smart Contract Functions
32 | **Domain Registration:** Users can register unique domain names on EVMNS.
33 | **Domain Management:** Users can manage their registered domain names, such as changing the profile of the domain, changing the resolver, or modifying the TLS certificate.
34 | **Domain Transfer:** Users can transfer their registered domain names to others.
35 | **Resolver Registration:** Users can select a resolver to resolve the domain name, and different resolvers support different domain name functions.
36 | **Domain Resolution:** Users/third-party dApps can query the profile content of EVMNS domain names, such as whether an EVMNS domain name is associated with an EOS EVM address.
37 |
38 | 2. Total lines of code in smart contract: about **9300 lines.**
39 |
40 | 3. Smart Contract Code repository: https://github.com/evmns/evmns-contracts
41 |
42 | 4. **If not audited, potential security risks may include, but are not limited to:** Mass registration of domain names, even those that are not yet open for registration; Control of domain name permissions, which may result in inability to manage or transfer domains; Domain name hijacking, which may result in inability to resolve to the correct wallet address, affecting users' transfer and payment activities.
43 |
44 | 5. EOS Network Foundation funding proposal for EVMNS: https://github.com/eosnetworkfoundation/grant-framework/pull/106
45 |
46 | # Team
47 | ### Team members
48 | - **Team Leader: Harry Davis**
49 | - Allen Harris
50 | - Frank Lee
51 | ### Legal Structure
52 | - **Registered Legal Entity:** Jump Dream PTE. LTD.
53 | - **Registered Address:** 5001 Beach Road#07-37, Golden Mile Complex, Singapore 199588
54 | ### Team Experience
55 | The core members of EVMNS Labs are the first ecological participants of EOS, who experienced and witnessed the launch of EOS and are still deeply involved in the ecological construction.
56 | Team members have participated in several medium to large scale EOS projects before and after, and also developed ENS (Ethereum Name Service) related domain Exchange, domain bulk registry protocol, etc. We are not only EOS loyalists, but also ENS heavy players, with good understanding of DID domain naming system.
57 | ### Team Member Repos
58 | - Allen Harris, https://github.com/sutaiyi
59 | - Frank Lee, https://github.com/chenminmin4
60 |
61 | # Development Roadmap
62 | ### Milestone Summary
63 | - **Total Estimated Duration:** 4 weeks
64 | - **Full-Time Equivalent (FTE):** 2 FTE
65 | - **Total Costs:** 30,000 USD
66 |
67 | ### Milestone 1 - Security audit completed
68 | - **Estimated duration:** 4 weeks
69 | - **FTE:** 2
70 | - **Costs:** 30,000 USD
71 |
72 | | ID | Deliverable |Specification|
73 | | ------------ | ------------ | ------------ |
74 | | 0a. |License | MIT License |
75 | | 0b. | Documentation | Provide and update documentation for this milestone in the form of instruction files and examples in the repository, provide guidance in the Readme file, and more in-depth guidance in our articles. |
76 | | 0c. | Testing Guide | We will clearly state the audit report verification method provided by the security audit company to facilitate the verification of the authenticity of the audit report. |
77 | | 1 | Audit Report | After the security company completes the smart contract audit, a comprehensive audit report will be issued. |
78 |
79 | # Additional Information
80 | ### How did you hear about the Grants Program?
81 | We learned of the program by following announcements on ENF’s Twitter and other channels.
82 |
--------------------------------------------------------------------------------
/applications/alphaday.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** Alphaday
4 | - **Team Name:** Alphabox Solutions Pte. Ltd.
5 | - **EOS Payment Address:** depositpanda Memo: ctopjucyhyvhhbxbm55ygtqckitg9qdp
6 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 1
7 | - **Pomelo Grant(s):** N/A
8 | - **Project is Open-Source:** Yes
9 | - **Project was part of Token sale:** No
10 | - **Repository where Project resides:** https://github.com/AlphadayHQ
11 |
12 | ## Contact
13 |
14 | - **Contact Name:** Deniz Omer
15 | - **Contact Email:** deniz@alphaday.com
16 | - **Website:** https://alphaday.com/
17 |
18 | ## Project Overview
19 |
20 | ### Overview
21 |
22 | > Please provide the following:
23 |
24 | - **Name:** Alphaday
25 | - **Brief Description:** Alphaday is a powerful crypto workflow aggregator that pulls in news, on-chain data, social media, web3 services and much more into one customizable UI.
26 | - **Relationship to EOS Network / Antelope:** As a data aggregator community dashboard, Alphaday is blockchain-agnostic.
27 | - **Reason for Interest:** Our app is designed to generate interest, increase user engagement & retention, and educate new users with regard to cryptocurrency projects and the industry in general.
28 |
29 | ### Project Details
30 |
31 | Our product is already live at : https://app.alphaday.com
32 |
33 | Alphaday is a React-Typescript dashboard on the frontend using a Python-Django backend built on distributed infrastructure with Postgres and Redis Databases.
34 |
35 | Pitch Deck: https://bit.ly/Alphadaydeck
36 |
37 | Github: https://github.com/AlphadayHQ
38 |
39 | ### Ecosystem Fit
40 |
41 | Project fit: Social - A data aggregator as a Community dashboard.
42 |
43 | Target audience: We aim to create a dashboard that serves any EOS Network user, holders, developers, VCs, and pretty much any stakeholder whether they are completely new to the EOS Network ecosystem or an expert.
44 |
45 | Our dashboard aims to provide a single end-point from which users can consume all the information on a project they could possibly want. In this case, we would like to build a EOS Network Community Dashboard that aggregates all the discussions, talking points, narratives, events, metrics, official announcements and much much more into one single dashboard. With one glance at this dashboard EOS Network community members would have a top-down view of what is happening across the entire EOS Network ecosystem. From this view they could then jump deeper into their areas of interest (i.e. devs to dev documentation, EOS holders to twitter and reddit discussions, investors to on-chain metrics across both EOS Network’s own pages and to third-party data providers)
46 |
47 | Alphaday has no direct competitors as it aims to recreate a crypto user’s daily workflow (i.e. their general experience) inside a single dashboard. i.e. if a EOS Network ecosystem participant wakes up, checks their portfolio, reads twitter, browses the EOS Network governance forum, listens to the latest podcast featuring EOS Network team members, does a bit of on-chain research, instead of having this workflow spread across a dozen tabs, it’s all available within a single screen on Alphaday.
48 |
49 | ## Team
50 |
51 | ### Team members
52 |
53 | **Team Leader:** Deniz Omer
54 |
55 | Team Members:
56 |
57 | Devs:
58 | Felipe Faraggi \
59 | Charles Nwankwo \
60 | Jonathan Irhodia \
61 | Vicente Almonacid \
62 | Pablo Palomo \
63 | Gideon Anyalewechi \
64 | Content/Ops: \
65 | Paris Charanas Giannakou \
66 | Mikael Hagopian
67 |
68 | ### Legal Structure
69 | - **Registered Legal Entity:** Alphabox Solutions Pte. Ltd.
70 | - **Registered Address:** North Canal Road, Singapore, 059294 Singapore
71 |
72 | ### Team Experience
73 |
74 | The founder, Deniz Omer, has been involved in the Ethereum space since early 2016 and joined Kyber Network in 2017 as Head of Ecosystem Growth before quitting to start Alphaday full-time in 2021. Previously he worked at Thomson Reuters for a decade building financial products that rivaled the Bloomberg Terminal. He is currently also a Venture Partner at IOSG.VC.
75 |
76 | His co-founder, Felipe, has also been involved in Ethereum since 2016 and was a Developer Advocate at Pegasys and Consensys before quitting to work full time on Alphaday.
77 |
78 | Alphaday’s third co-founder is DeFiDude who used to be a community manager at both Aave and Kyber Network before co-founding Alphaday.
79 |
80 | ### Team Org Repos
81 |
82 | https://github.com/AlphadayHQ
83 |
84 | ### Team Member Repos
85 |
86 | https://github.com/faraggi \
87 | https://github.com/ppalomo \
88 | https://github.com/v-almonacid \
89 | https://github.com/elcharitas \
90 | https://github.com/Xavier-Charles \
91 | https://github.com/getgiddy
92 |
93 | ### Team LinkedIn Profiles
94 |
95 | https://www.linkedin.com/in/denizomer/ \
96 | https://www.linkedin.com/in/faraggi/ \
97 | https://www.linkedin.com/in/vicente-almonacid/ \
98 | https://www.linkedin.com/in/getgiddy/ \
99 | https://www.linkedin.com/in/pablo-palomo-07127711/ \
100 | https://linkedin.com/in/elcharitas \
101 | https://www.linkedin.com/in/charles-nwankwo-01/ \
102 | https://www.linkedin.com/in/paris-charanas-giannakou-788386231/ \
103 | https://www.linkedin.com/in/mikael-h-87bb4ba4/
104 |
105 | ## Development Status
106 |
107 | Our app is already live at: https://app.alphaday.com/
108 |
109 | We have already signed several agreements with other projects and are currently working on releasing their dashboards. You can already see a few of these dashboards live in the web-app (e.g. Verasity, Impossible Finance, Arbitrum) and several more are on their way within the next month.
110 |
111 | Besides building dashboards for specific projects, we are simultaneously working on developing and improving our app’s features, widgets, content, and performance.
112 |
113 | ## Development Roadmap
114 |
115 | ### Milestone 1 — Development and Deployment of Initial Dashboard
116 |
117 | **Estimated Duration:** 2 months \
118 | **FTE:** 0.5 \
119 | **Costs:** 1,500 USD
120 |
121 | We would like to create a EOS Network ecosystem dashboard that aggregates the following information into a single community dashboard:
122 |
123 | | Number | Deliverable | Specification |
124 | | -----: | ----------- | ------------- |
125 | | 1. | Blog | The latest EOS Network official announcements and blog post content |
126 | | 2. | News | A feed of all news mentions of EOS Network from coindesk, cointelegraph and 20+ other news sources aggregated from across the internet. |
127 | | 3. | Calendar | A calendar containing all EOS Network events including EOS Network Governance votes, meetups, hackathons with EOS Network bounties, AMAs. |
128 | | 4. | Podcasts | Podcast feed containing the latest appearances and interviews given by EOS Network team members. |
129 | | 5. | Videos | Youtube stream containing educational EOS Network content. |
130 | | 6. | Documentation | EOS Documentation directory. |
131 | | 7. | Social Media | Twitter, Discord, & Telegram Integration to show a feed of latest discussions. |
132 | | 8. | Other Info | FAQ, Technical Whitepaper, EOS tokenomics information. |
133 | | 9. | Devs & Builders | Grants and Bounties links with descriptions and other resources to guide devs and builders. |
134 | | 10. | Ecosystem & App | Links and descriptions of Dapps and other platforms within the EOS ecosystem. |
135 |
136 | We should be able to build and deploy the above dashboard within 2 months so if this grant is approved we want to launch the EOS Network dashboard by April 2023.
137 |
138 | Thereafter, we will maintain & curate the dashboard on a daily basis as well as improve the functionality and availability of features in our application as a whole.
139 |
140 | Please note that we can add and remove widgets and/or contents as required by your team. For a brief idea about other widgets and data that we can include, please visit our Live product page (Beta) at: https://app.alphaday.com/
141 |
142 | ### Milestone 2 — Maintenance
143 |
144 | **Estimated Duration:** 12 months continuous \
145 | **FTE:** 0.5 \
146 | **Costs:** 1,500 USD
147 |
148 | | 1. | Maintenance & Curation | Continuous daily maintenance and curation of content of the dashboard by a specialist over a year. |
149 |
150 | ### Milestone Summary
151 |
152 | - **Total Estimated Duration:** 2 months for deployment, 12 months of maintenance.
153 | - **Full-Time Equivalent (FTE):** 1 FTE
154 | - **Total Costs:** 3,000 USD
155 |
156 | ## Future Plans
157 |
158 | In addition to building the EOS Network dashboard, we will be constantly monitoring and improving existing features on Alphaday and adding new widgets and features as we go along. These enhancements will automatically apply to the EOS Dashboard.
159 |
160 | In terms of numbers:
161 | We’ve been growing MAU 40% month-on-month with minimal marketing as we wanted to build a solid and stable product before scaling up our marketing but we expect to reach 10k MAU by March and overall our goal is to 10x our MAU every year.
162 |
163 | Considering EOSIO has 255K twitter followers and using this as a very crude proxy for community size, we would consider it a success if we could serve at least 1% of them on a monthly basis (2.55K MAU).
164 |
165 | For further details on our roadmap please view our Pitch Deck: https://bit.ly/Alphadaydeck
166 |
167 | ## Additional Information
168 |
169 | **How did you hear about the Grants Program?**
170 | EOS Network Foundation Website
171 |
172 | If we get this grant, we will start working on the board immediately and we should have it ready within 2 months. Once we’ve launched the board, we will do user interviews and feedback sessions to tune the dashboard. We will continue this process of iterating, deploying, and collecting feedback continuously to build a dashboard that EOS stakeholders truly love to use.
173 |
174 | We are in the process of applying for grants to further develop our app and dashboard. More than a dozen projects have already approved to fund us and we are currently in the process of building or have already released their dashboards. You can see the ones already released at https://app.alphaday.com/ to get a brief idea of how “https://app.alphaday.com/b/eos” would look.
175 |
--------------------------------------------------------------------------------
/applications/challengedac.md:
--------------------------------------------------------------------------------
1 |
2 | # EOS Network Foundation Grant Proposal
3 |
4 |
5 | - **Project Name:** ChallengeDac
6 | - **Team Name:** ChallengeDac
7 | - **EOS Payment Address:** g4ztaojzgage
8 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 2
9 | - **Pomelo Grant(s):** [https://pomelo.io/grants/chlcontent](https://pomelo.io/grants/chlcontent)
10 | - **Project is Open-Source:** Yes
11 | - **Project was part of Token sale:** No
12 | - **Repository where Project resides:** [https://github.com/ChallengeDAC](https://github.com/ChallengeDAC)
13 |
14 | ## Contact
15 |
16 | - **Contact Name:** Chase Eskam
17 | - **Contact Email:** [chaceaeskam@gmail.com](mailto:chaceaeskam@gmail.com)
18 | - **Website:** [https://www.challengedapp.io/](https://www.challengedapp.io/)
19 |
20 |
21 | ## Project Overview
22 |
23 |
24 |
25 | ### Overview
26 |
27 | ChallengeDac is a decentralized autonomous organization (DAO) built on the EOS and Telos blockchain that aims to provide a platform for people to create, discover, and participate in Challenges. ChallengeDAC allows users to create Challenges in a variety of categories, such as education, fitness, and entertainment, and to set the terms and conditions for participation. Other users can then discover and participate in these challenges, earning rewards for successfully completing them. ChallengeDAC uses smart contracts to enforce the rules of each challenge and to automate the distribution of rewards. CurrentlychallengeDac has a user's base of over 20,000.
28 |
29 | ### Project Details
30 |
31 | In this proposal, we suggest making our Blockchain technology a public EOS Client Dart SDK to expand the use of EOS through organizations or individuals who want to utilize our technology for making the transfer, withdrawing, and tipping smart contracts, its license would be [MIT](https://opensource.org/license/mit/). This not only benefits those who want to use these unique features but for our application stability, this open-source projects will be maintained frequently to increase stability and reliability. After that, we recommend the creation of 5,000 new, unique pieces of EOS-related content. We plan on achieving this by creating 1000-3000 new custom Challenges that will be posted on the ChallengeDac platform asking users to create their own new unique EOS-related content and rewarding 10-20 users per smart contract Challenge posted. The plan will be to Post Challenges that will reward users for creating blogs, videos, tweets, and other media to help educate the public about EOS and post the content on major social platforms like Snapchat, Facebook, Instagram, and Twitter. Afterward users can share the links of the EOS related content posts they made on the ChallengeDac Platform and be able to collect their ChallengeDac rewards. This will also help grow and accelerate the adoption of ChallengeDac which is one of the most used EOS dapp.
32 |
33 | ### Ecosystem Fit
34 |
35 | ChallengeDapp is a decentralized application (dApp) that runs on the EOS blockchain and it is designed to allow users to create and participate in a variety of challenges. ChallengeDapp utilizes the EOS blockchain to provide a decentralized and trustless platform where users can create and participate in Challenges. The use of smart contracts on the EOS blockchain ensures that the rules of each challenge are transparent and immutable and that the rewards for winning a challenge are automatically distributed to the winners. ChallengeDapp also utilizes the EOS token on the platform. Users can use EOS tokens to create new challenges, participate in existing challenges, and receive rewards for winning challenges. This dApp fits into the EOS ecosystem by providing a platform that can be used to create and participate in various challenges, and by incentivizing users to engage with the EOS blockchain and use EOS tokens. Additionally, it offers entertainment and educational opportunities for users and it can be seen as a way to increase the adoption and usage of the EOS blockchain.
36 |
37 | ## Team
38 |
39 | ### Team members
40 |
41 | - **Team Leader:** Chace Eskam
42 | - **Co-founder:** Kent Eskam
43 | - **System Engineer:** Phung Ta
44 |
45 | ### Legal Structure
46 |
47 | - **Registered Legal Entity:** CALI-PUMP LLC
48 | - **Registered Address:** 300 Carlsbad Village Dr, Carlsbad, CA 92008
49 |
50 | ### Team Experience
51 |
52 |
53 | Chace Eskam: Has spent a number of years studying the social and economic impact of the blockchain. Chace has given talks about blockchains future implications on business at W.P Carey school of business as early as February 2016. Before devoting himself fully to blockchain Chace spent a number of years working in the fintech industry at the Nations first digital bank.
54 |
55 | ### Team Org Repos
56 |
57 | - https://github.com/ChallengeDAC
58 | - https://github.com/ChallengeDAC/dacdart
59 |
60 | ## Development Roadmap
61 |
62 | ### Milestone Summary
63 |
64 | - **Total Estimated Duration:** 6 months
65 | - **Full-Time Equivalent (FTE):** 1 FTE
66 | - **Total Costs:** 18,500 USD
67 |
68 | ### Milestone 1 - Develop DacDart, a decentralized SDK, using EOS based blockchain ECC, and EOS Node API to hook to ChallengeDac application blocks to view accounts, performs smart contracts, and manage EOS private key
69 |
70 | - **Estimated duration:** 2 months
71 | - **FTE:** 1
72 | - **Costs:** 9,000 USD
73 |
74 | | ID | Deliverable | Specification |
75 | | --- | ----------- | ------------- |
76 | | 1. | Refactor EOS based blockchain ECC (Elliptic curve cryptography), and EOS get_table_rows API to DacDart module | $7,000 is added to the development of refactoring the based blockchain ECC (Elliptic curve cryptography), and EOS get_table_rows API to a seperate module written in Dart |
77 | | 2. | Quality Assurance and Documentation | $2,000 to test the code reliability and stability of the SDK in different platforms |
78 |
79 | ### Milestone 2 - Launch the first marketing campaign to have the ChallengeDac community creates the quality EOS public organic contents
80 |
81 | - **Estimated duration:** 2 months
82 | - **FTE:** 1
83 | - **Costs:** 5,000 USD
84 |
85 | | ID | Deliverable | Specification |
86 | | --- | ----------- | ------------- |
87 | | 1. | Reward Pool Marketing Campaign No.1 | $2,000 is added to the reward pool for content creator and user support cost |
88 | | 2. | Marketing Campaign No.1 | $3,000 is added to launch a campaign to have the ChallengeDac community creates the first 2,000 pieces of new EOS public organic contents |
89 |
90 |
91 | ### Milestone 3 - Launch a campaign to improve the app contents and get new users
92 |
93 | - **Estimated Duration:** 2 months
94 | - **FTE:** 1
95 | - **Costs:** 4,500 USD
96 |
97 | | ID | Deliverable | Specification |
98 | | --- | ----------- | ------------- |
99 | | 1. | Milestone 2 new user cost | $1,500 is added to the cost of reward to users who inviting new users |
100 | | 2. | Reward Pool Marketing Campaign No.2 | $1,500 is added to the reward pool for content creator and user support cost |
101 | | 3. | Marketing Campaign No.2 | $1,500 is added to launch a campaign to have the ChallengeDac community creates another 1,000 pieces of new EOS public organic contents |
102 |
103 |
104 | #### Total cost $18,500
105 |
106 |
107 | ## Additional Information
108 |
109 | **How did you hear about the Grants Program?** Personal recommendation
110 |
--------------------------------------------------------------------------------
/applications/chronicle.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** Chronicle
4 |
5 | - **Team Name:** Zaisan BV
6 |
7 | - **EOS Payment Address:** zaisanfinanc
8 |
9 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 2
10 |
11 | - **Pomelo Grant(s):** https://pomelo.io/grants/accounting
12 |
13 | - **Project was part of Token sale:** No
14 |
15 | - **Repository where Project resides:** https://github.com/EOSChronicleProject/eos-chronicle
16 |
17 |
18 | ## Contact
19 |
20 | - **Contact Name:** Daniel Liven
21 |
22 | - **Contact Email:** daniel@zaisan.io
23 |
24 | - **Website:** https://zaisan.io/about/
25 |
26 |
27 | ## Project Overview
28 |
29 | [Chronicle](https://github.com/EOSChronicleProject/eos-chronicle) is a
30 | software package designed for processing the EOSIO state history. It
31 | connects to a state history EOSIO node and exports the historical data
32 | in a JSON object stream to its consumer. The software has been in use
33 | in many different projects on public and private EOSIO blockchains.
34 |
35 | The development has started after a crowdfunding round on EOS in
36 | Autumn 2018. 15 different teams, among which were EOS block producers,
37 | wallets, and software companies, have collected an equivalent of about
38 | USD 30,000 into a multisig EOS account. By the time the first release
39 | was ready for shipment, the EOS amount was equivalent to approximately
40 | USD 15,000. Later on, several public grants on Telos, and a few
41 | commercial projects, have supported further development.
42 |
43 | The ["accounting" Pomelo grant](https://pomelo.io/grants/accounting)
44 | has partially contributed to Chronicle software support and
45 | development, although most of its funds went into hosting expenses.
46 |
47 | This grant application will add a number of demanded features and
48 | secure the future of Chronicle.
49 |
50 | The original author of the software, working under the "cc32d9"
51 | pseudonym, is part of Zaisan as a senior consultant.
52 |
53 |
54 | ### Overview
55 |
56 | - **Name:** Chronicle development.
57 |
58 | - **Brief Description:** New features and software maintenance of Chronicle software.
59 |
60 | - **Relationship to EOSIO:** Chronicle is one of the popular readers for EOSIO state history data.
61 |
62 | - **Reason for Interest:** cc32d9 is the original author and active supporter of the software.
63 |
64 |
65 | ### Project Details
66 |
67 | The project will deliver a few long-waited enhancements, and a number
68 | of new features.
69 |
70 | Software maintenance tasks:
71 |
72 | - Update Chronicle to work with latest releases of dependency
73 | libraries (Boost.org and EOSIO/Mandel libraries).
74 |
75 | - Build scripts for Ubuntu binary packages; publish the binary packages.
76 |
77 | - Update the Chronicle Tutorial to reflect new changes.
78 |
79 | - Software support and maintenance during 2022.
80 |
81 | New features:
82 |
83 | - JavaScript NPM for Chronicle consumer: redesign the asynchronous mode.
84 |
85 | - Research and look for alternative ways to store Chronicle data (currently EOSIO chainbase is in use).
86 |
87 |
88 | ### Ecosystem Fit
89 |
90 | Chronicle has been an integral part of EOSIO software ecosystem for
91 | about 3.5 years. It is the tool that allows application developers to
92 | receive real-time updates from the blockchain, and maintain the
93 | history of their transactions.
94 |
95 | There are several other software solutions for reading the state
96 | history. But they are either too specific for a particular task, or
97 | not fast enough for bulk processing. Chronicle offers a universal
98 | solution, and it is currently the fastest way to decode the state
99 | history.
100 |
101 | ## Team
102 |
103 | ### Team members
104 |
105 | - **Team Leader:** CTO of EOS Amsterdam and Senior Consultant at
106 | Zaisan.io, working under "cc32d9" pseudonym.
107 |
108 | - Daniel Liven, managing the legal and financial aspects.
109 |
110 | ### Legal Structure
111 | - **Registered Legal Entity:** Zaisan BV
112 | - **Registered Address:** Keizersgracht 391A, 1016 EJ, Amsterdam, The Netherlands
113 |
114 | ### Team Experience
115 |
116 | Zaisan has been around in EOSIO ecosystem for several years, formally
117 | known as Europechain BV. The company is founded by several European
118 | block producers, and is focusing on software projects and business
119 | consultancy.
120 |
121 | The company has previously taken the task of writing the EOSIO Core+
122 | Blue Paper on request of ENF.
123 |
124 | ### Team Org Repos
125 |
126 | - https://github.com/Europechain
127 | - https://github.com/eos-amsterdam-rnd
128 |
129 | ### Team Member Repos
130 |
131 | - https://github.com/cc32d9
132 |
133 | ### Team LinkedIn Profiles (if available)
134 |
135 | - https://www.linkedin.com/in/dliven/
136 |
137 | ## Development Status
138 |
139 | - [Initial proposal and crowdfunding proceedings](https://github.com/cc32d9/eos-work-proposals/tree/master/001_EOS_Chronicle)
140 | - [Main project repository](https://github.com/EOSChronicleProject/eos-chronicle)
141 | - [Chronicle tutorial](https://github.com/EOSChronicleProject/chronicle-tutorial)
142 | - [JavaScript NPM for Chronicle consumers](https://github.com/EOSChronicleProject/chronicle-consumer-npm)
143 | - Blog publications: [fundraising](https://cc32d9.medium.com/fundraising-for-chronicle-and-history-indexer-26e0a06c2d1d), [overview of history solutions](https://cc32d9.medium.com/history-and-notifications-in-eosio-blockchain-8255194af93)
144 |
145 | ## Development Roadmap
146 |
147 | ### Overview
148 |
149 | - **Total Estimated Duration:** 4 months
150 | - **Full-Time Equivalent (FTE):** 0.25
151 | - **Total Costs:** USD 20,000
152 |
153 | ### Milestone 1 — Chronicle software update
154 |
155 | - **Estimated duration:** 2 months
156 | - **FTE:** 0.25
157 | - **Costs:** 8,000 USD
158 |
159 | | Number | Deliverable | Specification |
160 | | -----: | ----------- | ------------- |
161 | | 0a. | License | Apache 2.0 |
162 | | 0b. | Documentation | Updated Chronicle README and the Tutorial to reflect all the recent changes |
163 | | 0c. | Testing Guide | Tests scripts and guides will be part of documentation |
164 | | 1. | Update dependencies | Update Chronicle to work with latest releases of dependency libraries (Boost.org and EOSIO/Mandel libraries).|
165 | | 2. | Ubuntu packages | Crate package build scripts; publish the packages for public download |
166 | | 3. | JavaScript NPM | Redesign the asynchronous mode to avoid memory overflow |
167 | | 4. | Third party contributions | Integrate, test and document third-party contributions, such as Docker and Kubernetes images |
168 |
169 |
170 | ### Milestone 2 — Research
171 |
172 | - **Estimated duration:** 2 month
173 | - **FTE:** 0.25
174 | - **Costs:** 8,000 USD
175 |
176 | | Number | Deliverable | Specification |
177 | | -----: | ----------- | ------------- |
178 | | 1 | Alternative DB backend | Current Chronicle uses EOSIO Chainbase for its data. An alternative, more lightweight and less demanding, backend needs to be researched, and possibly taken for the next release. |
179 |
180 |
181 | ### Milestone 3 — Support and maintenance
182 |
183 | - **Estimated duration:** 18 months
184 | - **FTE:** 0.01
185 | - **Costs:** 4,000 USD
186 |
187 | | Number | Deliverable | Specification |
188 | | -----: | ----------- | ------------- |
189 | | 1 | Software support | Processing bug reports and third-party contributions, updating the documentation, publishing new releases |
190 |
191 |
192 |
193 |
194 | ## Future Plans
195 |
196 | The Chronicle software is versatile and modular, and easy to integrate
197 | in other solutions. Probably a future history solution for EOSIO
198 | blockchains will use Chronicle as an integral part. Also there is a
199 | market demand for various streaming and notification services, and
200 | Chronicle would easily fit for such services.
201 |
202 | ## Additional Information
203 |
204 | **How did you hear about the Grants Program?** Twitter and Discord
205 |
--------------------------------------------------------------------------------
/applications/cost-comparing-research-rust-cdt.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** Research for building Rust Antelope CDT
4 | - **Team Name:** Lowkey codes
5 | - **EOS Payment Address:** delightlabs1
6 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 1
7 | - **Pomelo Grant(s):** N/A
8 | - **Project is Open-Source:** Yes
9 | - **Project was part of Token sale:** No
10 | - **Repository where Project resides:** N/A
11 |
12 | ## Contact
13 |
14 | - **Contact Name:** Bryan RHEE
15 | - **Contact Email:** contact@delightlabs.io
16 | - **Website:** [https://delightlabs.io/](https://delightlabs.io/)
17 |
18 | ## Project Overview
19 |
20 | ### Overview
21 |
22 | - **Name:** Research for building Rust Antelope CDT
23 | - **Brief Description:** Checking the most cost-effective plan among the cases we thought of is mandatory for building Rust Antelope CDT.
24 | - **Relationship to EOSIO:** Many developers using other languages besides C++ will be able to join the Antelope ecosystem and become its builders. We set the first target to Rust.
25 | - **Reason for Interest:** Lack of language support despite the extremely fast processing speed leaves something to be desired, and we anticipate that modern language support & language diversity help improve this point and expand builder pool. Additionally, in terms of our interests, we would like to contribute to technology-focused areas.
26 |
27 |
28 | ### Project Details
29 |
30 | The project will investigate the following two parts in order to verify the suitable direction to implement:
31 |
32 | 1. Sufficient compatibility between EOS VM and wasm binary from [Wasmer](https://github.com/wasmerio/wasmer)-based compiler
33 | - Rust `antelope.cdt` API implementation
34 | 1. Lack of compatibility between EOS VM and wasm binary from [Wasmer](https://github.com/wasmerio/wasmer)-based compiler exists
35 | - Developing compiler first -> Rust `antelope.cdt` API implementation
36 | - Or Wasmer VM integration on Antelope
37 |
38 | This research has been written as a separated proposal since the follow-up plan will be quite different by the result.
39 |
40 | ### Ecosystem Fit
41 |
42 | This implementation allows Antelope to extend one more contract language, Rust, and this would be the cornerstone of the multiple language support in the Antelope ecosystem. As WASM can be built with Golang and Javascript recently, we look forward Antelope to embracing more other languages' users.
43 |
44 | ## Team
45 |
46 | ### Team members
47 |
48 | - **Team Leader:** Yeon HWANG
49 | - Joon LEE
50 | - Young LEE
51 | - Derick MOON
52 | - Sooyoung HA
53 | - Bryan RHEE
54 | - Joowon YUN
55 | - Maro KIM
56 |
57 | ### Legal Structure
58 |
59 | - **Registered Legal Entity:** Lowkey codes
60 | - **Registered Address:** Hyecheon Bldg 1126-7 (11th flr), 354 Gangnam-daero, Gangnam, Seoul, SOUTH KOREA
61 |
62 | ### Team Experience
63 |
64 | - Before blockchain, well experience in OS & emulator development (Tizen of Samsung)
65 | - Much experience in validating Cosmos SDK-based projects & ETH layer 2 blockchains
66 | - Experience in blockchain core development (connect between Tendermint & WASM execution engine)
67 | - 1st dApp on Terra(now Terra classic): Terraswap - enough experience of WASM-based smart contract development & action processing
68 | - Mainnet technical partner of Xpla (former C2X)
69 | - EOSIO-based project-building experience (Polaris of Chain Partners, mentor & participant of EOSIO hackathon)
70 |
71 | ### Team Org Repos
72 |
73 | [https://github.com/DELIGHT-LABS](https://github.com/DELIGHT-LABS)
74 |
75 | - Terraswap
76 | - [Frontend](https://github.com/terraswap/terraswap-web-app)
77 | - [Offchain backend service](https://github.com/terraswap/terraswap-service)
78 | - [Contract - Terra classic](https://github.com/terraswap/classic-terraswap)
79 | - [Contract - Terra 2.0](https://github.com/terraswap/terraswap)
80 | - XPLA chain
81 | - [Mainnet code](https://github.com/xpladev/xpla)
82 | - [Token migration frontend (Terra classic -> mainnet)](https://github.com/xpladev/token-migration-web-app)
83 | - [Token migration relayer (Terra classic -> mainnet)](https://github.com/xpladev/warp-relayer)
84 | - Data API service
85 | - [Terraswap on Terra classic](https://github.com/DELIGHT-LABS/terraswap-graph)
86 | - [Unified service for Cosmos-SDK based chain](https://github.com/DELIGHT-LABS/cosmwasm-etl) (Private, in development, I'll add you if you need to check it)
87 |
88 | ### Team Member Repos
89 |
90 | - Yeon HWANG: [https://github.com/caramis](https://github.com/caramis)
91 | - Joon LEE: [https://github.com/jbamlee](https://github.com/jbamlee)
92 | - Young LEE: [https://github.com/jhlee-young](https://github.com/jhlee-young)
93 | - Sooyoung HA: [https://github.com/yoosah](https://github.com/yoosah)
94 | - Bryan RHEE: [https://github.com/psy2848048](https://github.com/psy2848048)
95 | - Joowon YUN: [https://github.com/JoowonYun](https://github.com/JoowonYun)
96 | - Maro KIM: [https://github.com/honeymaro](https://github.com/honeymaro)
97 |
98 | ### Team LinkedIn Profiles (if available)
99 |
100 | - Yeon HWANG: [https://www.linkedin.com/in/yeon-hwang/](https://www.linkedin.com/in/yeon-hwang/)
101 | - Joon LEE: [https://www.linkedin.com/in/joonbum-lee-173354112/](https://www.linkedin.com/in/joonbum-lee-173354112/)
102 | - Young LEE: [https://www.linkedin.com/in/jihyunglee/](https://www.linkedin.com/in/jihyunglee/)
103 | - Derick MOON: [https://www.linkedin.com/in/sanghoon-moon-79b5a81b2/](https://www.linkedin.com/in/sanghoon-moon-79b5a81b2/)
104 | - Sooyoung HA: [https://www.linkedin.com/in/sooyoung-ha-9a0195140/](https://www.linkedin.com/in/sooyoung-ha-9a0195140/)
105 | - Bryan RHEE: [https://www.linkedin.com/in/psy2848048/](https://www.linkedin.com/in/psy2848048/)
106 | - Joowon YUN: [https://www.linkedin.com/in/joowon-yun-520a1557/](https://www.linkedin.com/in/joowon-yun-520a1557/)
107 | - Maro KIM: [https://www.linkedin.com/in/maro/](https://www.linkedin.com/in/maro/)
108 |
109 | ## Development Status
110 |
111 | ### Description of the expected scenarios
112 |
113 | ```plain
114 | ┌──────────────┐ ┌──────────────┐ ┌─────────────────┐
115 | │ │ eosio-llvm │ │ │ API │
116 | │ EOSIO C++ │ ───────► │ IR │ ───────► │ EOSVM IR │
117 | │ │ │ │ │ Interface set │
118 | └──────────────┘ └──────────────┘ └─────────────────┘
119 |
120 | ┌──────────────┐ Wasmer's ┌──────────────┐ ┌─────────────────┐
121 | │ │ rust-llvm │ │ │ API' │
122 | │ Wasmer Rust │ ───────► │ IR' │ ───────► │ Wasmer IR │
123 | │ │ │ │ │ Interface set │
124 | └──────────────┘ └──────────────┘ └─────────────────┘
125 | ```
126 |
127 | NOTE: There is no official general Rust LLVM. This standardization project is still in incubation status.
128 |
129 | Assumptions: For cost-effective building, we want to build from the many works of Wasmer, although Antelope doesn't need to mount Wamser.
130 |
131 | #### Cases
132 |
133 | 1. If `IR ≅ IR'` and `API ≅ API'`
134 | - We can directly start from Wasmer's implementation
135 | - Implement Antelope-specific data structure and API of `eosio.cdt` (Like table, vector, etc.)
136 | 1. Else if `IR ≅ IR'` and `API != API'`
137 | - Implement a compiler, which works for adjusting WASM API interface from Wasmer spec to EOSVM spec
138 | - After then, start (1)
139 | 1. Else (`IR != IR'` and `API != API'`)
140 | - Mount Wasmer on Antelope would be the cheapest
141 | - Mount Wasmer, make compatible with the existing state DB, and work on (1)
142 | - [Draft proposal of this case](https://github.com/DELIGHT-LABS/grant-framework/blob/docs/wasmer-integration/applications/wasmer-integration.md)
143 |
144 | ### Why Wasmer?
145 |
146 | Performance of Wasmer is placed in the top tier. See [benchmark 2021](https://00f.net/2021/02/22/webassembly-runtimes-benchmarks/). Also, it has the biggest ecosystem among WASM VM and supports many languages accordingly.
147 |
148 | ## Development Roadmap
149 |
150 | ### Milestone Summary
151 |
152 | - **Total Estimated Duration:** 1 month
153 | - **Full-Time Equivalent (FTE):** 2 FTE
154 | - **Total Costs:** 10,000 USD
155 |
156 | ### Milestone 1 — Research the difference between EOSVM and Wasmer
157 |
158 | - **Estimated duration:** 1 month
159 | - **FTE:** 2
160 | - **Costs:** 10,000 USD
161 |
162 | | ID | Deliverable | Specification |
163 | | ----- | ----------- | ------------- |
164 | | 0a. | License | MIT |
165 | | 1 | Research report | **1. EOSVM API analysis**
Analyze the interacting APIs with EOSVM and estimate the job size of developing the interaction layer
**2. Antelope code structure research**
Check does the code need to be changed & where would need to be changed
**3. Feasibility check**
Implement a small PoC layer including with a couple of API interaction & triggering contract.
**4. (OPTIONAL) Simulation with DEX contract**
Try to simulate porting the Cosmwasm DEX contract on EOSVM |
166 |
167 | ## Future Plans
168 |
169 | There will be a follow-up proposal for supporting Rust CDT according to this research result.
170 |
171 | ## Additional Information
172 |
173 | **How did you hear about the Grants Program?** Personal recommendation
174 |
175 | ### Related experiences
176 |
177 | - Wasmer-based contract development: [Terraswap](https://github.com/terraswap/terraswap)
178 | - Heterogeneous layers integration (Consensus-modified Tendermint - Cosmos SDK - VM)
179 | - [Consensus-modified Tendermint](https://github.com/hdac-io/tendermint)
180 | - [Cosmos SDK](https://github.com/hdac-io/friday)
181 | - [VM](https://github.com/hdac-io/CasperLabs)
182 |
--------------------------------------------------------------------------------
/applications/dev_book.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** EOSIO Smart Contract Developer's Handbook
4 |
5 | - **Team Name:** Zaisan BV
6 |
7 | - **EOS Payment Address:** zaisanfinanc
8 |
9 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 2
10 |
11 | - **Pomelo Grant(s):** https://pomelo.io/grants/cookbook
12 |
13 | - **Project was part of Token sale:** No
14 |
15 | - **Repository where Project resides:** https://cc32d9.gitbook.io/eosio-smart-contract-developers-handbook/
16 |
17 |
18 | ## Contact
19 |
20 | - **Contact Name:** Daniel Liven
21 |
22 | - **Contact Email:** daniel@zaisan.io
23 |
24 | - **Website:** https://zaisan.io/about/
25 |
26 |
27 | ## Project Overview
28 |
29 | Our team has described many missing aspects in EOSIO infosphrere in
30 | its Core+ Blue Paper which was sponsored by ENF back in autumn
31 | 2021. Recently our senior consultant, widely known under the "cc32d9"
32 | pseudonym, has started writing a book for software EOSIO developers,
33 | trying to cover the topics described in the paper.
34 |
35 | Several chapters are already available for the public, and they met a
36 | great interest among the developer community.
37 |
38 | Some material for the book was previously published in the [cc32d9
39 | blog](https://cc32d9.medium.com/).
40 |
41 |
42 | ### Overview
43 |
44 | - **Name:** EOSIO Smart Contract Developer's Handbook.
45 |
46 | - **Brief Description:** Writing a book for EOSIO contract developers.
47 |
48 | - **Relationship to EOSIO:** The book will focus on EOSIO architecture.
49 |
50 | - **Reason for Interest:** cc32d9 is a senior engineer working primarily in the EOSIO ecosystem in the past 4 years.
51 |
52 |
53 | ### Project Details
54 |
55 | The book is targeting senior engineers and application architects, as
56 | well as beginner developers who want to understand the inner workings
57 | of an EOSIO blockchain.
58 |
59 | Topics to be covered within this grant application:
60 |
61 | - High-level view on blockchain and its components.
62 |
63 | - `nodeos` daemon and its function and roles in the blockchain infrastructure.
64 |
65 | - Life cycle of a transaction.
66 |
67 | - How a smart contract works: in-depth description of the processes which are hidden from the developer and poorly documented.
68 |
69 | - Smart contract security (based on a previously published blog article)
70 |
71 | - Smart contract data design: planning and building smart contract tables, indexes, and queries.
72 |
73 | - Performance and scaling: do's and dont's, and best practices in building a scalable application.
74 |
75 |
76 | Additional topics for future grant applications:
77 |
78 | - Design patterns: typical tasks and approaches.
79 |
80 | - Practical examples and usage scenarions.
81 |
82 | - Contract development kits (CDT, CLSDK, ...)
83 |
84 | - Off-chain software development: data collectors, history, oracles, CPU sponsoring, RNG, etc.
85 |
86 | - Feedback from the audience
87 |
88 |
89 | ### Ecosystem Fit
90 |
91 | Knowledge sharing and best-practice guides is what has been lacking in
92 | EOSIO ecosystem in the past 4 years. This book is aiming to change
93 | that situation, so that new developers could start working with the
94 | EOSIO software as efficiently as possible.
95 |
96 | ## Team
97 |
98 | ### Team members
99 |
100 | - **Team Leader:** CTO of EOS Amsterdam and Senior Consultant at
101 | Zaisan.io, working under "cc32d9" pseudonym.
102 |
103 | - Daniel Liven, managing the legal and financial aspects.
104 |
105 | ### Legal Structure
106 | - **Registered Legal Entity:** Zaisan BV
107 | - **Registered Address:** Keizersgracht 391A, 1016 EJ, Amsterdam, The Netherlands
108 |
109 | ### Team Experience
110 |
111 | Zaisan has been around in EOSIO ecosystem for several years, formally
112 | known as Europechain BV. The company is founded by several European
113 | block producers, and is focusing on software projects and business
114 | consultancy.
115 |
116 | The company has previously taken the task of writing the EOSIO Core+
117 | Blue Paper on request of ENF.
118 |
119 | ### Team Org Repos
120 |
121 | - https://github.com/Europechain
122 | - https://github.com/eos-amsterdam-rnd
123 |
124 | ### Team Member Repos
125 |
126 | - https://github.com/cc32d9
127 |
128 | ### Team LinkedIn Profiles (if available)
129 |
130 | - https://www.linkedin.com/in/dliven/
131 |
132 | ## Development Status
133 |
134 | Several chapters have already been published at
135 | [Gitbook](https://cc32d9.gitbook.io/eosio-smart-contract-developers-handbook/)
136 |
137 | ## Development Roadmap
138 |
139 | ### Overview
140 |
141 | - **Total Estimated Duration:** 4 months
142 | - **Full-Time Equivalent (FTE):** 0.2
143 | - **Total Costs:** USD 20,000
144 |
145 | ### Milestone 1 — Writing and finalizing the content
146 |
147 | - **Estimated duration:** 4 months
148 | - **FTE:** 0.2
149 | - **Costs:** 20,000 USD
150 |
151 | | Number | Deliverable | Specification |
152 | | -----: | ----------- | ------------- |
153 | | 0a. | License | Creative Commons BY-SA 4.0 |
154 | | 0b. | Documentation | N/A |
155 | | 0c. | Testing Guide | N/A |
156 | | 1. | Prior writing | This work has been started several months proior to grant application. About 50% of content is ready by the time of application |
157 | | 2. | Writing | Covering the remaining topics, adding details |
158 | | 3. | Finalized book | Proofreading, structuring, links check |
159 |
160 |
161 | ## Future Plans
162 |
163 | Adding more content as described above.
164 |
165 | ## Additional Information
166 |
167 | **How did you hear about the Grants Program?** Twitter and Discord
168 |
--------------------------------------------------------------------------------
/applications/genereos-testing-libraries.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** EOSIO Smart Contract Testing Libraries
4 | - **Team Name:** GenerEOS Pty Ltd
5 | - **EOS Payment Address:** aus1genereos
6 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 3
7 |
8 | ## Project Overview
9 |
10 | This application is to support an existing proposal put forward on [Pomelo](https://pomelo.io/grants/sclibraries) to reach its funding and therefore product/feature objectives..
11 |
12 | As highlighted in the [CORE+ Blue Paper](https://medium.com/eos-network-foundation/core-blue-paper-80c26db532b6), smart contract testing is an essential part of the modern software development process and it is seriously lacking in the EOS and EOSIO development world. There are two main tools that are limited in functionality that have been developed by the community for this purpose but sadly they have been abandoned and are no longer fit for purpose due to a lack of funding and their uncompetitiveness in the wider market.
13 |
14 | **Existing tools**
15 |
16 | [EOSFACTORY](https://github.com/tokenika/eosfactory)
17 |
18 | **Advantages**
19 |
20 | * Open source and free to use
21 |
22 | **Disadvantages**
23 |
24 | * Convoluted instructions with unnecessary steps where developers need to compile the eosio source code and then build and install eosfactory.
25 | * Local node runs in background mode which can cause issues with different EOSIO configurations or software versions.
26 | * Difficulty testing multiple smart-contracts due to needing a data table for each contract.
27 | * Difficult to setup CI/CD for projects
28 |
29 | [HYDRA](https://docs.klevoya.com/hydra/about/getting-started/)
30 |
31 | **Advantages**
32 |
33 | * The framework is developed with Javascript which is simple to install and run.
34 | * Simplified setup of CI/CD
35 | * Ability to init table data for each smart contract. This reduces code review time to understand how to insert data to each table.
36 |
37 | **Disadvantages**
38 |
39 | * Closed source code
40 | * Hosts EOSIO node on the user server side which can reduce performance and adds friction
41 | * Paid service.
42 | * To init table data the smart contract needs to be updated. The unit-test framework and smart contact code should be independent.
43 |
44 |
45 | ### Overview
46 |
47 | - **Name:** Javascript based EOSIO Smart Contract Testing Library
48 | - **Brief Description:** Develop a Javascript based EOSIO smart contract testing library
49 | - **Relationship to EOSIO:** Testing libraries are a critical tool for developers to develop robust and secure smart contracts for EOSIO based applications
50 | - **Reason for Interest:** The team behind GenerEOS have built many smart contract based applications on EOS and EOSIO based chains as well as on Ethereum and saw a clear gap in the testing and validation space on EOS and EOSIO in comparison to Ethereum
51 |
52 |
53 | ### Project Details
54 |
55 | **Smart Contract Testing Library**
56 | The smart contract testing library will be built with Javascript leveraging eosio-core built by Greymass giving you the ability to dockerize a light EOSIO node that can run on any system. This allows the ability for the user to host it on their system easily and automated with the ability to test for multiple EOSIO based chains i.e EOS, WAX, TELOS, PROTON, FIO and UX. It also allows for each project to simply set up CI/CD and seed table data without modifying the contracts. All code will be open sourced under MIT so it is free for the community to use, creating no barrier to entry for developers.
57 |
58 | **Features**
59 | * Open-source MIT license
60 | * Ability to init/reset table data
61 | * Ability to test accounts and permissions
62 | * Built with Javascript
63 | * Dockerize a light EOSIO node that can be run on the users system automatically
64 | * Ability to test multiple EOSIO(EOS/WAX/TELOS) networks with links to public snapshots.
65 | * Simplified method to setup CI/CD
66 |
67 |
68 | ### Ecosystem Fit
69 |
70 | This library is aimed at developers and entrepreneurs to give them the tools needed to create secure and robust smart contracts for their tools or products to be built on EOS and EOSIO. As illustrated in the overview, and in the CORE+ Blue Paper, there is a clear gap missing with these tools in the EOS and EOSIO development world which places EOS at a disadvantage compared to other chains.
71 |
72 | ## Team
73 |
74 | ### Team members
75 |
76 | * Team Lead: Tim Weston - Co-founder and Head of Product.
77 | * Devops Lead: Ralf Weinand - Co-founder and Head of Infrastructure
78 | * Technical Lead: Rob Dewilder - Senior Technical Lead
79 | * Senior Fullstack Developer: Quoc Le - preferred languages C++/Nodejs/Solidity
80 | * Smart Contracts Developer/Backend: Tung - preferred languages Nodejs
81 | * Smart Contract/Backend Developer: Quy - preferred languages C++/Nodejs
82 | * Frontend/Nodejs Developer: Liem - preferred languages Nodejs
83 |
84 |
85 | ### Contact
86 |
87 | - **Contact Name:** Tim Weston
88 | - **Contact Email:** tim@genereos.io
89 | - **Website:** https://genereos.io/
90 |
91 | ### Legal Structure
92 | - **Registered Legal Entity:** GenerEOS Pty Ltd - ABN 80 628 307 853
93 | - **Registered Address:** 64 Churchill St, Jamberoo, NSW, Australia 2533
94 |
95 | ### Team Experience
96 |
97 | GenerEOS are top 21 genesis block producers on the EOS mainnet and have been building and growing out the EOS and EOSIO ecosystem since 2018. We have a strong team of passionate developers and entrepreneurs that love to operate on the bleeding edge of technology. We were the original developers of the open-sourced web-wallet EOSToolkit.io and are the developers behind Genpool.io a staking rewards platform built on EOS. Our Technical Lead Rob Dewilder is the ex-CTO of Worbli and IT Director of Sony Music, he is a full stack developer that is a very well-respected technology professional with 20 years of experience in engineering and management roles. He is capable of managing large-scale infrastructures, highly technical backend projects, global supply chains and has vast experience with EOSIO and smart contract development. Quoc Le, is a senior developer with 8 years of experience, currently working as a senior engineer at WAX building out internal testing frameworks and core code development along with their suite of NFT related projects.
98 |
99 | ### Team Org Repos
100 |
101 | - https://github.com/generEOS>
102 |
103 |
104 | ### Team Member Repos
105 |
106 | - https://github.com/timmwest>
107 | - https://github.com/rdewilder>
108 | - https://github.com/RalfWeinand>
109 | - https://github.com/quocle108>
110 |
111 |
112 | ### Team LinkedIn Profiles (if available)
113 |
114 | - https://www.linkedin.com/in/ralfweinand/>
115 | - https://www.linkedin.com/in/robert-dewilder-6b83311/>
116 |
117 |
118 | ## Development Status
119 |
120 | This project has not begun development yet and is in the architecting and research phase. Please reference our [Pomelo Pitch](https://pomelo.io/grants/sclibraries) for more details around reasoning and justification. We will be building off of similar projects in the Ethereum world as explained in previous sections.
121 |
122 | ## Development Roadmap
123 |
124 |
125 | ### Overview
126 |
127 | - **Total Estimated Duration:** Duration of the whole project is 1 month effort and total delivery time of 2 months which includes testing and documentation.
128 |
129 | - **Full-Time Equivalent (FTE):** 4
130 | - **Total Costs:** $40500 USD, payment can be made in EOS. Note, that the total amount raised in the Pomelo proposal will be deducted from the final milestone payment - currently ~$7,000 USD.
131 |
132 | ### Milestone 1 — Smart Contract Testing library
133 |
134 | - **Estimated duration:** 1 month effort and 2 months total delivery duration including testing and documentation
135 | - **FTE:** 4
136 | - **Costs:** $40500 USD
137 |
138 | | Number | Deliverable | Specification |
139 | | -----: | ----------- | ------------- |
140 | | 0a. | License | MIT |
141 | | 0b. | Documentation | We will provide both inline documentation of the code and a basic tutorial and operating instructions that explains; Setup of a testing environment; Config and write unit-test; API reference |
142 | | 0c. | Testing Guide | NA - the testing guide will be included in the documentation as the library is testing in nature. |
143 | | 0d. | Docker | NA - included on deliverable 1 |
144 | | 0e. | Article | N/A as its on the milestone 3 deliverable. However, if milestone 2 & 3 are roadblocked (ref milestone 2, deliverable 1) the article will be published at this milestones completion.
145 | | 1. | Dockerize a light EOSIO node that can be run on the users system automatically. With several options on initial chain state for different chains e.g. EOS/TELOS/WAX | Dockerfile to setup each chain; shell script to initialize smart contract/data; docker image stored in docker hub |
146 | | 2. | Provide all core functionalities for unit-test| Javascript API to interact with the docker container within the testing scripts; Javascript Core APIs for developer to interact with chain for example: set contract, push action, get table and an array of wrapped functions that allow developers to quickly interact with blockchain; Assertion library for smart contract testing|
147 | | 3. | Provide some advanced functionalities | Nodejs modules and docker shell scripts to manipulate blockchain state and time for special testing purposes e.g. booting the chain with an arbitrary time; Init/reset smart contract table data with minimal modification of smart contract; Functionalities to test accounts/permission|
148 |
149 |
150 | ## Future Plans
151 |
152 | * We intend to continually look at the market and add competitive features to the smart contract testing library working with developers to better understand the features needed for their projects. Note; this depends on subsequent funding for this level of support. Additionally, we are currently investigating Clang to build a code coverage and code validation library which was a part of our initial proposal but has dropped out due to the complexity. It is our hope that we can find a solution and add these libraries back in and build them later in the year.
153 |
154 | * We plan on maintaining the open source code base to ensure that it is up to date with the latest various third-party libraries, frameworks, and software that it uses. Note; this depends on subsequent funding for this level of support.
155 |
156 |
157 | ## Additional Information
158 |
159 | **How did you hear about the Grants Program?** Personal recommendation.
160 |
161 | We have worked alongside the ENF since inception and have been a part of the EOS and EOSIO community since genesis and have identified this as a critical piece of missing tooling that creates friction for developers.
162 |
163 |
--------------------------------------------------------------------------------
/applications/knockout_wars_game.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** Knockout Wars Game
4 | - **Team Name:** Gami Studio
5 | - **EOS Payment Address:** junaydcrypto
6 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 2
7 | - **Pomelo Grant(s):** N/A
8 | - **Project is Open-Source:** Yes
9 | - **Project was part of Token sale:** Yes
10 | - **Repository where Project resides:**
11 |
12 |
13 | ## Contact
14 |
15 | - **Contact Name:** Junayd Miah
16 | - **Contact Email:** junayd@gami.me
17 | - **Website:** http://www.gami.me
18 |
19 |
20 | ## Project Overview
21 |
22 | This is a proposal to build & launch Knockout Wars Game on EOS EVM
23 |
24 |
25 | ### Overview
26 |
27 | - **Name:** Knockout Wars, a Mobile Multiplayer Fireball Fighting Game
28 | - **Brief Description:** We want to be the 1st Mobile Skill based fighting game on EOS EVM that is set up for mass adoption.
29 |
30 | We expect to achieve 100,000-125,000 YouTube views promoting our game tournaments with EOS EVM being the sponsor and receiving shout outs from the Influencers, generating much needed awareness of EOS EVM in the social space.
31 |
32 | We want to introduce our community to EOS (95K on Twitter & 22K on TG & 10K on YouTube)
33 |
34 | We want to grow our current MAU (closed beta) from 1,000 to 10,000 (10X increase) resulting in 100,000 games showcasing the EOS EVM branding inside the game.
35 | All the above will result in EOS EVM gaining new exposure to new gaming communities.
36 | - **Relationship to EOS Network / Antelope:** Enhance the EOS Gamefi ecosystem via EOS EVM
37 | - **Reason for Interest:** I have been a member of the EOS community since 2018. Unfortunately, due to the instability caused by Block One I decided to launch the project on BSC. Now that we as a community have taken over from Block One and after discussing with Yves La Rose, I want to do my bit to contribute towards making Gamefi on EOS EVM flourish and ultimately highlight the exceptional technology underlying the EOS blockchain.
38 |
39 |
40 | ### Project Details
41 |
42 | GAMI is an Influencer centric Web3 gaming studio set-up for onboarding the next 100 million gamers.
43 |
44 | Our debut game ‘Knockout Wars’ is a Mobile Multiplayer Fireball Fighting Game inspired by Street Fighter & Dodgeball. Currently in closed beta testing with the community.
45 |
46 |
47 | Most Web3 games are finding it difficult to gain mass adoption.
48 |
49 | We believe the solutions are as follows:
50 |
51 | 1. Remove Web3 wallet barrier
52 |
53 | Gamers are alienated when required to adopt a Web3 wallet to play games, this becomes a barrier to mass adoption. Our games use social logins for all players, allowing them to adopt Web3 at their own pace.
54 |
55 | 2. Align incentives correctly for mass adoption
56 |
57 | Web3 gaming incentives are misaligned, as they focus on paying the gamer and not the promoter. We feel gamers should be rewarded with a fun experience, and promoters (influencers) should be rewarded financially.
58 |
59 | Our innovative #Influence&Earn program, incentivises Influencers to host captivating Tournaments, attracting audiences and boosting engagement, opening the doors to mass adoption.
60 |
61 | 3. Sustainable economy
62 |
63 | Web3 games that require more paying users to sustain the Play2Earn economy are designed to fail, similar to pyramid schemes. Our economy uses NFT sales and sponsorship revenue to bring new money into the ecosystem to fund our onboarding strategy powered by our innovative #Influence&Earn program, making it a sustainable economy setup for mass adoption.
64 |
65 | Note: Our solidity smart contracts will be open source but our unity game will not be open source.
66 |
67 | ### Ecosystem Fit
68 |
69 | - Where and how does your project fit into the ecosystem? EOS Gamefi & EOS EVM
70 | - Who is your target audience? Web2 & Web3 gamers
71 | - What need(s) does your project meet? Mass adoption of Web3 gaming. Mass awareness of EOS EVM via the #Influence&Earn program
72 | - Are there any other projects similar to yours in the EOS Network / Antelope ecosystem? We are not aware of other projects similar to this in the EOS ecosystem
73 |
74 |
75 | ## Team
76 |
77 | ### Team members
78 |
79 | - **Team Leader:** Junayd Miah
80 | - Azad Uddin - Blockchain & Tech Lead
81 | - Eric Odi - Unity Engineer
82 | - Eleni Kouraki - 3D Artist
83 | - Ammar Vohra - Backend Unity Developer
84 | - Rahmat Ali - Product Manager
85 | - Abdul Fattah - Community Manager
86 |
87 | ### Legal Structure
88 | - **Registered Legal Entity:** GAMI Studio LLC
89 | - **Registered Address:** Richmond Hill Road, Kingstown, St. Vincent and the Grenadines, P.O. Box 2897
90 |
91 | ### Team Experience
92 |
93 | - Junayd Miah - Over 15 years of experience growing an international influencer based fast fashion brand & 5 years of creative & B2B experience in the Web3 space
94 | - Azad Uddin - 20 years of development experience, with 4 years blockchain experience
95 | - Eric Odi – 9 years of Unity game development experience
96 | - Abdul Fattah – 8 years communications and community management experience
97 | - Ammar Vohra - 7 years of Unity backend game development experience
98 | - Rahmat Ali - 6 years of product management experience, with 3 years in web3 product management
99 | - Eleni Kouraki - 3 years of experience as a 3D artist
100 |
101 |
102 | ### Team Org Repos
103 |
104 | -
105 |
106 | ### Team Member Repos
107 |
108 | ### Team LinkedIn Profiles (if available)
109 |
110 | - https://www.linkedin.com/in/azad-uddin/
111 | - https://www.linkedin.com/in/eric-odi-7506ab195/
112 | - https://www.linkedin.com/in/eleni-kouraki-2358b91bb/
113 | - https://www.linkedin.com/in/rahmat-a-770667213/
114 | - https://www.linkedin.com/in/abdulfattah-junayd-413844120/
115 |
116 |
117 | ## Development Status
118 |
119 | - The game is in closed early beta testing.
120 | - to google play store.
121 | - Use EOSEVM as invite code.
122 |
123 | ## Development Roadmap
124 |
125 | The roadmap is separated into 4 distinct deliverables
126 | - EOS EVM Token development
127 | - DEX Launch with liqudity
128 | - Integration of EOS Token and Wallets with Knockout Wars Game
129 | - Launch the EOS EVM backed competitions of Knockout Wars Game
130 |
131 | ### Milestone Summary
132 |
133 | - **Total Estimated Duration:** 3 months
134 | - **Full-Time Equivalent (FTE):** 1 FTE
135 | - **Total Costs:** 35,000 USD
136 |
137 |
138 | ### Milestone 1 — EOS EVM Token development
139 |
140 | - **Estimated duration:** 1 month
141 | - **FTE:** 1
142 | - **Costs:** 7,000 USD
143 |
144 | Develop a new Token with new features
145 |
146 | Transaction fee feature will be split into the following
147 | - Reflection to Token holders
148 | - Burning
149 | - Liquidity
150 |
151 | ERC20 token for EOS EVM with Bridging
152 | - Develop token
153 | - Test token
154 | - Bridge the original token over to EOS EVM
155 | - Test the bridging
156 |
157 | Development Costs: 7,000 USD
158 | - The annual salary for calculation 84,000 USD
159 | - (84,000 / 12) * 1 month
160 |
161 |
162 |
163 | ### Milestone 2 — DEX Launch with liqudity
164 |
165 | - **Estimated Duration:** 1 Week
166 | - **FTE:** 1
167 | - **Costs:** 13,000 USD
168 |
169 | Launch on an EOS EVM DEX
170 |
171 | - Audit Cost 2,000USD
172 | - DevOps Token Launch Costs: 1,000 USD
173 | - Liquidity for the EOS DEX Cost: 10,000 USD
174 |
175 |
176 | ### Milestone 3 — Integration of EOS Token and Wallets with Knockout Wars Game
177 |
178 | - **Estimated Duration:** 1 Month
179 | - **FTE:** 1
180 | - **Costs:** 6,000 USD
181 |
182 | Unity Game Integration: Integrate EOS EVM to Knockout Wars Game
183 |
184 | - Integrate EOS wallets with Knockout Wars
185 | - Unit test code
186 | - Development Costs: 6,000 USD
187 | - The annual salary for calculation 72,000 USD
188 | - (72,000 / 12) * 1 month
189 |
190 |
191 | ### Milestone 4 — Launch the EOS EVM backed competitions of Knockout Wars Game
192 |
193 | - **Estimated Duration:** 1 Month
194 | - **FTE:** 1
195 | - **Costs:** 9,000 USD
196 |
197 | EOS Sponsored Competitions
198 | - Prepare and organise 4 weekly competitions for Knockout Wars
199 | - Each week a different Influencer will host the tournament
200 |
201 | The campaign will market EOS
202 | - Market to our community, including AMAs
203 | - Youtube, Twitter and Telegram campaign
204 | - Banners in Knockout Wars Game
205 |
206 | Influencer Costs: 4,000 USD
207 | - Mid-level influencer 1,000 USD
208 | - 4 influencers = 4 * 1,000 = 4,000 USD
209 |
210 | Design & Management Costs: 5,000 USD
211 | - The annual salary for calculation 60,000 USD
212 | - (60,000 / 12) * 1 month
213 |
214 |
215 |
216 | ## Future Plans
217 |
218 | After successfully implementing our #Influence&Earn program and establishing a strong POC, we will seek further grants or VC investment to enhance & expand the #Influence&Earn program to on-board the next 100 million gamers.
219 |
220 |
221 | ## Additional Information
222 |
223 | **How did you hear about the Grants Program?** While discussing about it with Yves La Rose
224 |
--------------------------------------------------------------------------------
/applications/oci-transaction-lifecycle.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** API Transaction Lifecycle
4 | - **Team Name:** OCI, Object Computing, Inc.
5 | - **EOS Payment Address:** N/A
6 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 3
7 |
8 | ## Project Overview
9 |
10 | This project is in response to the API Blue Paper section titled: API Transaction Lifecycle.
11 |
12 | ### Overview
13 |
14 | - **Name:** API Transaction Lifecycle
15 | - **Brief Description:** The API Transaction Lifecycle project is designed to provide EOSIO users clear visibility into transaction status at each step in the process. Four key enhancements to the EOSIO API code are included in this project: a) Transaction Retry, b) Transaction Finality API, c) Transaction Resource Cost Estimation, d) Subjective Billing Improvements.
16 | - **Relationship to EOSIO:** The core EOSIO APIs to be improved through this project are critical components of the EOSIO code that allows applications to interact with the blockchain.
17 | - **Reason for Interest:** The OCI team has been involved in core EOSIO development since 2017 and has expertise in this area. These enhancements will increase the usability and functionality of the APIs.
18 |
19 | ### Project Details
20 |
21 | - **A. Transaction Retry:** API nodes will monitor transactions as they enter the system and ensure they are resubmitted into the system if they are not processed in a configurable time period. This feature will establish a pool of known incoming transactions and monitor their inclusion into the blockchain. Once the system reaches an acceptable level of confidence that a transaction has been included in a block, the transaction can be pruned from the pool. If a transaction is identified as missing from the blockchain based on the given criteria, the Transaction Retry feature will attempt to resubmit the transaction to the network for inclusion in future blocks until the point at which the transaction expires.
22 | - **B. Transaction Finality Status:** API nodes will monitor transactions as they enter the system and provide a new API method to report transaction status.
23 | - **C. Transaction Resource Cost Estimation:** API nodes will provide an estimate of resources (central processing unit (CPU), random access memory (RAM), and internet bandwidth (NET)) to perform a transaction when a transaction is sent to a new 'compute_transaction' endpoint. The transaction will be applied subjectively to the local chain to calculate resource costs like CPU and NET and determine the resulting deltas in RAM usage. The response will be returned to the client to inform them of the costs associated with the given transaction data.
24 | - **D. Subjective Billing Improvements:** API nodes will provide an added leeway per account that allows a more permissive “subjective billing” rate (rate of utilization) in order to provide a better user experience while maintaining system integrity. The existing subjective CPU decay window will be made configurable from the existing hard-coded value of 24 hours to allow node operators to provide a more relaxed subjective CPU penalty to users. The existing `disable-subjective-account-billing` function will be expanded to also apply to the 3-strike rule, allowing block producers to prevent abnormal transaction loss for accounts expected to sometimes fail during production.
25 |
26 | ### Ecosystem Fit
27 |
28 | - This project fits into the EOSIO Core code
29 | - Target Audience: EOSIO application and SDK developers
30 | - The project improves the usability of the EOSIO APIs in multiple ways
31 | - We are not aware of other projects similar to this in the EOSIO ecosystem
32 |
33 | ## Team
34 |
35 | ### Team members
36 |
37 | - **Lead:** Brian Johnson
38 | - Kevin Heifner
39 | - Jonathan Giszczak
40 | - Chris Gundlach
41 | - Huang-Ming Huang
42 | - Alice C. Dames (PM)
43 | - John W. Schultz (DM)
44 |
45 | ### Contact
46 |
47 | - **Contact Name:** Dan Fedj
48 | - **Contact Email:** fedjd@objectcomputing.com
49 | - **Website:** https://objectcomputing.com/
50 |
51 | ### Legal Structure
52 | - **Registered Legal Entity:** Object Computing, Inc.
53 | - **Registered Address:** 12140 Woodcrest, Executive Dr., Ste 300, St. Louis, MO 63141
54 |
55 | ### Team Experience
56 |
57 | The OCI team has been involved in almost all development aspects of the EOSIO code base since 2017. Multiple members of the OCI team have worked on the EOSIO code base, and Brian Johnson and Kevin Heifner are top contributors to the EOSIO repo.
58 |
59 | ### Team Org Repos
60 |
61 | - https://github.com/objectcomputing/
62 | - https://github.com/objectcomputing/OpenDDS
63 | - https://github.com/micronaut-projects/micronaut-core
64 | - https://github.com/grails/grails-core
65 |
66 | ### Team Member Repos
67 | - https://github.com/brianjohnson5972
68 | - https://github.com/heifner
69 | - https://github.com/jgiszczak
70 | - https://github.com/cj-oci
71 | - https://github.com/huangminghuang
72 |
73 | ### Team LinkedIn Profiles
74 |
75 | - https://www.linkedin.com/in/brian-johnson-a7740612/
76 | - https://www.linkedin.com/in/heifner/
77 | - https://www.linkedin.com/in/jonathan-giszczak/
78 | - https://www.linkedin.com/in/ciju-john-4271789/
79 | - https://www.linkedin.com/in/clayton-calabrese-1175b6122/
80 | - https://www.linkedin.com/in/christopher-gundlach-34250554/
81 | - https://www.linkedin.com/in/huang-ming-huang-87670031/
82 | - https://www.linkedin.com/in/alicedames/
83 | - https://www.linkedin.com/in/john-w-schultz-78465b16/
84 |
85 | ## Development Status
86 |
87 | - https://github.com/eosnetworkfoundation/mandel/tree/feature/oci_api_phase1
88 | - [EOS API Blue Paper](https://medium.com/eos-network-foundation/api-blue-paper-e78c0be0d878)
89 | - Requirements were worked out over multiple meetings with API working group team members and with ENF CEO (Yves La Rose)
90 |
91 | ## Development Roadmap
92 |
93 | ### Overview
94 |
95 | - **Total Estimated Duration:** 3 months
96 | - **Full-Time Equivalent (FTE):** 3, not including PM
97 | - **Total Costs:** $380,000 USD
98 |
99 | ### Milestone 0 - Initiate Project
100 |
101 | - **Estimated duration:** 1 week
102 | - **FTE:** 2
103 | - **Costs:** $50,000 USD
104 |
105 | ### Milestone 1 - Release Candidates: a) Transaction Retry, b) Transaction Finality Status
106 |
107 | - **Estimated duration:** 12 weeks
108 | - **FTE:** 2
109 | - **Costs:** $150,000 USD
110 |
111 | | Number | Deliverable | Specification |
112 | | -----: | ----------- | ------------- |
113 | | 0a. | License | MIT |
114 | | 0b. | Documentation | OCI will provide documentation of the APIs in Markdown, as well as documentation suitable for release notes. |
115 | | 0c. | Unit Tests | Core functions will be fully covered by unit tests to ensure functionality and robustness. |
116 | | 0d. | Integration Tests | Integration tests will be developed, including new and modified tests. |
117 | | 1. | EOSIO API Transaction Retry | Nodes will monitor transactions as they are sent into the system and ensure they are resubmitted into the system if they are not processed in a configurable time period. This feature will establish a pool of known incoming transactions and monitor their inclusion into the blockchain. Once the system reaches an acceptable level of confidence that a transaction has been included in a block, the transaction can be pruned from the pool. If a transaction is identified as missing from the blockchain based on the given criteria, the system will attempt to resubmit the transaction to the network for inclusion in future blocks until the point at which the transaction expires. |
118 | | 2. | EOSIO API Transaction Finality Status | Nodes will monitor transactions as they are sent into the system and will provide a new API method to report transaction status. |
119 |
120 |
121 | ### Milestone 2 - Release Candidates: c) Transaction Resource Estimation, d) Subjective Billing Improvements
122 |
123 | - **Estimated Duration:** 8 weeks
124 | - **FTE:** 2
125 | - **Costs:** $100,000 USD
126 |
127 | | Number | Deliverable | Specification |
128 | | -----: | ----------- | ------------- |
129 | | 0a. | License | MIT |
130 | | 0b. | Documentation | OCI will provide documentation of the APIs in Markdown, as well as documentation suitable for release notes. |
131 | | 0c. | Unit Tests | Core functions will be fully covered by unit tests to ensure functionality and robustness. |
132 | | 0d. | Integration Tests | Integration tests will be developed, including new and modified tests. |
133 | | 1. | EOSIO Transaction Resource Cost Estimation | Nodes will provide an estimate of resources (central processing unit (CPU), random access memory (RAM), and internet bandwidth (NET)) to perform a transaction when a transaction is sent to 'compute_transaction'. The transaction will be applied subjectively to the local chain to calculate resource costs like CPU and NET and determine the resulting deltas in RAM usage. The response will be returned to the client to inform them of the costs associated with the given transaction data. |
134 | | 2. | EOSIO Subjective Billing Improvements | Nodes will provide an added leeway per account that allows a more permissive “subjective billing” rate (rate of utilization) in order to provide a better user experience while maintaining system integrity. The existing subjective CPU decay window will be made configurable from the existing hard-coded value of 24 hours to allow node operators to provide a more relaxed subjective CPU penalty to their users. The existing `disable-subjective-account-billing` function will be expanded to also apply to the 3-strike rule, allowing block producers to prevent abnormal transaction loss for accounts expected to sometimes fail during production. |
135 |
136 | ### Milestone 3 - Project Completion
137 |
138 | - **Estimated Duration:** 1 week
139 | - **FTE:** 2
140 | - **Costs:** $80,000 USD
141 |
142 |
143 |
144 | ## Future Plans
145 |
146 | - Only support for the API Transaction Lifecycle is included in this project; additional, separate support and enhancement projects as outlined in the ENF's blue papers are planned following completion of this one.
147 | - OCI intends to bid on future ENF projects through the Grant Framework.
148 |
149 |
150 | ## Additional Information
151 |
152 | **How did you hear about the Grants Program?** We learned about the Grants Program from a member of the EOS Network Foundation.
153 |
154 |
--------------------------------------------------------------------------------
/applications/trustswap.md:
--------------------------------------------------------------------------------
1 | # EOS Network Foundation Grant Proposal
2 |
3 | - **Project Name:** TrustSwap
4 | - **Team Name:** TrustSwap
5 | - **EOS Payment Address:** trustswap111
6 | - **[Level](https://github.com/eosnetworkfoundation/grant-framework#grant-levels):** 1
7 | - **Pomelo Grant(s):** N/A
8 |
9 | ## Contact
10 |
11 | - **Contact Name:** Esteban Saá B.
12 | - **Contact Email:** steban@gmail.com
13 | - **Website:** https://trustswap-testnet.web.app/
14 |
15 | ## Project Overview
16 |
17 | TrustSwap is a decentralized crypto exchange build on top of the Trust EVM Blockchain; it bring an easy to use yet poweful Web3 interface. The code is forked from Uniswap V2. This grant will fund the development of a new frontend, as well as the deployment of the correspondent smart contracts on the TrustEVM blockchain.
18 |
19 | ### Overview
20 |
21 | - **Name:** TrustSwap
22 | - **Brief Description:** TrustSwap is an open source decentralized exchange structured to work on top of TrustEVM Blockchain. It delivers a fast, secure and easy to use EVM20 token trading.
23 | - **Relationship to EOSIO:** TrustSwap is built on top of Trust, an EVM compatible blokchain of EOSIO.
24 | - **Reason for Interest:** We are looking to create the most scalable and easy to use swap service. Trust EVM provides a solid foundation to build on.
25 |
26 | ### Project Details
27 |
28 | - Our project is early on its development process, this allows us to align our decision making with the best interests of the IOS community.
29 | - We compiled a few ideas for the designs here: https://www.figma.com/file/IPrFq5RrP0V3cSMO1IwJrv/Swap-branding-and-logo . We are still early on the process of creating a brand. Most of our work so far has been devoted to deploying, testing and adapting to the inerworking of TrustEVM.
30 | - Our code comes from the Uniswap project, the following links contains broad documentation on the project: https://docs.uniswap.org/protocol/V2/reference/API/overview
31 | - We will be reusing many of the components of the code where our project is forked from. This includes frameworks as REACT for the frontend: https://reactjs.org/. For the back end we are using the MERN stack to build a static site. MERN includes tools such as: https://github.com/nodejs/node. The resulting code is static HTML that we host at Google Firebase, it includes several functions such as CDN, so we can substain highloads maintaing good quality of service, and defend from DDOS attacks. Further the hosting platform allows us to implement CD/CD pilelines and optimize our deployment methodologies.
32 | - While we are very early on our development process we have deployed several smart contracts and their respective interfaces.
33 | - https://trustswap-testnet.web.app/ is the frontend to our decentralized exchange. It curently makes use of the TrustEVM testnet.
34 | - https://trustswap-farm.web.app/ is our farm contract, it accepts LP deposits from our decentralized exchange and pays out testnet token.
35 | - https://docs.trustswap-farm.web.app/ is our documentation site, it includes general information of our platform. We are using Gitbook for it, will be connected once our domain name is decided.
36 | - https://www.npmjs.com/settings/trustevm/packages , we have published an SDK to npmjs.com, this will make it easy for other developers to connect to our smart contract. There are multiple use cases for this, for instance market makers and arbitragers can use our SDK to make their systems work.
37 | - TrustSwap will not divert far from the orignal source code we initially forked from, instead we will adapit it to TrustEVM. We start with the open source version of the Uniswap V2, and will upgrade to V3 once the license allow is.
38 | - As part of our initial work we have deployed two extremely important smart contracts that will provide a backbone to the upcoming deployments from other teams. These are the WrappedEVM contract, and the Multicall2 contract. These contracts are fundamental building blocks of any EVM ecosystem. We plan to coordinate work with the main devs of the project, so that the deployment of these contracts can be done securely for mainnet.
39 |
40 | ### Ecosystem Fit
41 |
42 | - We believe in a future where value flows freely accross decentralized networks. This means that TrustEVM needs a way to receive, swap and send away value to other networks, coins, tokens and NFTs.
43 | - Our target audience is a world of crypto users looking to safely trade their crypto currencies, with a focus on those not expert with decentralized platforms. We specially aim to make things easy.
44 | - The project solves the need of users to trade among multiple crypto currencies; also the need to obtain tokens of new projects and swap for stable currencies.
45 | - There are multiple crypto decentralized exchanged on our ecosystem, yet we are the first one available on the upcoming Trust EVM EOS blockchain. There are currently no other decetralized exchanges built for Trust EVM.
46 |
47 | ## Team
48 |
49 | ### Team members
50 |
51 | - **Team Leader:** Esteban Saá Barona
52 |
53 | ### Legal Structure
54 | - **Registered Legal Entity:** We are in the initial process of registration
55 | - **Registered Address:** N/A
56 |
57 | ### Team Experience
58 |
59 | We have been working for over 25 years with highly scalable network platforms with a focus on Linux servers and network security. Our skills include developing highly scalable LAMP platforms. Discovered Bitcoin on 2012 and inspired on satoshidice, created satoshicode, a word finding game that was popular for a while, only to be killed when fees made it inpossible to play. We were early supporters and users of mastercoin/omni, this interest also was killed by BTC high fees. The high fees of Bitcoin switched our attention to building on Ethereum, where we partcipaided anonymously for devevelopment of security testing tools. During the market bull runs switched focus into trading and investing; we gained a lot of experience but ultimatelly discovered that the passion that motivate us is writing code and creating products. We see a future where the world runs around decentralized technolgies and cryptopgraphy. We were critical on the early days of Ethereum for its plans of switching to PoS, https://twitter.com/estebs/status/614086876165705728 , eventually we understood its merits, and saw many of our concerns solved by dPoS.
60 |
61 | ### Team Org Repos
62 |
63 | - This is our main code repository: https://github.com/evm20
64 |
65 | ### Team Member Repos
66 |
67 | - https://github.com/steban1
68 |
69 | ### Team LinkedIn Profiles (if available)
70 |
71 | - Esteban Saá B. Linledin: https://www.linkedin.com/in/esteban-s-988b6457/
72 |
73 | - Telegram Group: https://t.me/jointrustswap
74 | - Twitter: https://twitter.com/joinTrustSwap
75 |
76 | ## Development Status
77 |
78 | We have a fully functional decentralized exchange working on the TrustEVM testnet, we have also deployed a functioning staking farm. Both are being actively tested by the EOS community. Further we have deployed multisig bridge contracts, an evm20 faucet, several evm20 tokens, wrapped EVM20 contract, and Multicall contract. We are the first team deploying contracts and actively testing the TrustEVM.
79 |
80 | ## Development Roadmap
81 |
82 | ### Overview
83 |
84 | - **Total Estimated Duration:** The frontend design and mainnet deployment of smart contract will take 2 months of work, plus one month of testing and debugging. We plan to be ready for the first day of TrustEVM mainnet with a production ready and fully functional decentralized exchange.
85 |
86 | ### Milestone 1 — Implement redesigned Swap frontend
87 |
88 | - **Estimated duration:** 3 months
89 | - **FTE:** 2
90 | - **Costs:** 10,000 USD
91 |
92 | | Number | Deliverable | Specification |
93 | | -----: | ----------- | ------------- |
94 | | 0a. | License | MIT |
95 | | 0b. | Documentation | We will provide both **inline documentation** of the code and a basic **tutorial** that explains how to configure TrustEVM and use TrustSwap |
96 | | 0c. | Testing Guide | Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. |
97 | | 0d. | Deployment | We will provide a repository with instructions on how to deploy the frontend. |
98 | | 0e. | Article | We will publish an **article** that explains how the different components of the platform are connected to make the platform work |
99 |
100 |
101 | ## Future Plans
102 |
103 | - We will be updating our core contracts to Version 3 of Uniswap as soon as the license allows us. There are other several contracts we are working on, they include bridging services and lending. We will be maintaining the core DEFI contracts, wEVM and Multicall.
104 |
105 |
106 | ## Additional Information
107 |
108 | **How did you hear about the Grants Program?** personal recommendation
109 | It was mentioned in our telegram channel by a member of our community. We were early to respond to the EOS community building an EVM, we understand the smart contract we are deploying are important to the sucess of the TrustEVM.
110 |
--------------------------------------------------------------------------------
/docs/acceptance-recommendations.md:
--------------------------------------------------------------------------------
1 | # Acceptance Recommendations
2 | - It presents a well-researched or tested concept, for which ideally you are able to show some prior work.
3 | - You can demonstrate that the project will be maintained after completion of the grant, be it through an obvious commitment to the technology from your side, additional funding sources or an existing business model.
4 | - Your team has proven experience with the relevant languages and technologies and/or a strong technical background. You will be asked to provide the GitHub profiles of your team members as part of your application, which we will examine these for past activity and code quality. Naturally, you can also link to projects on other platforms.
5 | - Your application is rich in technical details and well-defined.
6 | - You can clearly present how your project stands out among competitors or implements technology that doesn't exist in the ecosystem yet.
7 |
--------------------------------------------------------------------------------
/docs/accepted_grant_applications.md:
--------------------------------------------------------------------------------
1 | # Accepted ENF Grant Applications
2 |
3 | > This page provides an overview of accepted grant applications, their progress and a link to their GitHub repositories. In cases where the link points to an organization, you should be aware that the grant application itself **is often an independent project unrelated to other work done by the teams**.
4 | >
5 | > This page also lists terminations which happened due to a breach of the terms of the grants programs. Additionally, teams might have decided to stop working on the grant—though not necessarily on the project itself—for various reasons, which is not reflected here.
6 |
7 | ## Table of Contents
8 |
9 | - [2023](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/accepted_grant_applications.md#2023)
10 | - [Season 6 - Second Quarter 2023](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/accepted_grant_applications.md#season-6---second-quarter-2023)
11 | - [Season 5 - First Quarter 2023](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/accepted_grant_applications.md#season-5---first-quarter-2023)
12 |
13 | - [2022](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/accepted_grant_applications.md#2022)
14 | - [Season 4 - Fourth Quarter 2022](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/accepted_grant_applications.md#season-4---fourth-quarter-2022)
15 | - [Season 3 - Third Quarter 2022](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/accepted_grant_applications.md#season-3---third-quarter-2022)
16 | - [Season 2 - Second Quarter 2022](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/accepted_grant_applications.md#season-2---second-quarter-2022)
17 | - [Season 1 - First Quarter 2022](https://github.com/eosnetworkfoundation/grant-framework/blob/main/docs/accepted_grant_applications.md#season-1---first-quarter-2022)
18 |
19 | # 2023
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | ## Season 6 - Second Quarter 2023
28 |
29 | | Team | Project Name / Application | Repo | Terminated | First Delivery | Completed
30 | | :--- | :------ | :--- | :--------: | :------------: | :-------: |
31 | | [FACINGS, Inc.](https://facings.io) | [NFT Collection Manager Stage 2](../applications/facings-nft-collection-manager-stage-2.md) | [GitHub](https://github.com/FACINGS) | | | |
32 | | [Animus Labs LTD (rep Boid.com)](https://www.animus.is) | [Antelope Firewall](../applications/antelopeio_firewall.md) | [GitHub](https://github.com/mchosc) | | | |
33 | | [Creamy Vainilla C.A](https://eosvision.io/) | [EOS VISIONS](../applications/eosreddit2.md) | [GitHub](https://github.com/Creamyvanill) | | | |
34 | | [Alphabox Solutions Pte. Ltd.](https://alphaday.com/) | [Alphaday](../applications/alphaday.md) | [GitHub](https://github.com/Mikael337) | | | |
35 |
36 |
37 | ## Season 5 - First Quarter 2023
38 |
39 | | Team | Project Name / Application | Repo | Terminated | First Delivery | Completed
40 | | :--- | :------ | :--- | :--------: | :------------: | :-------: |
41 | | [Defibox](https://eos.defibox.io/vault) | [Vault Protocol](../applications/Defibox_vault.md) | [GitHub](https://github.com/defiboxswap) | | | |
42 | | EVMNS Labs | [EVMNS (EVM Name Service)](../applications/EVMNS.md) | [GitHub](https://github.com/evmns) | | | |
43 |
44 |
45 | # 2022
46 |
47 | ## Season 4 - Fourth Quarter 2022
48 |
49 | | Team | Project Name / Application | Repo | Terminated | First Delivery | Completed
50 | | :--- | :------ | :--- | :--------: | :------------: | :-------: |
51 | | [Lowkey codes](https://delightlabs.io/) | [Research for building Rust Antelope CDT](../applications/cost-comparing-research-rust-cdt.md) | [GitHub](https://github.com/DELIGHT-LABS) | | | |
52 |
53 | ## Season 3 - Third Quarter 2022
54 |
55 | | Team | Project Name / Application | Repo | Terminated | First Delivery | Completed
56 | | :--- | :------ | :--- | :--------: | :------------: | :-------: |
57 | | [Zaisan BV](https://zaisan.io/about/) | [EOSIO Smart Contract Developer's Handbook](../applications/dev_book.md) | [GitHub](https://github.com/cc32d9) | | | |
58 | | [FACINGS, Inc.](https://facings.io) | [NFT Collection Manager Stage 1](../applications/facings-nft-collection-manager.md) | [GitHub](https://github.com/FACINGS) | | | |
59 | | [Nice1](https://nice1.org/) | [NICE1 Tools Ecosystem](../applications/nice1-tools-ecosystem.md) | [GitHub](https://github.com/nice1-blockchain) | | | |
60 | | [Creamy Vainilla C.A](https://eosvision.io/) | [EOS VISIONS](../applications/eosreddit.md) | [GitHub](https://github.com/Creamyvanill) | | | |
61 | | [Tonomy Foundation](https://tonomy.foundation) | [Verifiable Credentials for the EOSIO SSI Toolkit](../applications/ssi-toolkit-verifiable-credentials.md) | [GitHub](https://github.com/Tonomy-Foundation) | | | |
62 | | [Agenix LLC](https://welcomewagon.ai) | [WelcomeWagon Cards](../applications/WelcomeWagonEngagement.md) | [GitHub](https://github.com/ChuckMacDonald) | | | |
63 |
64 | ## Season 2 - Second Quarter 2022
65 |
66 | | Team | Project Name / Application | Repo | Terminated | First Delivery | Completed
67 | | :--- | :------ | :--- | :--------: | :------------: | :-------: |
68 | | [Time2Discover](https://time2discover.no/) | [The Lost Diamond](../applications/TheLostDiamond_BjornOmsland.md) | [GitHub](https://github.com/bjornomsland) | | | |
69 | | [ZeroPass](https://zeropass.io/) | [EOS Cryptography Proposal 1/2](../applications/eos-cryptography-proposal.md) | [GitHub](https://github.com/ZeroPass/eosio.ck) | | | |
70 | | [GenerEOS Pty Ltd](https://genereos.io/) | [Smart Contract Testing](../applications/genereos-testing-libraries.md) | [GitHub](https://github.com/generEOS) | | | |
71 | | [CETF](https://github.com/n0umen0n) | [Crypto Exchange Traded Funds](../applications/CETF.md) | [GitHub](https://github.com/n0umen0n) | | | |
72 | | [TrustSwap](https://trustswap-testnet.web.app/) | [Trust Swap](../applications/trustswap.md) | [GitHub](https://github.com/evm20) | | | |
73 | | [Zaisan BV](https://zaisan.io/about/) | [Chronicle](../applications/chronicle.md) | [GitHub](https://github.com/EOSChronicleProject/eos-chronicle) | | | |
74 |
75 |
76 | ## Season 1 - First Quarter 2022
77 |
78 | The ENF Grant Framework Launched in 2022 Q2
79 |
80 | | Team | Project Name / Application | Repo | Terminated | First Delivery | Completed
81 | | :--- | :------ | :--- | :--------: | :------------: | :-------: |
82 | | None | None | GitHub | | | |
83 |
--------------------------------------------------------------------------------
/docs/announcement-guidelines.md:
--------------------------------------------------------------------------------
1 | # ENF Grant Framework Announcement Guidelines
2 |
3 | The EOS Network Foundation (ENF) supports many teams and organizations throughout the ecosystem. We often receive requests to participate in project announcements. Unfortunately, we rarely do joint announcements and do not provide quotes.
4 |
5 | In the context of the grants programs, we ask teams not to make any announcements before **the first milestone has been accepted**. This is in order to protect the community from projects that only intend to use the grant announcement to raise funds and/or interest but don't intend to deliver on the application, which has unfortunately happened in the past. For this reason, we reserve the right to terminate grants if this rule is not observed.
6 |
7 | Once you have completed your milestone, we can help by reviewing and proofreading your blogpost. When you have drafted your announcement, send it to grants@eosn.foundation. Please allow 1-3 working days where possible for proofreading articles and wait until the milestone has been accepted to publish it.
8 |
9 | We also cross-promote the most recent projects and their milestones on Twitter on the second Monday of every month, so please keep us updated and send us the links to your published tweets regarding your announcements.
10 |
11 | ## We recommend the following guidelines when writing your post
12 |
13 | - The post should be strategic in nature, focusing on the tech rather than the "announcement" element.
14 | - The team should point to the work, in order to attract attention for the project and demonstrate momentum in the ecosystem. It should be informative for builders and the larger community.
15 | - The post should include a link to a GitHub repository or elsewhere to showcase what's been built so far.
16 | - Suggested flow for the post:
17 | - This is what the team has built so far.
18 | - These are the team's future development plans.
19 | - This is how the technology will contribute to the EOS ecosystem.
20 |
21 | ## Key components
22 |
23 | 1. A blog post header image
24 | - An image helps when sharing the announcement on social networks. It's more prominent in feeds and looks more professional.
25 | - Image ideas include showing how the ENF fits into your flow. Or you can simply put the teams' logos next to each other.
26 | 2. About your team
27 | - This is a chance to share more about your project and what it does.
28 | - You can also highlight additional use cases for this new integration.
29 | 3. Why you chose to build on this tech stack
30 | - Illustrate the rationale for the relationship - why did you decide to work with the EOS Network Foundation?
31 | - Describe the benefits of building on EOSIO etc. (shared security, ease of use, ease of deployment, decentralized, trusted, etc.) and why it was it important to have these features for your project.
32 | 4. Quote
33 | - Your CEO / CTO / Founder may want to include a quote of why they picked the EOS Network Foundation to help gain more visibility and traction in the market.
34 | 5. Description of the EOS Network Foundation
35 | - If you wish to mention the ENF within the body of your text we recommend the following or similar:
36 | - "The EOS Network Foundation funds research and development teams building the
37 | technology stack of the decentralized web."
38 | 6. Social connections
39 | - The following text regarding the EOS Network Foundation's social presence can be added at the end of your article: "Learn more about the EOS Network Foundation by visiting their [website](https://eosnetwork.com/), and stay up to date with the latest developments by following them on [Twitter](https://twitter.com/eosnfoundation)."
40 |
41 | ## Recommended language
42 |
43 | 1. Use specific verbs such as integrate, support or build.
44 | 2. Don't use descriptors like partner/partnership, collaborations, affiliate, strategic or long-term in these announcements—due to the various and evolving ways the ENF works with the ecosystem.
45 | 3. Don't describe your technology as the "first" to build on EOSIO.
46 | 4. Don't indicate that the ENF or EOSIO prefers a certain technology over all others:
47 | - As such, do not use: "the ENF recommends that teams use this tech to build X"
48 | - Instead speak of the merits of the tech: "This technology provides great utility for the EOS network through..."
49 |
50 | We look forward to working with you in creating the next generation of the internet! If you have any questions or would like to be included in our next announcement, please email grants@eosn.foundation.
51 |
52 |
--------------------------------------------------------------------------------
/docs/co-promotion.md:
--------------------------------------------------------------------------------
1 | # Twitter Co-Promotion Guidlines
2 | Medium and Large grants are eligible for co-promotion from the ENF Twitter account.
3 | ## Guidelines
4 |
--------------------------------------------------------------------------------
/docs/faq.md:
--------------------------------------------------------------------------------
1 | #### EOS Network Foundation Grant Framework
2 |
3 | # FAQ - Frequently Asked Questions
4 |
5 | ## General Questions
6 |
7 | ### What are the funding levels?
8 |
9 | There are three levels of grants. Please see [Grant Levels in our main README](../README.md/#grant-levels)
10 |
11 | ### What type of funding does the ENF grant?
12 |
13 | The purpose of the grants is to enable developers, businesses and individuals to build on EOS. Grants vary in size based on the size and scope of the initiative. All forms of projects are open for submission, core chain modifications, tools, libraries, etc. However, strong technical projects that clearly add to the Public Good are preferred.
14 |
15 | ### Who can apply?
16 |
17 | All projects except those that have conducted or will conduct a token sale. The project must be open-source.
18 |
19 | ### Is there a way to get a partial payment up front?
20 |
21 | No.
22 |
23 | ### How and when will I get paid?
24 |
25 | The ENF makes payments after each milestone is approved. The Grant Evaluators need to review the deliverables submitted in the milestones and approve them. Then the invoice is filled out and the milestone amount will be paid in EOS to the account listed on the application.
26 |
27 | ### What if I want to leverage another open-source project. Is that OK?
28 |
29 | Yes. As long as you abide by the licenses on that open-source project.
30 |
31 | ### What can I do if my application was rejected?
32 |
33 | The Grant Committee strives to provide useful feedback. It is possible you can modify your application and re-apply. Or try a different type project for funding.
34 |
35 | ### Why have other grants made it through the system faster than mine?
36 |
37 | Each application is unique. They need to be approved by the Grant Committee first - which may result in a number of meetings to resolve a difference of opinion. Secondly, the Grant Evaluators may request modifications to your application, which may also slow down the process.
38 |
39 | ## Application Process
40 |
41 | ### How long does it take from application to decision?
42 |
43 | There are a number of factors that impact the timeline. The requested amount, the number of changes requested by the evaluators, etc. It usually takes a bit more than a week to go through the Grant Committee. The Evaluation process dependes upon the changes they request. You will be informed along the way.
44 |
45 | ### One of the Grant Evaluators approved my application - is it approved?
46 |
47 | It depends on the grant size which will require between 2 and 4 approvals by the Grant Evaluators. We will notify you by email when it is approved and merge your PR.
48 |
49 | ## After Approval
50 |
51 | ### When can I apply for a follow-up grant?
52 |
53 | Once you have completed your current grant, you may apply for another one.
54 |
55 | ### What if I need to pause the project due to unforseen circmstances?
56 |
57 | Please communicate with us at grants@eosn.foundation. We will try to work with you on a plan.
58 |
59 | ### Can I list the EOS Network Foundation as a parner?
60 |
61 | Only after you have completed your first milesone may you display the ENF grant badge in a context of the repository containing your work or an about page on your website.
62 |
63 | ### Will the ENF help promote my project?
64 |
65 | While we do not provide PR servies, we will tweet about your project after you have delivered your first milestone and likely after each milestone has been completed.
66 |
67 | ### What if I realize it will be impossible to complete on of the milestones?
68 |
69 | PLease contact us at grants@eosn.foundation and we will attempt to work out changes with you. We will likely have you resubmit a moddified application which will be reviewed by the Committee.
70 |
71 | ## Milestone Delivery
72 |
73 | ### How do I submit a milestone?
74 |
75 | For details, please refer to the [milestone delivery guidelines](./milestone-deliverables-guidelines.md) for the respective grants program. Generally speaking, the most important part of a milestone delivery is a list of **the same deliverables listed in the application** with links to their specific commit or tag. The list of deliverables for each of your milestones should be defined in your grant agreement.
76 |
77 | ### Can I submit two or more milestones at one?
78 |
79 | No. We need clear linkage to each milestone so we can separately assess, approve, and pay each.
80 |
81 | ### Can I add a badge to my repo once I’ve completed a milestone?
82 |
83 | Yes - if your grant is [Level 2 or 3](../README.md#grant-levels) grant and your first milestone has been submitted **and accepted**. Please make sure that you follow the [badge guidelines](./grant-badge.md) when doing so.
84 |
85 |
86 | ### Why are other milestones being accepted or discussed faster than mine?
87 |
88 | The Grant Evaluators may request information on your milestone, which may slow down the process.
89 |
--------------------------------------------------------------------------------
/docs/grant-badge.md:
--------------------------------------------------------------------------------
1 | # ENF Grant Badge Usage Guidelines
2 | Usage of the ENF Grant Badge must adhere to the following guidelines.
3 |
4 |
5 |
6 | **Once a project's first milestone has been accepted**, we intend to help teams acknowledge their grant publicly while observing the ENF’s guidelines.
7 |
8 | To that end, we’ve created a set of badges for grant recipients. They are available for download under [grant-framework/img/](../img/).
9 |
10 | *Before you begin using the badge, please note the following points:*
11 |
12 | - Use of the Grant Framework badge is reserved for [Level 2 and 3 grants](https://github.com/eosnetworkfoundation/grant-framework/blob/main/README.md#grant-levels).
13 | - Grants are awarded **for specific projects**, not to teams in general as a blanket endorsement.
14 | - The ENF and its grants program **don’t broker partnerships or joint ventures**, or cosign wholesale any external team’s work. Bearing that in mind, **the badge should only be displayed in project-specific contexts.**
15 | - Please **do**: display the badge
16 | - in a GitHub repository that contains code connected with the grant project,
17 | - on any project-specific webpage **that specifically concerns the deliverables completed as part of the grant**, or
18 | - when appropriate, in a tweet or blog post announcing your grant in a project-specific context.
19 | - Please **don’t**:
20 | - display the badge on your team or project's landing page,
21 | - use the badge before your first milestone has been accepted,
22 | - add it to any social media profiles, or
23 | - use it in any other context that could misrepresent your relationship with the Web3 Foundation.
24 |
25 |
26 | Also, please don't use the **name or logo of the EOS Network Foundation** in any context that could misrepresent your relationship with the EOS Network Foundation. Infringement of these guidelines can result in an immediate annulment of the grant.
27 |
28 | In case of any questions, please don’t hesitate to reach out to us at grants@eosnetwork.com.
29 |
30 |
--------------------------------------------------------------------------------
/docs/grant_guidelines_per_category.md:
--------------------------------------------------------------------------------
1 | # Grant guidelines for most popular grant categories
2 |
3 | While we ask teams to provide details of their envisioned solution, we are aware that precise implementation might slightly differ from the initial specification. Should there be large deviations from the original plan, please communicate this to the Grants Team ahead of time.
4 |
5 | The list below serves only as a guide and is not exhaustive.
6 |
7 | ## Core Antelope Chain / Sub-modules
8 |
9 | ### Applies to
10 |
11 | - Building/extending the core [Antelope](https://antelope.io/) code base or sub-modules.
12 |
13 | ### Requirements
14 |
15 | - List the publicly exposed methods
16 | - For each method, specify (to the best of present knowledge):
17 | - Method signature (incl. parameters with their types, return type)
18 | - Short description (code template)
19 | - Runtime Storage defined by your module
20 | - [Use case diagram](https://www.wikiwand.com/en/Use_case_diagram) with e.g. UML or SysML (or similar tool demonstrating how external users/system components interact with one another)
21 |
22 |
23 | ## Development Tools
24 |
25 | ### Applies to
26 |
27 | - CLI tools
28 | - IDE / IDE plugin
29 |
30 | ### Requirements
31 |
32 | - State what programming language you'll use
33 | - Describe the commands that you want to make available to the users:
34 | - Name
35 | - Parameters
36 | - Result (value returned / file created or modified / application started etc.)
37 |
38 |
39 | ## UI Development
40 |
41 | ### Applies to
42 | - Building a web application with front-end components
43 | - Developing a mobile app
44 |
45 | ### Requirements
46 | - Provide mockups and/or wireframes (e.g. Figma)
47 | - List frameworks & tools for development & testing (e.g. React Native, Angular)
48 |
49 | ## Backend Development
50 |
51 | ### Applies to
52 | - Building a service/mobile app/webapp that relies on a back-end component
53 |
54 | ### Requirements
55 | - State what language & framework you'll use (e.g. python with Django, Rust with Rocket)
56 | - Define your database requirements and which system you will use
57 | - Choose how & where your backend will be hosted (cloud provider, IPFS, co-location facility)
58 | - Explain scaling & how you plan to handle it
59 | - Explain your use of CI/CD, tools used, etc.
60 | - If you are hosting the backend yourself, consider adding a [security.txt](https://securitytxt.org/) file so people can get in touch with you regarding (potential) security issues
61 | - Provide a link to your Github repository if you already have the structure in place
62 |
63 | ## Cryptography
64 |
65 | ### Applies to
66 | - New crypto library
67 | - Extending existing library's functionalities
68 |
69 | ### Requirements
70 | - Specify what programming language you'll use
71 | - Provide any publications/papers you will base your work on
72 | - Research other crypto libraries providing similar functionalities.
73 | - State whether/how you plan to use their work.
74 | - If they don't suit your needs, provide a detailed explanation why and what's missing
75 | - List any existing crypto libraries that you will use as reference implementation (e.g. in a different language)
76 |
--------------------------------------------------------------------------------
/docs/maintenance-grants.md:
--------------------------------------------------------------------------------
1 |
2 | # Maintenance Grants
3 |
4 | Maintenance Grants are yet another idea to get involved with the EOS Network community. If you are a user of an open-source library that has gone out of date, or you simply want to work on small new features/fix bugs in these repos, we can support your contributions via a grant. We are happy to award rolling grants on a monthly basis, as long as the work done within each time period is performed to a quality standard deemed satisfactory by the grant evaluators.
5 |
6 | The process of applying for a Maintenance Grant is similar to what was already outlined above, but instead of defining very detailed deliverables for each milestone upfront, we will ask you to specify, where possible:
7 |
8 | - The repo(s) that need maintenance
9 | - Outline of why the specific project should continue being supported
10 | - Broad overview of the features/bugs that need development contributions
11 | - An assurance that the current project owners are willing to review/accept your contributions (a note here: if you're fully taking over the project, it would make more sense for the current owners to transfer the repository to your organisation. If you can't get in touch with them, you may, of course, work on a fork)
12 | - Max budget per month
13 |
14 | Then, at the end of each month, you will need to provide a comprehensive report of the work done, including the list of issues/bugs/pull requests worked on, time spent on each of these & finally the associated cost. It is quite likely that the time allocation & cost will vary from month to month, depending on the nature of the project you're contributing to. The delivery process and format should follow that of a typical [milestone delivery](https://github.com/w3f/Grant-Milestone-Delivery#mailbox-milestone-delivery-process), as will the processing of the payment.
15 |
16 | Please note that:
17 | - Maintenance grants, as the name suggests, are meant to allow teams/individuals to maintain a certain project, and not to continue its development or implement larger features. Please use the traditional application process for this purpose.
18 | - The 1-month timeframe is just a guideline. If you find it unsuitable for you or the chosen project for any reason, feel free to adjust as seen fit and point this out in your application.
19 | - Please bear in mind that the Grants Committee might be stricter in accepting maintainers when compared to typical grants, mostly selecting for applicants with proven experience in the relevant tech stacks.
20 | - Maintenance Grants are only awarded for fixed timeframes. The requested duration needs to be specified in the application.
21 |
--------------------------------------------------------------------------------
/docs/milestone-deliverables-guidelines.md:
--------------------------------------------------------------------------------
1 | # Milestone Delivery Guidelines
2 |
3 | These are the guidelines to be followed for milestones submitted for evaluation.
4 |
5 | ## Submission
6 |
7 | Please submit all your milestones via PR to the [Grant Milestones repository](https://github.com/eosnetworkfoundation/grant-milestones).
8 |
9 | ## Invoice
10 |
11 | Although a milestone needs to be reviewed and accepted, you can already submit your invoice through [this form](https://forms.gle/wLuAzXKa9qYrZQob9).
12 |
13 | ## Content
14 |
15 | The submission should contain the following information:
16 |
17 | - **Name of the grant project**
18 | - **Link to the open-source code/delivery**
19 | - **[License](#license)**
20 | - **[Documentation](#documentation)**
21 | - **[Formatted code](#formatted-code), according to a set of guidelines**
22 | - **[Testing Guide](#testing-guide)**
23 | - **A list of the [milestone deliverables](#milestone-deliverables)**
24 | - **Any [additional information](#additional-information)**
25 |
26 | ## License
27 |
28 | In order to successfully receive grant funding for your application it is necessary for the project to have open source code.
29 | We prefer MIT, but Apache 2.0 or Unlicense are also acceptable. If your delivery comprises multiple repositories, make sure to include the license for each of them.
30 |
31 | ## Documentation
32 |
33 | We value high-quality open source code, but even the most performant code is of little use if it lacks proper documentation.
34 |
35 | We require that you document (where applicable):
36 |
37 | - API calls
38 | - Architecture overview and individual component details
39 | - Algorithms and protocols that are core to your project
40 | - Any other fundamental building blocks to your technology
41 |
42 | Unless absolutely necessary, make the documentation public as well, ideally as part of the appropriate code repository. This will make it easier for the community to use or adapt your project.
43 |
44 | **Note**: Only focus on your **own** contributions. Do not write detailed explanations of already existing components, e.g. IPFS.
45 |
46 | ## Formatted code
47 |
48 | A codebase that is easy to read is also easy to use. We suggest adopting one style from Day 1 and adhering to it across the entire team.
49 | This helps to keep the commit history clean and facilitates any reviews of the introduced changes.
50 |
51 | For **Rust**, we encourage formatting any additional support libraries or helpers by following the [Style Guidelines](https://doc.rust-lang.org/1.0.0/style/README.html).
52 |
53 | For **any other** deliveries, please commit to a particular style & let us know which official guidelines you adopt.
54 |
55 | ## Testing Guide
56 |
57 | We require that each milestone delivery includes a comprehensive test suite, consisting of:
58 |
59 | ### A step-by-step guide demonstrating how your code achieves the milestones
60 |
61 | Please provide documentation on how to install, compile, run and test the deliverable(s). Make sure to include all necessary prerequisites. Common issues while replicating test results involve, among others, undocumented dependencies, version numbers, local database setups, breaking changes in the main branch since delivery, OS- and browser-specific incompatibilities.
62 |
63 | Depending on the deliverable, this could include (but is not limited to)
64 |
65 | - how to embed your library in another application,
66 | - how to make example API calls to your service,
67 | - running your web app, and
68 | - steps to complete some desired action in your mobile app.
69 |
70 | ### Unit tests
71 |
72 | As with any quality software project, each logical code component should be testable.
73 |
74 | ### Integration tests
75 |
76 | We prefer dockerfiles to avoid problems with versions and dependencies.
77 |
78 |
79 | **Note**: If you are not delivering code as part of your project, such a test suite is not applicable. This mainly applies to projects centering on design, research or hardware. If that is the case, please provide detailed instructions on how else we can test/run/replicate your deliverable.
80 |
81 | ## Milestone Deliverables
82 |
83 | Please provide a list of milestone deliverables. This list should closely reflect the list of deliverables agreed on in the Pull Request for the public **Grants Program** application.
84 |
85 | Each item in the list should include a link to the deliverable itself, e.g.:
86 |
87 | - Google Doc link - make sure anyone with the link has View access
88 | - GitHub repository - include the appropriate file/folder in the link
89 |
90 | **Please highlight anything that deviates from the contract** and include further information that you think is relevant to the deliverable, either alongside the appropriate deliverable or under [Additional Information](#additional-information).
91 |
92 | Please ensure the repo has the correct open-source license.
93 |
94 | | Number | Deliverable | Link | Notes |
95 | | ------------- | ------------- | ------------- | ------------- |
96 | | 0a. | License | https://github.com/.../LICENSE | ... |
97 | | 0b. | Documentation | ... | ... |
98 | | 0c. | Testing Guide | ... | ... |
99 | | 1. | ... | ... | ... |
100 | | 2. | ... | ... | ... |
101 |
102 | ## Additional Information
103 |
104 | Please add any additional comments that you consider relevant for the evaluation.
105 |
--------------------------------------------------------------------------------
/docs/minimum-requirements.md:
--------------------------------------------------------------------------------
1 | # Grant Project Minimum Requirements
2 | - All code produced as part of a grant must be open-sourced, and it must also not rely on closed-source software for full functionality.
3 | - We prefer MIT, but Apache 2.0, GPLv3, or Unlicense are also acceptable.
4 | - We do not award grants for projects that have been the object of a successful token sale.
5 | - Grant deliverables must contribute to the EOS Network first and foremost.
6 | - As a general rule, teams are asked to finish a grant before applying for another one.
7 | - Lastly, we do not fund projects that actively encourage gambling, illicit trade, money laundering or criminal activities.
8 | - We require all projects to create documentation that explains how their project works.
9 | - At a minimum, written documentation is required for funding.
10 |
--------------------------------------------------------------------------------
/docs/rfp_info.md:
--------------------------------------------------------------------------------
1 | # Submit an RFP (Request for Proposal) Response
2 |
3 | Ideas generally have better chances of being implemented if they're presented in a project outline format that can be picked up straight away by a team, so if you have a good concept of the milestones required to bring your project to life, you can follow the process below and directly submit an RFP:
4 |
5 | 1. [Fork](https://github.com/eosnetworkfoundation/Grants-Program/fork) this repository.
6 | 2. In the newly created fork, create a copy of the suggestion template ([`rfps/suggestion-template.md`](rfps/suggestion-template.md)) inside the [`rfps`](rfps) folder. Make sure you create a new file and copy the [contents](https://raw.githubusercontent.com/w3f/Grants-Program/master/rfps/suggestion-template.md) of the template into the new one, and _do not modify the template file directly._
7 | 3. Name the file after your idea: `myproject_name.md`.
8 | 4. Fill out the template with the project details. Please include as many details as possible.
9 | 5. Once you're done, create a pull request. The pull request should only contain _one new file_—the Markdown file you created from the template.
10 | 6. You will see the same template as for creating an application. Please replace it with [this one](.github/PULL_REQUEST_TEMPLATE/rfp_pr_template.md).
11 |
--------------------------------------------------------------------------------
/docs/rfps/suggestion-template.md:
--------------------------------------------------------------------------------
1 | # Title of the RFP Proposal
2 |
3 | * **Status:** Open (anyone is allowed to apply) / Closed (invited respondents only) / Implemented (finished)
4 | * **Proposer:** GitHub username
5 | * **Your Project(s):** [optional]: Link(s)
6 | * **Projects you think this work could be useful for** [optional]: Link(s)
7 | * **Teams/People that could deliver the RFP** [optional]: Link(s)
8 |
9 | ## Project Description :page_facing_up:
10 |
11 | Please describe exactly why you are proposing this RFP. Make sure to point out why it’s potentially useful for your project or other projects in the ecosystem.
12 |
13 | ## Deliverables :nut_and_bolt:
14 |
15 | Please list the deliverables of the project in as much detail as possible. Please also estimate the amount of work required and try to divide the project into meaningful milestones.
16 |
17 | * **Total Estimated Duration:** Duration of the whole project
18 | * **Full-time equivalent (FTE):** Amount of time (in days) required for a single person to complete this project ([see](https://en.wikipedia.org/wiki/Full-time_equivalent))
19 | * **Total Costs:** Amount of Payment in USD for the whole project.
20 | ### Milestone 1
21 |
22 | Please add additional milestones in the same way:
23 | * **Estimated Duration:** Duration of milestone 1
24 | * **FTE:** Amount of time (in days) required for a single person to complete this milestone
25 | * **Costs:** Amount of Payment in USD for milestone 1
26 |
27 |
28 | | Number | Deliverable | Specification |
29 | | ------------- | ------------- | ------------- |
30 | | 1. | Title of the deliverable | Please describe the deliverable here as detailed as possible |
31 | | 2. | ... |...|
32 |
--------------------------------------------------------------------------------
/img/ENF-grant-badge-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VaultaFoundation/grant-framework/17ad16e42fecc8277d99e58717795fd7f7ec1080/img/ENF-grant-badge-black.png
--------------------------------------------------------------------------------
/img/ENF-grant-badge-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VaultaFoundation/grant-framework/17ad16e42fecc8277d99e58717795fd7f7ec1080/img/ENF-grant-badge-white.png
--------------------------------------------------------------------------------
/img/enf-header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/VaultaFoundation/grant-framework/17ad16e42fecc8277d99e58717795fd7f7ec1080/img/enf-header.png
--------------------------------------------------------------------------------