Category: Blockchain

  • 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.

  • Tracking government funds on a blockchain

    Can you use a blockchain to track government funds? How hard is it? The answer is yes and ‘not hard.’

    Recently I have heard stories of how there is government corruption and misuse of federal funds, and it has been going on for a long time. (Also here) However, I don’t often hear solutions of how to best track federal money or being able to run audits in a timely way. Enter blockchain technology.

    Some would argue that it works just fine to use centralized solutions to track the money, but with blockchain technology, you can move funding around, and set up a structure that is transparent and easily auditable – by design.

    There may already be solutions out there, but I haven’t found any good examples to post here. So if you find any, please let me know.

    The following post will describe in detail how I set up a proof-of-concept to track government funds on a blockchain solution. It starts with the US Government approving the bill and issuing the funds. It then follows the funds from organization to organization. At the end, it will show one way of tracking the funds that are spent and removing the funds from the system. It doesn’t just get rid of the funds, but executes a transaction for the balance that is spent, and proves a transaction ID and audit trail of each dollar from start to finish.

    OVERALL PROCESS

    Before I get into the actual solution, I wanted to mention what the process is for this tracking and how it works. There are some steps that would be needed in order to get this system into production. Everything described in this post is merely a proof-of-concept. I wanted to see if I could build a simple solution that could be used to track funds. Then I tested it out. There are probably a lot of questions about what this system would and would not be. At the end of the post, I will add a section for “things to consider” so hopefully that will answer some of the questions that will come up.

    First, this system relies on many different Waves Cryptocurrency Wallets. (More about the Waves Platform here.) That will raise a lot of questions right away. Government funding and a slightly unknown crypto platform hardly can be seen hand-in-hand working together. But the Waves Project has been around for at least 5 years and is a solid blockchain platform that I have used for many projects. It is easy to use for most people in the blockchain space, and anyone with experience in an IT department would be able to figure it out with some light training. (very user friendly.) Unlike other blockchain platforms, you do NOT need to be a blockchain developer to use it.

    Second, the process uses Token Creation. It is basically like creating your own cryptocurrency. However, even though this process could be used to create a crypto that has real-world-value, there are steps that were NOT done in order to make that possible. One example is: I didn’t list it on an Exchange. There are multiple other things that a developer team would need to do in order for it to be considered an actual cryptocurrency. So the coins mentioned here (called FundTracker Coins) should instead be called a token, because it is a digital asset that represents money, but it is not a full cryptocurrency. More details below.

    Next, when using this system, there are some assumptions that should be known to everyone using it. Each token (called FundTracker token) should be considered equivalent to 1 US Dollar. (USD) When the token creation process was tested, there were properties configured that would make it similar – such as giving it two decimal places and making it re-issuable.

    We took a recent example of Mississippi TANF funds (see here) that were approved for Year 2022, and created exactly 16.6 billion tokens to be issued out by the US Government. The tokens start in the US Government Wallet, and were moved to each state’s wallet – just as funding would move down to the states when they are issued. Wallets are created and issued out to each organization as the process is stood up. This is all explained in the next section.

    THE SOLUTION

    This section will walk through how the FundTracker system was brought online and what each step entailed. There should be enough detail, so others can follow along and even replicate this system in the future as needed.

    START:

    1. The Waves Platform was chosen for this solution. We used the TESTNET so that we could run this system – and it would not cost anything besides the cost of existing computers and internet.
      1. Documentation here: https://docs.waves.tech/en/
    2. The software from the Waves Platform that was used was the Waves FX Wallet Software. It can be downloaded here.
      1. Everything on this blog post can be done on a Windows OS computer. So just ignore anything not related the basic Wallet FX install on windows OS.
    3. Once the software is installed, you will need to create a new account.
      1. Be sure to select TESTNET. (By default, the drop down says MAINNET. )
    4. The first account you create is considered the US GOVT Wallet. So you will want to name that account something like “WALLET_USGOVT_01” or whatever you want to call it.
      1. It will ask you to create a password. I used an online password generator for all passwords. Not the safest method, but this is only a test system.
      2. Consideration would need to be made for who should be the Administrator for each wallet that is created. Wallets are generally controlled by individual users. Otherwise there would need to be a Custodial Wallet process set up. I won’t get into details about this in this blog post, but can expand on this in a later blog post if needed.
      3. In the process of creating the wallet, it will give you SEED WORDS for you to save. Be sure to save them in a safe place. Losing the seed words could result in the loss of access to the Wallet permanently. (if password is lost)

    Wallet 01 Name:

    WALLET_USA_01

    Wallet ID:

    3NBUChGaPdCNkvL4SJZLfUbHW1M6egHUFBQ

    The following list are the Wallet Address IDs that were used in my test:

    US GOVT		3NBUChGaPdCNkvL4SJZLfUbHW1M6egHUFBQ			
    MS WALLET	3N2cbSPiAe9YknksccmuVQMevC9haNvQVLh
    TANF WALLET	3MuhYHrXFQxC2xNuS7Hs8yEwaUwnqQP1Z6D

    6. The Waves Block Explorer that I used is here: https://wavesexplorer.com/?network=testnet

    7. In order to do anything on the platform, you need WAVES Coins to pay for it. Since this is TESTNET, the coins can be received to your wallet from a Faucet. That is found here: https://wavesexplorer.com/faucet?network=testnet

    8. A brand new token is created called FUNDTRACKER COIN.  This coin has no real world value and is only used for tracking federal government funds as they are created and moved around between organizations, people, and wallets.

    TOKEN ISSUED  (Digital Asset)
    
    Name:
    FundTracker Coin
    
    Asset ID:
    6RHmhAAMdY2QSyj74mQd4PEQ1wRxUEu2MTzPrLVWxsgY
    
    Balance:
    16,600,000,000
    
    DETAILS:
    ISSUED:
    Issued FundTracker Token
    Amount: 16600000000
    6RHmhAAMdY2QSyj74mQd4PEQ1wRxUEu2MTzPrLVWxsgY
    2022-09-14 22:06:55
    
    URL:
    https://wavesexplorer.com/assets/6RHmhAAMdY2QSyj74mQd4PEQ1wRxUEu2MTzPrLVWxsgY?network=testnet
    

    9. A wallet is created for every state in the United States.  For this example, we are going to use the state of Mississippi.

    1. The reason we are doing that is because we want to be able to track the funds that went from the US Government to the State of Mississippi and on to other organizations. 
    2. https://mississippitoday.org/2022/09/13/phil-bryant-brett-favre-welfare/

    NOTE: For this proof-of-concept (POC) we did not create the other 49 wallets for all the states. Only the Mississippi Wallet was created. In a further testing scenario, that would have to be done. It would definitely be needed for a production system.

    10. Logged back into USA Government Wallet. (Wallet 01)

    11. Send 94 Million FUNDTRACKER TOKENS to MS_WALLET_03.

    Sent 94 M to Mississippi Wallet:
    
    Sent 94000000 FundTracker
    to 3N2cbSPiAe9YknksccmuVQMevC9haNvQVLh
    4cmpUgXTMrc4K8p9wvow8HLMnjYEag3F37Ag5N8tMSBw
    2022-09-14 22:17:55
    
    TX ID:
    4cmpUgXTMrc4K8p9wvow8HLMnjYEag3F37Ag5N8tMSBw
    

    12. Log into the MS_WALLET_03 and check the balance to make sure the funds are there.

    13. NEXT STEP IS SIMULATED: The remaining funds would normally be sent to the 49 other states for this fund.  I did not create 49 other Waves Wallets for this.  Remaining funds are still sitting in US_GOVT wallet.

    NOTE: The remaining balance that is still in the US GOVT wallet can be seen here:

    (look under Assets)

    https://wavesexplorer.com/addresses/3NBUChGaPdCNkvL4SJZLfUbHW1M6egHUFBQ?network=testnet

    14. NEXT STEP IS SIMULATED: After the US Govt. has issued out all the coins from their wallet to all the states’ wallets, each state would distribute the correct amount of coins (funding) to each wallet for each approved organization. We continue on with this example for Mississippi.

    15. Create wallets for each approved organization that will be receiving funds.

    16. For this demonstration,  I am going to create a wallet for MISSISSIPPI TANF WALLET:

    MISSISSIPPI TANF WALLET
    Create next wallet:
    Account Name:
    MISSISSIPPI TANF WALLET
    
    Public wallet address:
    3MuhYHrXFQxC2xNuS7Hs8yEwaUwnqQP1Z6D
    
    URL:
    https://wavesexplorer.com/addresses/3MuhYHrXFQxC2xNuS7Hs8yEwaUwnqQP1Z6D?network=testnet&search=3MuhYHrXFQxC2xNuS7Hs8yEwaUwnqQP1Z6D

    17. Send FundTracker Tokens from MS_WALLET_03 to TANF WALLET

    Sent 20000000 FundTracker
    to 3MuhYHrXFQxC2xNuS7Hs8yEwaUwnqQP1Z6D
    BW2UNxZfKK1TWmAcsgGTJKU6NyZbo7nTLSjqFmVp5gGe
    2022-09-14 23:05:28
    
    TX ID:
    BW2UNxZfKK1TWmAcsgGTJKU6NyZbo7nTLSjqFmVp5gGe
    

    18. NEXT STEP IS SIMULATED: User Wallet Creation

    The next step would be to require that all users who needed funding,  to set up a Waves Wallet.  They would use that wallet to track funds from TANF wallet.

    For now, it is too new of a system to force users to do the above step.

    For this demo, and probably for the production system to start with,  administrators would create a wallet for each user that would be receiving federal funding from the State of Mississippi.  Then send FundTracker Coins to each of the wallets.  The amount of funds would match the USD amount that they would be receiving.  Then you can track the funds to the user’s wallet.

    19. NEXT STEP IS SIMULATED: Sending FundTracker Coins to Individuals

    The next step would be to send coins from the TANF wallet to each user’s wallet.  The amounts should match the dollar amounts of funding in USD that each individual would be receiving.

    20. BURNING COINS PROCESS

    There would need to be a process to burn FundTracker Coins.  This would happen primarily at the end of the stream of transferring the coins from A to Z.  At the lowest level of the transfer of funds,  the funds would be used for buying items like groceries or paying contractors to build buildings.

    This was tested out on WAVES TESTNET:

    TX INFO:
    Burned 10 FundTracker Coins
    
    TX ID:
    7Unsf5kmUowjKSjf1pnbmPipnvZNkQWRTQ24hCdtVvJa
    2022-09-14 23:51:11
    
    URL
    https://testnet.wavesexplorer.com/tx/7Unsf5kmUowjKSjf1pnbmPipnvZNkQWRTQ24hCdtVvJa
    
    NOTE:  
    There isn’t a way currently to make additional notes during the burn process.  So the reason for the burn would have to be noted somewhere else.  That is why the Production System would be considered a hybrid system rather than a pure blockchain solution. 
    
    

    It is recommended to have a daily or weekly reconciliation process in order to account for every FundTracker Token in every wallet. This ensures accountability of every token and it makes the system the most accurate. Personnel from IT AUDIT and Finance/Accounting are well versed in this process.

    This completes the section for using the Waves System for tracking government funds. It is not that complicated to use, and we can be contacted for any training that is needed.

    OTHER THINGS TO CONSIDER

    1. ISSUE WITH WALLET IDs to REAL IDs

    There is an issue with being able to connect the WALLET IDs to Real Government issued IDs – such as Driver’s Licenses.  You could make this a requirement and turn this system into a HYBRID WEB APPLICATION and track the WALLET ID and REAL ID inside of a normal database (table).  Whenever tracking is done and you get to the step of needing to identify who has the funds,  you would use that other database table (ID >> ID)  in order to identify who owns that wallet. 

    1. DOWNSTREAM TRACKING REQUIRES A WALLET

    In order for the system to work, anyone downstream that would want funding,  would be required to set up a wallet.  There could be a custodial system in which admins of this system would create wallets for them.  Then as payments are sent from one person/organization to another, the same amount of FUNDTRACKER COINS are also sent wallet to wallet. The only way to ensure the system works,  is to continue doing this process for each transaction. 

    1. WALLET OWNERSHIP CAN BE COMPLEX TO SOME ORGANIZATIONS OR PEOPLE

    Not everyone is good at technology.  Creating and maintaining ownership of cryptocurrency wallets is not an easy task.  It would probably be best to have admins of the main system work on behalf of the users to create wallets and maintain ownership on behalf of the organizations and users.  This could get complicated,  as cryptocurrency wallets are generally meant for individual users – rather than a custodial set up. 

    1. FUNDTRACKER CRYPTOCURRENCY HAS NO VALUE CURRENTLY

    This system as it is designed in this first version, creates the cryptocurrency as having no real world value.  The creation of the coins is merely to indicate an equivalent real-world value of USD that is being moved around between organizations and people. 

    It certainly is possible to make additional changes to this system, that would then cause the cryptocurrency to have value on the open market.  But there would have to be additional steps taken in order for that to happen.  The system would have to have significant enhancements in order to turn it into a financial system – rather than just a record keeping system. 

    The process for creating a real world cryptocurrency is out of scope for this version of the FundTracker System. 

    1. WAVES COIN IS REQUIRED FOR PRODUCTION SYSTEM

    If this system is going to be considered for being LIVE in Production,  it would cost real USD (money) in order to generate the FundTracker Coin.  There are also transaction fees of 0.001 Waves or an amount less than 0.01 USD.  It would take a fraction of a penny,  for every transaction that the system would execute. 

    In order to estimate what it would cost to run the system,  there would need to be an accountant on the project team that could calculate and forecast what that would be. Doing this is out of the scope of the current proof of concept. 

    1. WAVES COIN FLUCTUATES IN VALUE

    It is important to note that using the WAVES System in PRODUCTION would require the WAVES COIN for token creation (new coins) and to execute transactions on the WAVES MAINNET blockchain network. In order to find the current price up to the minute,  go here

    More details on Waves Platform:
    https://waves.tech/
    https://docs.waves.tech/en/
    https://coinmarketcap.com/currencies/waves/