├── .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 | ![](https://img.shields.io/static/v1?label=&message=Ted%20Cahall&color=black&style=for-the-badge) 51 | 52 | 53 | ![](https://img.shields.io/static/v1?label=&message=Ted%20Cahall&color=blue&style=plastic) 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) |
  • [ ]
|
  • [X]
|
  • [ ]
| 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) |
  • [ ]
|
  • [X]
|
  • [ ]
| 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) |
  • [ ]
|
  • [X]
|
  • [ ]
| 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) |
  • [ ]
|
  • [ ]
|
  • [X]
| 58 | | [FACINGS, Inc.](https://facings.io) | [NFT Collection Manager Stage 1](../applications/facings-nft-collection-manager.md) | [GitHub](https://github.com/FACINGS) |
  • [ ]
|
  • [ ]
|
  • [X]
| 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) |
  • [ ]
|
  • [ ]
|
  • [X]
| 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) |
  • [ ]
|
  • [X]
|
  • [ ]
| 62 | | [Agenix LLC](https://welcomewagon.ai) | [WelcomeWagon Cards](../applications/WelcomeWagonEngagement.md) | [GitHub](https://github.com/ChuckMacDonald) |
  • [ ]
|
  • [X]
|
  • [ ]
| 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) |
  • [ ]
|
  • [ ]
|
  • [X]
| 70 | | [GenerEOS Pty Ltd](https://genereos.io/) | [Smart Contract Testing](../applications/genereos-testing-libraries.md) | [GitHub](https://github.com/generEOS) |
  • [ ]
|
  • [ ]
|
  • [X]
| 71 | | [CETF](https://github.com/n0umen0n) | [Crypto Exchange Traded Funds](../applications/CETF.md) | [GitHub](https://github.com/n0umen0n) |
  • [ ]
|
  • [X]
|
  • [ ]
| 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) |
  • [ ]
|
  • [X]
|
  • [ ]
| 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 --------------------------------------------------------------------------------