How a Crowdfunding Blockchain Platform should work

There was recently a couple of people that asked our team to investigate a crowdfunding organization. We started to dig into it and we begin to see red flags right away. After the completion of that research, we thought it would be a good idea to set up a blockchain system that would work the way that the scam organization was trying to do it. Then we could use this new demo system to show everyone how it works, what is involved, and how easy it would be to use a block explorer to verify transactions.

We decided to use the Waves platform for our test system. We have used Waves previous with our post on Tracking Government Funds Test Case.

We won’t be able to set up all the pieces to this system, because we didn’t have any software developers on staff at the time of this writing. So instead, pieces of this system will be simulated. We will diagram those pieces out in this blog post.

The steps below will walk thru exactly how this system would be set up, run, and executed. It will provide transparency and clarity to all users throughout the process.

NOTE: This test system was built on the Waves Testnet. All IDs found in this article can be searched here: https://wavesexplorer.com/?network=testnet

START:

  1. Team: First, you would have to have a team in place. You would need developers and members of the team that could help onboard and build the system. There would need to be documentation on the system and on-boarding and training to everyone involved.
  2. Front End Web Application
    1. There would need to be a front end web application that users could log in to in order to see their wallet balance.
    2. They would be able to see a directory of Causes (see item 17)
    3. They could make submissions to Send Givecoin to Causes (receivers)
  3. Data Integration System
    1. There would need to be a way for the entire system to execute operations (logic) between the Web App and the Blockchain System sitting on the backend. (In this example: Waves.tech)
  4. Account Creation: Next, there would need to be a system for creating accounts. There would most likely be a web-based front end built so that users could register new accounts, and then log in once they had an account.
    1. NOTE: there would be development work needed if you were going to build an interface between the web-based centralized account system and the blockchain-based-backend-system. More details on this later.
  5. The web-based system would be easy for members to use. They would log in and check their balances.
  6. Payment System: Once the accounts were created, there would be a payment system for users to use to donate money.
    1. NOTE: Payment Systems are the #1 target for hackers and bad actors. Anytime money is involved in online transactions, that system becomes a target for hackers to go after and attack. The financial reward for breaking into a payment system are high. Recommendation is to use a third party tool like Stripe or Bitpay.
  7. Collection of US Dollars: As members submit payments, the US Dollar amounts (USD) is sent to a bank account somewhere. There should be a robust accounting system for managing that type of volume. There would need to be a reporting system that could also integrate how taxes are calculated. Many small businesses use Quickbooks for accounting.
  8. Blockchain Platform Initial Steps: There would need to be a MAIN_WALLET_01 setup. Token creation would happen and the tokens (or coins) would get added to this wallet at the start.
    1. NOTE: Token creation will not be built during this demo, so that part is simulated. Token creation will be manual during this demo. The process of moving RealGiveCoins (RGC) between wallets will be manual for this demo.
  9. Blockchain-Payment-Integration: If you would fully develop this platform, there would be an automated process that would do the next step of Coin Creation automatically to avoid human error.
    1. 7b. For every 1 USD that was brought into the system, there would be 1 RealGiveCoin (RGC) created and added to the Main Wallet.
  10. Wallet Creation Note: There are two types of wallets: (a) User Maintained Wallets and (b) Custodial Wallets.
    1. In the future, there may come a time where each user is able to create their own Waves Wallet and they are able to backup that wallet, apply software updates for that wallet, and do all related steps for keeping control of the wallet.
    2. Due to the infancy of cryptocurrency and that most people do not understand the responsibility of maintaining control over their own wallet, this demo system will be set up as a Custodial Wallet System.
  11. MAIN_WALLET_01 CREATION: The main wallet is created.
    1. wallet_ID= 3N9MW6mHiGTsHVxTicukh5nDfe2aXYsSx7G
    2. This wallet can be viewed here: https://testnet.wavesexplorer.com/address/3N9MW6mHiGTsHVxTicukh5nDfe2aXYsSx7G/tx
    3. Account Name: RealGiveCoin
  12. Next we are going to generate coins that are going to be used with this System. Coins generated and added to WALLET_01
    1. Coin Name: GiveCoin
    2. Reissuable
      1. Every time someone buys tokens, I can create more of them.
    3. Description:
      1. This coin will be used to give donations to other people in need. This system will be used to track all funds going to good causes. Test system is used today 10/21/2022.
      2. $1=1 GiveCoin
    4. Total Tokens=1,000
      1. Just issuing the first 1,000 tokens for the first $1,000 of this system. I can reissue tokens once it runs out.
    5. value=Each 1 GiveCoin will be equal to $1
    6. Asset ID=EQ8d7S4MiyTiPbq8MZpLk37cYGgsCQJQN1ArWUG3XsCS
    7. Asset_INFO:
  1. We now have 1,000 coins that we can issue out.
  2. Voting System
    1. We would want a system that we could post a question and have members vote so decisions could be made as an organization.
    2. Example: We would want to post a VOTE so that we could choose which charity or person we would want to help first.
    3. This example, we have a posting about a person that cannot pay their electric bill.
      1. The bill is for Jane Doe. The bill is $175.
  3. Submission Form for Gifts (receiver)
    1. We would want a form that people in need could fill out. We would need a way to identify them and to verify that the need they have is legit. The organization would need to investigate and validate it is legit.
  4. Receiver Wallet 01
    1. Each person that wants to receive donations would need to create a Waves Wallet. (PHASE 2)
    2. This could have problems because people may not have access to the wallet software. (PHASE 2)
    3. Once they set up a wallet and receive coins, they could have issues converting it back to USD.
    4. During phase 1, wallets will be set up for each Receiver.
    5. Receiver Wallet 01
      1. Name of wallet = GiveCoin_Receiver_01
      2. wallet_ID=3N1ggQnvjyKn6s4AFTB9bRbgexrhfdnZgdD
  5. Now that the wallet is created, we can receive funds to public wallet address.
  6. CAUSES DIRECTORY ( RECEIVER )
    1. The system would need to have a wallet directory.
    2. Gifters would be able to read through which Cause they wanted to give to.
    3. Each Cause would have a wallet ID listed.
    4. Gifters would copy wallet_ID and then use that when sending. (Phase 1 – they would enter it into form)
  7. Every participant in this system needs to have a wallet.
    1. During Phase 1, all wallets will be created by the GiveCoin Admins.
  8. Gifter 01 does not yet have a wallet.
    1. WALLET_01 is the main system wallet. We did not yet create a wallet for GIFTER_01
  9. Create Gifter 01 Wallet
    1. Name of wallet = GiveCoin_Gifter_01
    2. Wallet_ID=3MxdGmZaBBuyHZB9ATRHuEEHjHx4sjxgRLb
  10. Gifter 01 buys in for $100 and receives 100 Givecoins
    1. Whatever amount that gifter 1 bought for, that is how many GiveCoins they will get into their wallet.
    2. For this example, we will say that Gifter 01 has bought in for $100
    3. Send 100 GiveCoins to Gifter 01 wallet from MAIN WALLET 01
    4. TX_ID=FVKvKZvKhD41qc55PPvbU4X4DvVGk8vFus2JeK5x2oi4
  11. GiveCoin_Gifter_01 balance now shows 100 Givecoins
    1. Wallet_ID=3MxdGmZaBBuyHZB9ATRHuEEHjHx4sjxgRLb
    2. TX_ID=FVKvKZvKhD41qc55PPvbU4X4DvVGk8vFus2JeK5x2oi4
    3. Asset_ID=EQ8d7S4MiyTiPbq8MZpLk37cYGgsCQJQN1ArWUG3XsCS
  12. Gifter 01 sends 100 Givecoins to Receiver 01
    1. TX_ID=Gxca6UHW7oE2twqwrEuoPAREqVJJDwD4RJTqsAPDkLJ8
    2. View TX here: https://testnet.wavesexplorer.com/tx/Gxca6UHW7oE2twqwrEuoPAREqVJJDwD4RJTqsAPDkLJ8
    3. NOTE: If Gifter01 didn’t want to send all 100 to the same wallet, they could view various wallet IDs and send any amounts they wanted to any of the wallets listed.
      1. Example: They could send 50 Givecoins to Receiver01 for electric bill. Then send 50 Givecoins to Receiver02 for rent.
  13. Receiver 01 now has 100 Givecoins in their wallet.
    1. TX_ID=Gxca6UHW7oE2twqwrEuoPAREqVJJDwD4RJTqsAPDkLJ8
    2. Receive 100 Givecoins from Wallet_ID=3MxdGmZaBBuyHZB9ATRHuEEHjHx4sjxgRLb
    3. See TX above in 22-2
    4. Receiver_Wallet_ID=3N1ggQnvjyKn6s4AFTB9bRbgexrhfdnZgdD
    5. Asset_ID=EQ8d7S4MiyTiPbq8MZpLk37cYGgsCQJQN1ArWUG3XsCS
  1. When a Receiver ( that has a CAUSE ) has enough coins in their wallet, they can submit a payment_request. (Phase 1)
    1. Phase 2 – this would be automated once we have a Blockchain Developer.
    2. The payment request would be received by Admins and processed. They would send a payment to the correct merchant for payment.
    3. Receiver would submit all information about the merchant to Givecoin Admins for payment. This would ensure that payments are made for the Cause that was submitted to the platform.
    4. Reports and Audit trails would need to be conducted in order for there to be a trace of all the money. This includes for fees and taxes.
  2. Cause is closed and Status is updated in the system.
  3. Process complete.

Having a backend system like Waves makes it simple to run audits on where the money is and how it moves through the system.

There would be a lot of manual work up front, but once we are able to build phase 2, we would be able to automate a lot of the manual processes that we would have during phase 1.

Having a system like this would allow people to participate in giving to causes, and be able to run audits to see where their gift was in the process.