The CloudCoin Consortium was setup to enable the world to use CloudCoins free of charge. We have many developers who share their work with us.
You are free to use this software and modify it so long as you are not creating malware.
If you have any questions or concerns, please email CloudCoin@Protonmail.com
We are working frantically to create great client-side software.
Links to Know Open-Source CloudCoin Software
GitHubDownload Existing Software
http://cloudcoinconsortium.com/use.htmlPown Online Without Software
https://cloudcoin.digital/pownCheck to see if coins are real without powning
https://cloudcoin.digital/detectClick Folder to Expand
MyWalletName.txt
DefaultUser.txt
wallet_setting.json
transactions.txt
wallet_setting.json
transactions.json
wallet_setting.json
transactions.json
account_management.txt (locations of Wallets)
environment.txt (Tells the computer version, java version RAM etc for trouble shooting)
main.txt
sean.skywallet.cc.stack
wallet_locations.txt
theme.txt
change_server.txt
trusted_transfer_server.txt
trusted_RAIDA.txt
trusted_raida_domain_name.txt
The config file tells the main executible (usually the GUI) some key information. This config file has a stand way so that any GUI Can access data
Here is the standard configuration of the config.txt file.<AUTHENTICATOR> max-coins-to-multi-detect:400 </AUTHENTICATOR> <BACKUPER> </BACKUPER> <DEPOSITOR> combroker-url:https://bank.cloudcoin.global </DEPOSITOR> <DIRECTORYMONITOR> </DIRECTORYMONITOR> <ECHOER> start:https://raida1.CloudCoin.global </ECHOER> <EMAILER> smtp-server:mail.cloudcoin.global username:testmail1 password:ijjlaijijoijeijijijijdf </EMAILER> <EXPORTER> </EXPORTER> <FRACKFIXER> </FACKFIXER> <FOLDERMAKER> </FOLDERMAKER> <GALLERIST> </GALLERIST> <GRADER> </GRADER> <LOSSFIXER> </LOSSFIXER> <MINDER> </MINDER> <TRANSFERER> </TRANSFERE> <SHOWCOINS> </SHOWCOINS> <TRANSFERER> </TRANSFERER> <TRANSLATOR> language:english </TRANSLATOR> <UNPACKER> </UNPACKER> <VAULTER> </VAULTER> <FOLDERS> home: bank:default import:default imported:default export:default trash:default suspect:default </FOLDERS>
The Status reports are files that GUIs can watch. Everytime they change, the GUI can update the user interface so the user knows what is going on.
<AUTHENTICATOR> working: true //true || false numberOfCoinsAuthenticating:500 //0 if idle numberOfCoinsDone:300 //0 if idle numberOfCoinsYetToComplete:200 //0 if idle </AUTHENTICATOR> <BACKUPER> lastBackupYear:2019 lastBackupMonth:September lastbackupDate:15 lastBackupHour:12 lastBackupMinute:37 lastBackupLocation:C:\backuplocation </BACKUPER> <SENDER> working: false //true || false lastSentTo:16777216 //Account number 1-16777215 lastSentAmount:355 //Number of CloudCoin lastSentEnvelope: Envelope Name sentYear:2019 sentMonth:September sentDate:15 sentHour:12 sentMinute:37 </SENDER> <RECIEVER> working: false //true || false lastReceivedAmount:355 //Number of CloudCoin lastReceivedEnvelope: Envelope Name receivedYear:2019 receivedMonth:September receivedDate:15 receivedHour:12 recievedMinute:37 </RECIEVER> <ECHOER> raida0ready:true raida1ready:false ...//left off for brevity raida23ready:true raida24ready:true raida0url:raida0.cloudcoin.global raida1url:raida1.cloudcoin.global ...//left off for brevity raida23url:195.26.54.24:40025 raida24url:raida24.cloudcoin.global raida0echoTime:230 raida1echoTime:702 ...//left off for brevity raida23echoTime:526 raida24echoTime:856 raida0processingTime:.26 raida1echoTime:.336 ...//left off for brevity raida23echoTime:1.36 raida24echoTime:.669 </ECHOER> <EMAILER> smtp-server:mail.cloudcoin.global emailServerUsername:testmail1 emailServerPassword:ijjlaijijoijeijijijijdf </EMAILER> <EXPORTER> working: false //true || false lastExportedTo: C:\exportfolder //the folder that it was exported to. </EXPORTER> <FRACKFIXER> working: true //true || false numberOfCoinsUnFracking:400; currentCoinSN: 16777111 currentCorner: 2 coinsMovedToBank:44 lastMessage:none </FACKFIXER> <GALLERIST> hasJpegs: false // true or false. </GALLERIST> <GRADER> totalNotesGraded:459 notesToBank:300 notesTocounterfeit:20 notesToLost:0 notesToFracked:5 totalNotesGraded:459 coinsToBank:300 coinsTocounterfeit:20 coinsToLost:0 coinsToFracked:5 </GRADER> <LOSSFIXER> //status working or idle status:working coinsMovedToBank:0 coinsMovedToFracked:0 coinsMovedToTrash:2 </LOSSFIXER> <MINDER> //status working or idle status:working coinsMovedToMinder:23 </MINDER> <SENDER> //status working or idle status:working </SENDER> <SHOWCOINS> total:350 bankones:0 bankfives:34 banktwentyfives:2 bankhundreds:3 banktwohundredfiftys:0 frackedones:0 frackedfives:34 frackedtwentyfives:2 frackedhundreds:3 frackedtwohundredfiftys:0 vaultones:0 vaultfives:34 vaulttwentyfives:2 vaulthundreds:3 vaulttwohundredfiftys:0 mindones:0 mindfives:34 mindtwentyfives:2 mindhundreds:3 mindtwohundredfiftys:0 galleryones:0 galleryfives:34 gallerytwentyfives:2 galleryhundreds:3 gallerytwohundredfiftys:0 </SHOWCOINS> <TRANSFERER> </TRANSFERER> <TRANSLATOR> language:english </TRANSLATOR> <UNPACKER> working:false </UNPACKER> <VAULTER> working:false //true of false </VAULTER>
The purpose of the authenticator is to make pown (password own) cloudcoins with the RAIDA and to write the coins with the new PANs to the Detected folder.
The Authenticator works in two modes that have to do with the way the PANs are generated. In Default mode, the PANs are generated completely random. Detection Mode sets the PANs to be the same as the ANs. Email Mode inserts a hash of the email address into the last octet of the PAN but keeps the first three octets random.
The Authenicator reads the user's configuration file to see if there is a recovery email. If there is, the recovery email is used as part of the PANs. If there is no recovery email, then then no recovery email will be included in the PAN.
Location of the config is C://users/[username]/documents/CloudCoin/Accounts/DefulatUser/config.txt
{ "email":"thisistheemail@mycompnay.com" }or if not configured
{ "email":"" }
The Authenticator starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
The starter program will launch the Authenticator by using a command line command.
java Authenticator C:\\Program Files\CloudCoin\Authenticator
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Authenticator myAuthenticator = new Authenticator("C:\Users\[username]\Documents\CloudCoin");
MyAuthenticator.pown(); //changes all ANs to PANs generated like random GUIDs
When files are dropped into the Suspect folder, the Authenticator starts its' work
Location of Log Files: CloudCoin/Accounts/DefulatUser/Logs/Authenticator
Number of Log Files: One log file is created every day. So one per day of use.
Naming convention of Log File:
\ 2018-07-2018.txtContents of Log Files:
2018-07-27,18:54:46.142,[Authenticator],[Result],No 731,SN:3781067,P/F,25/0,Pass,ppppppppppppppppppppppppp
2018-07-27,18:54:46.142,[Authenticator],[Result],No 732,SN:3781068,P/F,19/6,Fail,pfppfppppppfppppffppppppf
Note: The GUI should have had the Echoer echo before the Authenticator is called to work. The GUI must verify that the RAIDA is healthy enough to authenticate by looking at the Echo logs.
If the RAIDA is healthy, (more than 20 ready), the Authenticator is called by a command. The Authenticator gets the URLs of the RAIDA from within the 25 echo log files. The Authenticators then the user's config.txt file to see if there is an email that will be included in the PAN. (See config file below)
In order to generate a PAN that includes the email recovery, the algorith is as follows:
Generate a random GUID such as "0F799311-B1774110-8B85D0F9-CF0BD13F" (hyphens added for readability).
Take three components and concatenate them in order. The components are the CloudCoin's serial number, The RAIDA number that corresponds to the AN and the users email address.
In order to generate a PAN for RAIDA5 for Serial number 16,777,216 for user Sean@Worthington.net we would derive:
"167772165sean@worthington.net"
Note that we remove any commas in the numbers, leading zeros in the RAIDA number and turn any emails to lowercase.
Then we generate a MD5 has based on this: https://passwordsgenerator.net/md5-hash-generator/
The hash for 167772165sean@worthington.net is "34F2804F40039049EEEE097ADA6404A8".
We take the first 24 characters of the random GUID and add the first 8 characters of the MD5 Hash.
Our PAN will be: "0F799311-B1774110-8B85D0F9-34F2804F"
Before sending the detection requets, the Authenticator will delete all the contents of the Predetect folder and then move the coins from the Suspect folder to the Predetect folder. Then it will use the multi-detect protocol and store the results in the Detected folder. The coins that are put in the Detected folder will have the new PANs except if the RAIDA returned 'e' for error or if that RAIDA was not ready (known because it failed to echo) so then it will get a 'u' for untried and keep its AN. If there was no response from the RAIDA, it is assumed that the RAIDA got the request and the PAN is used. If there are too many non responses, the coin will become lost and the loss fixer will figure out if it should use the ANs or PANs.
The Authenticator can only send 400 coins to the multidetect service at a time. If will have to do more coins in batches.
Test 1: Testing POWN with the RAIDA unavailable.
Outcome: Coins are moved to the Detected folder. Inside their "pown" is going to equal "nnnnnnnnnnnnnnnnnnnn"
1. Write the Fake RAIDA Host file to the computer computer's host file (c:\windows\system32\drivers\etc\hosts). The fake RAIDA host file can be found at: https://fakeraida.cloudcoin.global/index.php
2. Call a command to the fake raida to set all the raid to no-respond use an https Get call. Note: Change the password at the end of the call
https://fakeraida.cloudcoin.global/updateFakeRaida.php?echo_0=Ready&delay_0=212&s0=n&echo_13=Ready&delay_13=200&s13=n&echo_1=Ready&delay_1=203 &s1=n&echo_14=Ready&delay_14=200&s14=n&echo_2=Ready&delay_2=200&s2=n&echo_15=Ready&delay_15=200&s15=n&echo_3=Ready&delay_3=300&s3=n& echo_16=Ready&delay_16=200&s16=n&echo_4=Ready&delay_4=100&s4=n&echo_17=Ready&delay_17=200&s17=n&echo_5=Ready&delay_5=200&s5=n& echo_18=Ready&delay_18=197&s18=n&echo_6=Ready&delay_6=213&s6=n&echo_19=Ready&delay_19=200&s19=n&echo_7=Ready&delay_7=200&s7=n& echo_20=Ready&delay_20=200&s20=n&delay_8=200&s8=n&echo_21=Ready&delay_21=200&s21=n&echo_9=Ready&delay_9=200&s9=n&echo_22=Ready& delay_22=200&s22=n&echo_10=Ready&delay_10=207&s10=n&echo_23=Ready&delay_23=200&s23=n&echo_11= Ready&delay_11=100&s11=n&echo_24=Ready&delay_24=200&s24=n&echo_12=Ready&delay_12=200&s12=n&password=changeme
3. Write a CloudCoin (does not have to be real) to the Import folder.
4. Command the Authenticator to Authenticate and wait up to 20 seconds.
5. Check the log files and see if they are in order (format is correct). Report Pass or Fail
6. Check the Detected Folder to see if the CloudCoin is there and if it has all 'n's as it pown value. Report Pass or Fail
7. Write the host file back to the way way it was to end the test.
The Backupper is given the location that a backup is to be placed and then copies all the coins from the Bank, Fracked and Gallery Folders into a folder called "CloudCoin Backup 2018 Oct 13 2.31 pm".
The Backupper starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java Backupper C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Backupper myBackupper = new Backupper("C:\Users\[username]\Documents\CloudCoin");
MyBackupper.backup();
The Backupper watches the command folder for an Backup command.
There is only one Backup command allowed in the CloudCoin/Command/ folder and new Backup commands overwrite old ones. The Backupper should move the command into the CommandHistory folder before it begins.
File Name: backup.command Contents: Backup all files to backup location { "command":"backup", "account":"default" or "account":"2i2iu", //backup default account or specific account "toPath":"default" or "toPath":"C:\\bla\\bla\\foo\\" //Place to put the backed up CloudCoins } Note: If the path is not provided, backup to default location.
The Backupper does not require log files.
The Backupper makes a copy of all the files within: Root/CloudCoin/Accounts/[AccountName]/Bank where AccountName will be DefaultUser.
The Backupper makes a copy of all the files within: Root/CloudCoin/Accounts/[AccountName]/Fracked where AccountName will be DefaultUser.
The Backupper makes a copy of all the files within: Root/CloudCoin/Accounts/[AccountName]/Gallery where AccountName will be DefaultUser..
The Backupper makes a copy of all the files within: Root/CloudCoin/Accounts/[AccountName]/Valut where AccountName will be DefaultUser.
The Backupper makes a copy of all the files within: Root/CloudCoin/Accounts/[AccountName]/Lost where AccountName will be DefaultUser.
The Backupper makes a copy of all the files within: Root/CloudCoin/Accounts/[AccountName]/Mind where AccountName will be DefaultUser..
The Eraser deletes all the files within: Root/CloudCoin/Commands/ and subfolders.
The job of the Echoer is to see if the RAIDA can be contacted and if the RAIDA is healthy enough to pown coins. The Echoer will also record the results so that other Servants will not waste time contacting RAIDA that are offline.
The Echoer is started by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java C:\Program Files\CloudCoin\Echoer\Main C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Echoer myEchoer = new Echoer("C:\Users\[username]\Documents\CloudCoin");
MyEchoer.echo();
The Echoer watches the command folder for an Depositer command.
There is only one Backup command allowed in the CloudCoin/Command/ folder and new Depositer commands overwrite old ones. The Depositer should move the command into the CommandHistory folder before it begins.
FileName echoer.command { "command":"echo" }
There are 25 RAIDA Echo Status reports and one Echo Event log.
Location of status and log files: CloudCoin/Logs/Echoer/
Name of status files: 0_ready_netlatency_internaltime.txt //latency milliseconds such as 0_ready_340_2.37.txt //the internal latency is 2.3751258850098
There will be an array of logs files in the folder like:0_ready_300_1.32.txt 1_ready_724_2.32.txt 2_ready_1452_.54.txt ... 22_notready_345_2.32.txt 23_ready_300_.52.txt 24_ready_87_.84.txt
Contents of Status files
within file: { "url": "https://raida0.CloudCoin.global" } or { "url":"https://88.33.234.21:40009" }
Log file FileName: 2018.11.30.log //New log file every day.
File contents: //Contents First is the timestamp, a space, the request and then response.
{ "timestamp": "2018-11-20 19:14:45:999", "request": "https://RAIDA0.CloudCoin.Global/service/echo", "response": "{"server":"RAIDA0","status":"ready","message":"Execution Time (milliseconds) = 0.582","version":"2018-04-25","time":"2018-10-11 03:45:17"} " }
The Echoer echos all the raida useing the cloudcoin.global namespace such as: raida10.CloudCoin.global .
Any raida that do not reply will be echoed again using the backup IP addresses:
95.179.159.178
66.42.61.239
45.32.134.65
Note that these require the Port number to be included as well. Each RAIDA's port number is different. RAIDA0 is port 40000. Raida24 is 40024.
You can test the RAIDA access here:
https://95.179.159.178:40005/service/echo
https://66.42.61.239:40005/service/echo
https://45.32.134.65:40005/service/echo
The results are recoreded in the logs.
The Eraser deletes all log files and receipts. It will not erase the last status file or configuration files.
The Eraser starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java Eraser C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Eraser myEraser = new Eraser("C:\Users\[username]\Documents\CloudCoin");
MyEraser.eraseAll();
The Eraser watches the command folder for an Erase command.
There is only one Erase command allowed in the CloudCoin/Command/ folder and new Erase commands overwrite old ones. The Eraser should move the command into the CommandHistory folder before it begins.
File Name: eraser.command Contents: { "command":"eraser", "account":"default" }
Name of Log Files: The Eraser does not have log files.
Location of Log Files: The Eraser does not have log files.
Format of Log Files: The Eraser does not have log files.
The Eraser deletes all the files within: Root/CloudCoin/Logs/ and subfolders.
The Eraser deletes all the files within: Root/CloudCoin/Accounts/DefulatUser/Logs/ and subfolders.
The Eraser deletes all the files within: Root/CloudCoin/Receipts/ and subfolders.
The Eraser deletes all the files within: Root/CloudCoin/Accounts/DefulatUser/Receipts/ and subfolders.
The Eraser deletes all the files within: Root/CloudCoin/Commands/ and subfolders.
Test 1 (Autonomous operation): The tester program will place one log file into every folder and sub folder listed in the How it works above. Then the Eraser will be started by the module tester. Then the test program will put a command in the command folder ordering the Eraser to erase all the files. The Test program will then verify that the log files have been erased. If they are errased the test has passed. If the files are still there, the test fails.
250.CloudCoin.Sean@Worthington.net.eml
The job of the Exporter is to move the CloudCoins from the Bank, Vaul and Fracked Folders where they can be given to someone else. The Exporter will also move Images from the Gallery.
The Exporter starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java C:\\Program Files\CloudCoin\Exporter\Main C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Note that there are only a few file times that are supported now {stack, monostack, jpg, csv}. The monostack only has one Cloudcoin per stack.Exporter myExporter = new Exporter("C:\Users\[username]\Documents\CloudCoin");
MyExporter.exportAmount("default,stack,100,"Here is the tag name");//Account number, file format, amount to export, tag
MyExporter.export("default,jpg,0,0,0,0,0,"Here is the tag name");//Account number, file format, ones, fives, twentyfives, hundreds, twofifties, tag
The Exporter watches the command folder for an Erase command.
There is only one Exporter command allowed in the CloudCoin/Command/ folder and new Exporter commands overwrite old ones. The Exporter should move the command into the CommandHistory folder before it begins.
Types
Type 0: .stack (One per file)
type 1: .stack (multiple coins)
type 2: .jpg (One per file)
type 3: .csv (multiple coins)
type 4: .png (multiple coins)
type 5: .mp3 (multiple coins)
type 6: QR code (Envelope code)
type 7: bar code (one coin per code)
File Name: exporter.command Contents: { "command": "exporter", "account": "default", "amount": 100, "1s":0, "5s":0, "25s":0, "100s":1, "250s":0, "type": 0, "tag": "Appended to filename" }
For the log files, a copy of the exported cloudcoins are put in this file.
Location of Log Files: CloudCoin\Logs\Exporter\.
Name of Log Files: Same as the files being exported.
Format of Log Files: Same as the files being exported.
The Exporter removes stack files from the bank folder and puts the in the export folder in the specified format.
Test 1 (Autonomous operation): The tester program will place one log file into every folder and sub folder listed in the How it works above. Then the Eraser will be started by the module tester. Then the test program will put a command in the command folder ordering the Eraser to erase all the files. The Test program will then verify that the log files have been erased. If they are errased the test has passed. If the files are still there, the test fails.
The FrackFixer synchronizes all RAIDA to agree that a CloudCoin is authentic. When one RAIDA beleives that a coin is fake, the FrackFixer can collect tickets from trusting RAIDA and fix the error in the RAIDA. This version of FrackFixer only uses MultiFix. The old fix is no longer needed and may be phazed out. The FrackFixer requires four tickets.
The FrackFixer starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java C:\Program Files\CloudCoin\FrackFixer\Main C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
FrackFixer myFrackFixer = new FrackFixer("C:\Users\[username]\Documents\CloudCoin");
myFrackFixer.fix();
The FrackFixer watches the Fracked folder and goes to work when files go there.
No commands.
The FrackFixer has one file that it writes to and moves files from the Fracked folder to Bank. The FrackFixer creats 25 files that track the status of the RAIDA so that the FrackFixer can intielligently fix the coins.
Location of Log Files: CloudCoin/Accounts/DefaultUser/Logs/FrackFixer
Name of Log Files: Todays date: 2018.11.24.txt
Format of Log Files: The Eraser does not have log files.
The log files should include tabs to make it more readable.
Here is a sample log file after Multi-fix is called for three coins.
There are ****** placed before the start of ENUMERATING
********* 2018-07-27 18:54:46.142 [FrackFixer],[ENUMERATING], *, *, *, Unfacking coin 1 of 3 2018-07-27 18:54:46.142 [FrackFixer],[ENUMERATING], *, *, *, Unfacking coin 2 of 3 2018-07-27 18:54:46.142 [FrackFixer],[ENUMERATING], *, *, *, Unfacking coin 3 of 3 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 546, pepppppppfppppppppppppppp, RAIDA 01, Attempting to fix Using Corner 1 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 547, pepppppppfppppppppppppppp, RAIDA 01, Attempting to fix Using Corner 1 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 548, pepppppppfppppppppppppppp, RAIDA 01, Attempting to fix Using Corner 1 2018-07-27 18:54:46.142 [FrackFixer],[SUCCESS], 29 546, pppppppppfppppppppppppppp, RAIDA 01, Unfracked Successfuly 2018-07-27 18:54:46.142 [FrackFixer],[SUCCESS], 29 547, pppppppppfppppppppppppppp, RAIDA 01, Unfracked Successfuly 2018-07-27 18:54:46.142 [FrackFixer],[SUCCESS], 29 548, pppppppppfppppppppppppppp, RAIDA 01, Unfracked Successfuly 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 546, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 1 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 547, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 1 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 548, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 1 2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 29 546, pppppppppfppppppppppppppp, RAIDA 18, Trusted server failed to provide ticket for corner 1 2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 29 547, pppppppppfppppppppppppppp, RAIDA 18, Trusted server failed to provide ticket for corner 1 2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 29 548, pppppppppfppppppppppppppp, RAIDA 18, Trusted server failed to provide ticket for corner 1 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 546, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 2 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 547, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 2 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 548, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 2 2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 29 546, pppppppppfppppppppppppppp, RAIDA 18, RAIDA 18 did not accept the tickets from corner 2 2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 29 547, pppppppppfppppppppppppppp, RAIDA 18, RAIDA 18 did not accept the tickets from corner 2 2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 29 548, pppppppppfppppppppppppppp, RAIDA 18, RAIDA 18 did not accept the tickets from corner 2 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 546, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 3 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 547, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 3 2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 29 548, pppppppppfppppppppppppppp, RAIDA 18, Attempting to fix using Corner 3 2018-07-27 18:54:46.142 [FrackFixer],[SUCCESS], 29 546, pppppppppfppppppppppppppp, RAIDA 18, Unfracked Successfuly 2018-07-27 18:54:46.142 [FrackFixer],[SUCCESS], 29 547, pppppppppfppppppppppppppp, RAIDA 18, Unfracked Successfuly 2018-07-27 18:54:46.142 [FrackFixer],[SUCCESS], 29 547, pppppppppfppppppppppppppp, RAIDA 18, Unfracked Successfuly 2018-07-27 18:54:46.142 [FrackFixer],[REPORT], 29 546, ppppppppppppppppppppppppp, RAIDA **, Time spent fixing coin in milliseconds: 222 2018-07-27 18:54:46.142 [FrackFixer],[REPORT], 29 547, ppppppppppppppppppppppppp, RAIDA **, Time spent fixing coin in milliseconds: 222 2018-07-27 18:54:46.142 [FrackFixer],[REPORT], 29 548, ppppppppppppppppppppppppp, RAIDA **, Time spent fixing coin in milliseconds: 222 2018-07-27 18:54:46.142 [FrackFixer],[BANK], 29 546, ppppppppppppppppppppppppp, RAIDA **, Coin moved to Bank 2018-07-27 18:54:46.142 [FrackFixer],[BANK], 29 547, ppppppppppppppppppppppppp, RAIDA **, Coin moved to Bank 2018-07-27 18:54:46.142 [FrackFixer],[BANK], 29 548, ppppppppppppppppppppppppp, RAIDA **, Coin moved to Bank ********* 2018-07-27 18:54:46.142 [FrackFixer],[ENUMERATING], *, *, *, Unfacking coin 1 of 1
There are 25 Status reports (one for each RAIDA). These status reports allow the FrackFixer to learn when RAIDA do not return good tickets and when a RAIDA does not seem to be able to fix. This will keep the FrackFixer from wasting time.
0.returnsticket.true.fixes.true.txt 1.returnsticket.true.fixes.true.txt 2.returnsticket.true.fixes.true.txt ... 23.returnsticket.true.fixes.true.txt 24.returnsticket.true.fixes.true.txt
The Frack Fixer will ensure that all RAIDA see the coin as authentic. It does this by looking at the POWN results in the stack file. It will fix all things that are not "p" such as "n","e","f" and "u".
It must fix n, e, and u, too if it is to fix fs.
The Frack Fixer will use 4 of the bad RAIDA's neighbours to fix the frack and will first get 4 tickets. There are for combination of neighbours that will work. Each combination is called a "Corner."
The Frack Fixer must track any problems found in the RAIDA so that it know if some of the servers are down and cannot be used to get tickets and are impossible to fix.
The Frack Fixer takes two runs at fixes. It starts by trying to fix RAIDA 0 and moves up to RAIDA 24. After that, it will reverse and fix from RAIDA 24 to RAIDA 0. This should ensure that the coin is fixed completely.
1. Load all the CloudCoin in the fracked folder into an array of CloudCoins called "Fracked".
2. Begin looping through RAIDA
3. Start with RAIDA 0. Check all coins to see if any RAIDA 0 are 'e', 'n', 'u' or 'f'. If yes then add them to an array called "RAIDA0Fracked"
4. Log. Suppose there were six coins in the fracked folder and three of them needed to be fixed on RAIDA 0. Write
"2018-07-27 18:54:46.142 [FrackFixer],[ENUMERATING], *, *, *, Unfacking coin 16777216
"2018-07-27 18:54:46.142 [FrackFixer],[ENUMERATING], *, *, *, Unfacking coin 352265
"2018-07-27 18:54:46.142 [FrackFixer],[ENUMERATING], *, *, *, Unfacking coin 859264
Note that the last number is the coin's serial number.
5. Check the echo log to see if RAIDA 0 is ready and the Frack Fixers Status file to see if RAIDA 0 is fixable.
If not: Log for each of the three coins and then give up on fixing 0 and move to RAIDA 1 (Step 3 next RAIDA):
2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 16777216, fppppppppfppppppppppppppp, RAIDA 0, RAIDA 0 not ready to be fixed
6. Set the corder to fix as Corner 1. Log the following:
2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 16777216, fppppppppfppppppppppppppp, RAIDA0, Attempting to fix using Corner 1
2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 352265, fppppppppfppppppppppppppp, RAIDA0, Attempting to fix using Corner 1
2018-07-27 18:54:46.142 [FrackFixer],[FIXING], 859264, fppppppppfppppppppppppppp, RAIDA0, Attempting to fix using Corner 1
6. Check the FrackFixer status files to see if corner 1 trusted servers are giving tickets. If not make a log notation and move on to corner 2
2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 16777216, fppppppppfppppppppppppppp, RAIDA 0, Trusted server failed to provide ticket for corner 1
7. Make a multi-ticket request for all the four trusted Servers on the corner.
8. Check them to see if they are good. If any failed move on to the next corner and log:
2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 16777216, fppppppppfppppppppppppppp, RAIDA 0, Trusted server failed to provide ticket for corner 1
9. Send the tickets to the Mulit fix server.
if Failure:
2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 16777216, fppppppppfppppppppppppppp, RAIDA 0, RAIDA 0 did not accept the tickets from corner 1
If Success: 2018-07-27 18:54:46.142 [FrackFixer],[SUCCESS], 16777216, pppppppppfppppppppppppppp, RAIDA 01, Unfracked Successfully
10. If the coin was fixed move on to fix another RAIDA (Step 3). If the coin was not fixed, Go to Step 6 and increment the next corner unless the next corner is 5 (does not exist). Then go log 2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 16777216, fppppppppfppppppppppppppp, Coin could not be fixed.
11. After you have attempted to fix all RAIDA 0-24, then do them in reverse, RAIDA 24-0. Sometime you must fix one RAIDA in order to fix another. So we have to give it two swipes.
12. Check the coin to see if it no longer has any 'f's.
if there are no more 'f's, move the coin to bank and log:
2018-07-27 18:54:46.142 [FrackFixer],[REPORT], 16777216, ppppppppppppppppppppppppp, RAIDA **, Time spent fixing coin in milliseconds: 222
2018-07-27 18:54:46.142 [FrackFixer],[BANK], 16777216, ppppppppppppppppppppppppp, RAIDA **, Coin moved to Bank
If there are still 'f's, keep the coins in the fracked folder and log
2018-07-27 18:54:46.142 [FrackFixer],[FAILED], 16777216, fppppppppfppppppppppppppp, Coin could not be fixed.
Tests to come.
The purpose of the Grader is to take files that have been put in the Detected folder and sort them out into the Counterfeit, Bank, Fracked and Lost Folders.
The Grader starts by calling the language, the path to the executable and providing a path to the root folder the Servant will use:
java C:\Program Files\CloudCoin\Grader\Main C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Grader myGrader = new Grader("C:\Users\[username]\Documents\CloudCoin");
MyGrader.grade();
The Grader watches the Detected folder for any new files.
The Grader has no commands but only listens to changes in the Detected folder
The Grader writes to one log (one each day), one receipt and moves files from the Detected folder to other folders.
Location of Log Files: CloudCoin/Accounts/DefaultUser/Logs/Grader/.
Name of Log Files: 2018.11.25.txt
Contents of Log Files:
2018-11-20 19:14:45:999 [GRADER],[grade],SN,250CC,Moved,/path/
Location of Receipt Files: CloudCoin/Accounts/DefaultUser/Receipts/.
Name Format of Receipt File: receiptID.txt such as 981f7a936abc490e95803fc7f54987f5.txt
The recipt is like a report and will be formated in the following way:{ "receipt_id":"e054a34f2790fd3353ea26e5d92d9d2f", "time": "2016-49-21 7:49:PM", "timezone": "UTC-7", "bank_server": "ccc.cloudcoin.global", "total_authentic": 5, "total_fracked": 7, "total_counterfeit": 1, "total_lost": 0, "total_unchecked": 0, "receipt_detail": [{ "nn.sn": "1.16777216", "status": "authentic", "pown": "ppppppppepppppppppppeppp", "note": "Moved to Bank" }, { "nn.sn": "1:1425632", "status": "counterfeit", "pown": "fffffffffpfffffffffffffff", "note": "Sent to trash" }, { "nn.sn": "1.956258", "status": "authentic", "pown": "ppppppppppppppppppppppppf", "note": "Moved to Fracked" }, { "nn.sn": "1.15666214", "status": "lost", "pown": "pfpfpfpfpfpfpfpfpfpfpfpfp", "note": "Moved to Lost" }, { "nn.sn": "1.15265894", "status": "lost", "pown": "ppppffpeepfpppfpfffpfffpf", "note": "STRINGS ATTACHED!" } ] }
The Grader opens files placed in the Detected folder.
The names of the files placed in the Detected folder may contain a "receipt" or batch number in the tag portion of the stack file.
The Grader uses a grading alorith and moves the files into folder according to weather they are authentic, counterfeit, lost or fracked.
The Grader logs the actions.
NOTE: The receipt file should have already been created by the unpacker process. If it is not created, the grader should just put notes in the log file. If there is a receipt already in the receipt folder with the same receipt ID, the Grader writes over each coin in the receipt file with the new updated status.
C
Place coins into the Detected folder (They don't need to be authentic)
Set one pown to "ppppppppppppppppppppppppp" this should go to Bank.
Set one pown to "fpppppppppppppppppppppppp" this should go to Fracked.
Set one pown to "pppppppppppppppppppffffff" this should go to Counterfeit.(Dangerous in advanced mode)
Set one pown to "ppppppppppppppppppppnnnnn" this should go to Bank. It is ok to have five no replys.
Set one pown to "ppppppppppppppppppppeeeee" this should go to Bank. It is ok to have five errors.
Set one pown to "pppppppppppppppppppnnnnnn" this should go to Lost. It is not ok to have more than five no replys.
Set one pown to "pppppppppppppppppppeeeeee" this should go to Lost. It is not ok to have more than five errors.
If more than six RAIDA do not reply why detecting, the coin is considered lost and placed in the Lost folder. The Job of the Loss Fixer is to take lost coins in the Lost folder and make them authentic. Lost coins are coins that were in the process of being authenticated but the RAIDA did not respond. So it is unknown if the CloudCoin is using its old ANs or its new PANs.
The LossFixer starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java LossFixer C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
LossFixer myFixer = new LossFixer("C:\Users\[username]\Documents\CloudCoin");
myFixer.FixAll();
The LossFixer should start when a coin is put in the lost folder.
Ther is no command to start.
Name of Log Files: [sn].[fixed or not fixed].txt example 166777882.Fixed.txt
Location of Log Files: Root/CloudCoin/Logs/LossFixer.
Contents of Log Files: Record of Every RAIDA Call to fix that CloudCoin.
The Loss Fixer will look at the POWN value in the coin. The coin must be fixable (meaning it cannot have too many fails). It will then detect every 'n' using the PAN and if that fails it will try the AN. When it sends the detection request it will use same GUID for the an and pan parameters like this:
https://RAIDA20.cloudcoin.global/service/detect?nn=1&sn=1&an=1836843d928347fb22c2142b49d772b5&pan=1836843d928347fb22c2142b49d772b5&denomination=1
Test 1 (Autonomous operation): Create an authentic test CloudCoin, but change its pown to have 6 n's. Place a copy in the lost and predetect folder. For just 3 of the RAIDA that were marked as n, send detects request with a new pan, and only update the file in the predetect folder. this way we have a lost coin with 3 unchanged ans and 3 changed ans.
passphrase = "Oppose political correctness";
passphrase = Passphrase.toLowerCase(Passphrase);
sn = 16777216;
raidaNumber = 3;
hashSeed = sn + raidaNumber + passphrase;
The job of the ShowCoins is to make a report of all the assets in the program. The folders that the ShowCoins look at are Bank, Fracked, Gallery, and Lost.
The ShowCoins starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java ShowCoin C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
ShowCoins myShowCoins = new ShowCoins("C:\Users\[username]\Documents\CloudCoin");
myShowCoins.showCoins();
The ShowCoins watches the command folder for an ShowCoins command.
There is only one ShowCoins command allowed in the CloudCoin/Command/ folder and new ShowCoins commands overwrite old ones. The ShowCoins should move the command into the CommandHistory folder before it begins.
File Name: showcoin.command Contents: { "command":"showcoins", "account":"default" }
Number of status/ Log Files: 4.
Name of Log Files:
Bank.157.0.0.5.25.2.txt
Fracked.250.0.0.0.0.1.txt
Lost.0.0.0.0.0.0.txt
Gallery.true.txt or Gallery.false.txt (True if there are things in the Gallery folder, False if not.
Location of Log Files: CloudCoin/Accounts/[accountname]/Logs/ShowCoin.
Format of Log Files: No contents.
2018-11-20 19:14:45:999 [INFO] { "ones": 1 "fives": 0 "twentyfives": 0 "hundreds": 0 "twohundredfifties": 0 "total": 1 }
2018-11-20 19:14:46:001 [INFO] { "ones": 1 "fives": 0 "twentyfives": 0 "hundreds": 0 "twohundredfifties": 0 "total": 1 }
Counts how many coins of each denomination are in each folder location.
Root/CloudCoin/Accounts/DefulatUser/Bank/
Root/CloudCoin/Accounts/DefulatUser/Fracked/
Root/CloudCoin/Accounts/DefulatUser/Lost/
Root/CloudCoin/Accounts/DefulatUser/Gallery/
1. Empties out folders first.
2. Puts a known amount of CloudCoin in each folder.
3. Calls the ShowCoin command.
4. Checks the folders to make sure the correct coins are there.
The job of the Translator is to take all the output from the other Servants and put them into one StatusReport.txt file so that GUIs can monitor just that. The translator can also translate the text to other languages and other local formats. The Translator can use languages from the Language folder to translate. Most of the fields in the translator should be in the native language unless they are boolean values.
The translator should watch for changes in log files and be started with the master executable program.
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Tranlator myTranslator = new Translator("C:\Users\[username]\Documents\CloudCoin");
MyTranslator.translator();
The Translator watches the log folders for changes.
No commands.
There are no log files except for StatusReport.txt
See the status file standards for how to write to it.
The Translator read log changes, interprets them, perhaps into a different language, and the updates the StatusReport.txt folder.
The Unpacker's job is to extract CloudCoin data from files (such as .stack, .jpg, csv) and place them in the Suspect folder in a stadardised way so that each CloudCoin is in a seperate stack file.
The Unpacker starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java C:\Program Files\CloudCoin\Unpacker\Main C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Unpacker myUnpacker = new Unpacker("C:\Users\[username]\Documents\CloudCoin");
MyUnpacker.unpack();
The Unpacker watches the Import folder for new additions.
No Commands
The Upacker creates a receipt file and an unpacker log file
Location of Log Files: CloudCoin/Accounts/DefaultUser/Logs/Unpacker/.
Name of Log Files one for each day: 2018.11.30.txt
Format of Log Files: The Unpacker lists all the serial numbers that were unpacked and put in the suspect or moved to trash.
2018-07-27,18:54:46.142,[UNPACKER],[UNPACKED], 16777216
2018-07-27,18:54:46.142,[UNPACKER],[TRASHED], filename.jpg, No CloudCoins detected 2018-07-27,18:54:46.142,[UNPACKER],[TRASHED], 16777216, Duplicate found in Suspect folder 2018-07-27,18:54:46.142,[UNPACKER],[DUPLICATE], 16777216, Duplicate found in Bank folder 2018-07-27,18:54:46.142,[UNPACKER],[DUPLICATE], 16777216, Duplicate found in Lost folder 2018-07-27,18:54:46.142,[UNPACKER],[DUPLICATE], 16777216, Duplicate found in Vault folder 2018-07-27,18:54:46.142,[UNPACKER],[DUPLICATE], 16777216, Duplicate found in Gallery folder 2018-07-27,18:54:46.142,[UNPACKER],[DUPLICATE], 16777216, Duplicate found in Fracked folder
{ "receipt_id": "a0c1746b03dc479ea44b147b175258eb", "time": "2016-49-21 7:49:PM", "timezone": "UTC-7", "bank_server": "ccc.cloudcoin.global", "total_authentic": 0, "total_fracked": 0, "total_counterfeit": 0, "total_lost": 0, "total_suspect":5, "receipt_detail": [{ "nn.sn": "1.16777216", "status": "suspect", "pown": "uuuuuuuuuuuuuuuuuuuuuuuuu", "note": "Waiting" }, { "nn.sn": "1:1425632", "status": "suspect", "pown": "uuuuuuuuuuuuuuuuuuuuuuuuu", "note": "Waiting" }, { "nn.sn": "1.956258", "status": "suspect", "pown": "uuuuuuuuuuuuuuuuuuuuuuuuu", "note": "Waiting" }, { "nn.sn": "1.15666214", "status": "suspect", "pown": "uuuuuuuuuuuuuuuuuuuuuuuuu", "note": "Waiting" }, { "nn.sn": "1.15265894", "status": "suspect", "pown": "uuuuuuuuuuuuuuuuuuuuuuuuu", "note": "Waiting" } ] }
When the Unpacking starts, the unpacker will generate a "batch" number. The batch number is based on the timestamp and will be the year, month, day, hour and second such as "2018.10.09.13.34". Please put leading zeros if the number does not take up the entire space.
Note: The unpacker should check the Bank, Vault, Fracked, Gallery and Lost folders to see if the coins are already there. If a coin is already in one of these folders then the coin should be moved to the Trash folder.
It then moves the original files into the Imported folder.
In order to deal with duplicates, the stack files in the Suspect folder should have a random tag to keep the names different.
In order to deal with duplicates, the stack files in the Trash folder should have a random tag to keep the names different.
In order to deal with duplicates, the files in the Imported folder should have a random tag added to the end to keep the names different.
Test 1 (Autonomous operation): The tester program will place one log file into every folder and sub folder listed in the How it works above. Then the Eraser will be started by the module tester. Then the test program will put a command in the command folder ordering the Eraser to erase all the files. The Test program will then verify that the log files have been erased. If they are errased the test has passed. If the files are still there, the test fails.
Tests
Takes a bunch of files in the Import folder, extract the CloudCoins and writes single stack files (one coin per file) and places those stack files into the Suspect folder.
The Job of the Vaulter is to take Coins from the Bank, obscure parts of the AN and write it to the Vault Folder. It will also do the opposite Take from the Vault and put back into the folder. This will make it so that if the coins are stolen, they will be unusable.
The Backupper starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java Vaulter C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
Vaulter myVaulter = new Vaulter("C:\Users\[username]\Documents\CloudCoin");
MyVaulter.vault( 2,0,4,0,500); //the integers mean that the user wants to vault 2 1s, 0 5s, 4 25s, 0 100s and 500 250 CloudCoin notes.
The Vaulter watches the command folder for an Backup command.
There is only one Backup command allowed in the CloudCoin/Command/ folder and new Backup commands overwrite old ones. The Backupper should move the command into the CommandHistory folder before it begins.
File Name: vaulter.command Contents: From Bank folder to Vault { "command":"toVault", "account":"default", "passphrase":"kdjfkj98uv98udijijkerer", "cloudcoin":"all" or "cloudcoin":"56987", //specified amount "1s" : "10", "5s": "2", "25s": "4", "100s" : "12", "250s" : "20" } From Vault folder to Bank (or Fracked) { "command":"fromVault" "account":"2i2iu", "passphrase":"kdjfkj98uv98udijijkerer", "cloudcoin":"all" or "cloudcoin":"56987", //specified amount "1s":"10", "5s":"2", "25s":"4", "100s":"12", "250s":"20" }
There is just one log for the Vaulter that reports on all coins moved to Vault Location: CloudCoin/Logs/Vaulter/ File Name: Vaulter.log Example Entries 2018-11-20 19:14:45:999 [ToVault] 16777210 2018-11-20 19:14:45:999 [ToVault] 16777211 2018-11-20 19:14:45:999 [FromVault] 16777210 2018-11-20 19:14:45:999 [FromVault] 16777211The Backupper does not require log files.
When the user goes to use the Vaulter, they should get a warning: "Warning, unless you have enabled recover by email, you will lose all your cloudcoins if you forget your passcode. There will be no way to recover them except to wait two years." This warning will be part of the GUI and not this servant however.
The Vaulter must get a hexadecimal input from the user as the PIN / Password. Or this hexadecimal number can be changed into the PIN.
Here is the starting AN:
4C813701-0A324B45-A436BF8C-D4A6F1D8
0A324B45 = 171068229
A436BF8C = 2755051404
password = "password"
password = 5F4DCC3B5AA765D61D8327DEB882CF99
5F4DCC3B-5AA765D6 (Hyphen added for readability)
(0A324B45, 5F4DCC3B), ( A436BF8C, 5AA765D6)
0A324B45, 5F4DCC3B = 171068229, 1598934075
A436BF8C, 5AA765D6 = 2755051404, 1520920022
First VAN = 171068229 - 1598934075 = -1427865846
Second VAN = 2755051404 - 1520920022 = 1234131382
VAN 1 = 1427865846 = -551B80F6
VAN 2 = 1234131382 = 498F59B6
4C813701-0A324B45-A436BF8C-D4A6F1D8
4C813701-(551B80F6)-498F59B6-D4A6F1D8
(Note that you must
put parenthesis around negative number)
password = 5F4DCC3B5AA765D61D8327DEB882CF99
5F4DCC3B-5AA765D6
5F4DCC3B = 1598934075
5AA765D6 = 1520920022
4C813701-(551B80F6)-498F59B6-D4A6F1D8
VAN 1 = 551B80F6 = -1427865846
VAN 2 = 498F59B6 = 1234131382
AN 1 = 1598934075 + -1427865846 = 171068229
AN 2 = 1520920022 + 1234131382 = 2755051404
The testing program will start by placing many stack files in the bank folder and placing the exact same files in RAM (For later).
The testing software will order the Vaulter to vault the bank.
Test to see if the entire contents of the bank folder is empty.
Test to see that these files are now in the Vault folder.
Test to see that the AN numbers of the files in the folder have changed from the original numbers by compairing what is in RAM.
Then the testing program should order the Vaulter to "Bank" the coins.
The entire contents of the Vault folder should be empty.
All the coins should now be back in the bank with the original AN numbers.
The job of the ChangeMaker is to go out to a Change Server and break a CloudCoin into smaller units.
The ChangeMaker starts by calling the language, the name of the executable and providing a path to the root folder the Servant will use:
java ChangeMaker C:\Users\[username]\Documents\CloudCoin
Note that the root path is also called the "Workspace" and will be found in the config.txt file located in the program's executable folder. eg (C:\Program Files\CloudCoin\config.txt)
Assuming the Servant is to be used as an object in a monolithic program, the servant can be called by supplying the root directory to the constructor.
ChangeMaker myChangeMaker = new ChangeMaker("C:\Users\[username]\Documents\CloudCoin");
MyChangeMaker.makeChange(250);
The ChangeMaker watches the command folder for a MakeChange command.
There is only one ChangeMaker command allowed in the CloudCoin/Command/ folder and new ChangeMaker commands overwrite old ones. The ChangeMaker should move the command into the CommandHistory folder before it begins.
File Name: ChangeMaker.makeChange.txt Contents: Backup all files to backup location { "command":"makeChange", "account":"default" or "account":"2i2iu" //Use default if no account specified "method":"100D" //See table of methods } Make Change CHANGE_MAKER METHODS: Denominaton 1 1 (Cannot break) Denaomination 5 Method 5A: 1,1,1,1,1 Denomination 25 Method 25A: 5,5,5,5,5 (Min) Method 25B: 5,5,5,5,5A Method 25C: 5,5,5A,5A,5A Method 25D: 5A,5A,5A,5A (Max) Denomination 100 Method 100A: 25,25,25,25 (min) Method 100B: 25,25,25,25A Method 100C: 25,25,25A,25B Method 100D: 25D,25D,25D,25D (Max) Denomination 250 Method 250A: 100,100,25,25 (Min) Method 250B: 100A,100A,25A,25B Method 250C: 100B,100B,25B,25C Method 250D: 100D,100D,25D,25D (Max)
Name of Log Files: Logs/ChangeMaker/change.log.
Location of Log Files: Logs/ChangeMaker/
Format of Log Files: 2018-07-27,18:54:46.142,[ChangeMaker],[MakeChange],success,100D
The ChangeMaker looks in the global config file to see who its Change Server is.
The ChangeMaker checks to see if it has the note wanted to be broke in the Bank folder.
The ChangeMaker sends the note to the ChangeMaker service and hopefully receives back a stack of change.
The ChangeMaker logs the results.
It has to know the URL of the Change Maker service. This will be located in the main configuration file.
The Sender allows many coins to be authenticated at the same time but their PANs are generated by the RAIDA instead of the owner. This allows CloudCoins to be transfered from person to person with no powning necessary. Note that this service uses an outside trusted server. The trusted outside servers that we are using now have DNS names of s0.teleportnow.cc trough s24.teleportnow.cc
The sender may use the amount or specific denominations but not both. The Sender should move the command into the CommandHistory after it is done execuring the command.
File Name: Sender.command Contents if splitting the ANs between 25 servers: { "command": "sender", "split_ans":"true", "trusted_transfer_domain","teleportnow.cc", "trusted_transfer_hostname","s#", "from_account": "default", "to_account": "16777215", "amount": 0, "1s":0, "5s":0, "25s":0, "100s":1, "250s":0, "envelope_name": "invoice_98377992" } Contents is sending the whole cloudcoin (Phase 2): { "command": "sender", "split_ans":"false", "trusted_transfer_domain","cloudcoin.global", "trusted_transfer_hostname","bank", "from_account": "default", "to_account": "16777215", "amount": 100, "1s":0, "5s":0, "25s":0, "100s":0, "250s":0, "envelope_name": "For baby sitting Billy" }
There are two status files and 25 (one for every RAIDA) log files created for every time the sender sends.
Location of log files and status files (creates a folder for each send attempt):
CloudCoin/Logs/Sender/16777215 sent 100/The new folder name includes the account number (1-16777215) that the money was sent to and the total amount that was sent.
CloudCoin/Logs/Sender/[account number] sent [amount].
25 Log File Names:
Attempted to send 100 to 16777215 on RAIDA 0.txt Attempted to send 100 to 16777215 on RAIDA 1.txt ...left out for brevity Attempted to send 100 to 16777215 on RAIDA 23.txt Attempted to send 100 to 16777215 on RAIDA 24.txt
Status file names
passed 90 coins.txt failed 5 coins.txt duds 0 coins.txt The contents of the status files will list the serial numbers of coins, one per line 16777200 16777201 16777202 IF ABORTED BECAUSE OF ANY REASON SUCH AS NOT ENOUGH COINS IN BANK FOLDER: aborted 100 coins.txt inside will say why the attempt was aborted such as "Not enough Coins in bank"The contents of the log files will be the response from the servers.
Response from the server: [{ "server":"RAIDA1", "status":"pass", "sn":"66585", "nn":"1", "message":"Authentic: 1-unit. Your coins have been sent to the address you specified.", "time":"2016-44-19 7:44:PM" }, { "server":"RAIDA1", "status":"pass", "sn":"66586", "nn":"1", "message":"Authentic: 1-unit. Your coins have been sent to the address you specified.", "time":"2016-44-19 7:44:PM" }, { "server":"RAIDA1", "status":"pass", "sn":"16589554", "nn":"1", "message":"Authentic: 250-unit. Your coins have been sent to the address you specified.", "time":"2016-44-19 7:44:PM" }] CONTENTS IF BAD: { "server":"RAIDA1", "status":"dud", "message":"sns: no sns can be the same as to_sn" "time":"2016-44-19 7:44:PM" }
1. The Servant recieves a command in its command folder.
2. The Servant reads what domain it is going to sent the coins to (for now "teleportnow.cc".
3. The Servant reads what are the host names for the servers by replacing the # symbol with numbers 0 through 24. ("s0").
4. The Servant reads the number coins it needs from the bank folder and puts them into an array in RAM.
5. A folder is created to handle the log and status files for CloudCoin/Logs/Sender/[account number] sent [amount].
6. For phase one, if there is no exact amount then the whole process is aborted and a "aborted" status file is created.
7. The "send" called according to the "send" service api.See Send API which
8. A log file is created for each trusted server response.
9. The responses are all put together for each coin sent. Each coin is graded and put in either the Pass, Fail or Dud file. If there are more than 20 that are authentic, then the coin is considered passed and sent and they are moved from the bank folder to the sent folder (This is a new folder, see diagram). If there are less than 20 are authentic then the coin is considered failed and counterfeit and the coin will be moved from the bank to the counterfeit folder. folder.
1. The program should send CloudCoins to their own account to reduce loss of coins. This means that there needs to be an ID folder with one CloudCoin in it. The id coins should have a tag of "default" like 1.cloudcoin.default.stack
The Receiver goes to the Trusted Transfer server and uses its ID CloudCoin to retreive coins that have been sent to it. The Receiver must specifiy the exact SNs of coins that it wants to download. Other Servants will have populated the the Envelopes and the Coins folders that are subfolders of the Envelopes folder. Lists of SNs will be found in the Coins folders. Note that this service uses an outside trusted server. The trusted outside servers that we are using now have DNS names of s0.teleportnow.cc trough s24.teleportnow.cc
The Receiver for phase one only can recieve by requesting the name of the envelope and can only recive from 25 servers at a time. So the command file should specify the Envelope Name. In the future, the Receiver will be able to communicate with a single server and download whole coins ("split_ans"="false"). But now it can only talk to 25 servers, get ANs and put them all together to make coins. Receiver should move the command into the CommandHistory after it is done execuring the command.
File Name: Receiver.command Contents if splitting the ANs between 25 servers: { "command": "receiver", "split_ans":"true", "trusted_transfer_domain","teleportnow.cc", "trusted_transfer_hostname","s#", "to_account": "default", "key_name": "default", "envelope_name": "invoice_98377992" } Contents is receiving the whole cloudcoin (Not needed until Phase 2): { "command": "sender", "split_ans":"false", "trusted_transfer_domain","cloudcoin.global", "trusted_transfer_hostname","bank", "to_account": "default", "key_name": "default", "envelope_name": "invoice_98377992" }
There are two status files and 25 (one for every RAIDA) log files created for every time the Receiver receives.
Location of log files and status files (creates a folder for each send attempt):
CloudCoin/Logs/Receiver/Received from 16777215/or
CloudCoin/Logs/Sender/[account number] sent [amount].
Log File Name:
Attempted to receieve account 16777215 from RAIDA 0.txt Attempted to receieve account 16777215 from RAIDA 1.txt ...left out for brevity Attempted to receive account 16777215 from RAIDA 23.txt Attempted to receive account 16777215 from RAIDA 24.txt
Status file names
bank 100 coins.txt fracked 4 coins.txt partial 0 coins.txt300 coins received.txt The contents of the status files will list the serial numbers of coins that were received, one per line 16777200 16777201 16777202 IF ABORTED BECAUSE OF ANY REASON SUCH AS NOT ENOUGH COINS IN BANK FOLDER: No coins received.txt inside will say why the attempt was aborted such as "No account found"The contents of the log files will be the response from the servers.
1. The Servant recieves a command in its command folder.
2. The Servant reads what domain it is going to sent the coins to (for now "teleportnow.cc".
3. The Servant reads what are the host names for the servers by replacing the # symbol with numbers 0 through 24. ("s0").
4. The Servant calls on the Receive service on the 25 servers.
5. The Servant recieves arrays of SNs, ANs and puts them all the ANs together under each serial number.
6. The Servant will then place the coins into the Bank, Fracked or Partial Folders. /p>
7. The "send" called according to the "send" service api.See Send API which
8. A log file is created for each trusted server response.
9. The responses are all put together for each coin sent. Each coin is graded and put in either the Pass, Fail or Dud file. If there are more than 20 that are authentic, then the coin is considered passed and sent and they are moved from the bank folder to the sent folder (This is a new folder, see diagram). If there are less than 20 are authentic then the coin is considered failed and counterfeit and the coin will be moved from the bank to the counterfeit folder.
1. The program should send CloudCoins to their own account to reduce loss of coins. This means that there needs to be an ID folder with one CloudCoin in it. The id coins should have a tag of "default" like 1.cloudcoin.default.stack
2. At least one test should test if good coins were sent to the server and if they were removed from the bank folder.
3. One test should test if bad coins are sent to counterfeit folder.
4. The log files and status files should be created in the correct folders and should have the correct format.
The teller does many things including looking at envelopes on the Trusted Transfer, seeing how many coins are in each envelope, transfering coins to other people and renaming envelopes.
The purpose of ShowEnvelopes is to contact a trusted transfer server and see what envelopes (bundles of CloudCoins) are on the server CloudCoins are bundled into Envelopes to make identify when someone sends another CloudCoins.
It is possible that you will only need to query one RAIDA to get this informatoin as in thoery, all the RAIDA will have the same data. Note that this service uses an outside trusted server. The trusted outside servers that we are using now have DNS names of s0.teleportnow.cc trough s24.teleportnow.cc
The Teller for phase one only can recieve by requesting the name of the envelope and can only recive from 25 servers at a time. In the future (phase 2), the Receiver will be able to communicate with a single server and download ANs and get a list of all the envelopes that belong to the account. ShowEnvelopes should move the command into the CommandHistory after it is done execuring the command.
File Name: ShowEnvelopes.command { "command": "showenvelopes", "trusted_transfer_domain", "teleportnow.cc", "trusted_transfer_hostname","s#", "to_account": "default", //The Folder name in the Accounts Folder on the local machine "key_name": "default" //The ID CloudCoin in the ID folder }
Only one log file is generated
Location of log files and status files (creates a folder for each send attempt): The log file over writes itself so there is ony one.
CloudCoin/Logs/ShowEnvelopes/16777215/or
CloudCoin/Logs/Sender/[account number].
Log File Name:
Envelopes.txtThe contents of the file just list each envelope one per line. The contents of the file just list each envelope one per line. Sample Conents: c7b8e8cfdac045988214e02d5ff809b3 For Rent Account #88899998 Wallmart Store 2283 sale no. 49998822
1.The Servant gets the ID coin from the ID folder.
Makes a request from one of the trusted transfer servers.
https://s20.teleportnow.cc/service/shownenvelopes?nn=1&sn=1&an=1836843d928347fb22c2142b49d772b&denomination=1&envelope_name=8rie.
Logs the reply.
The ShowEnvelopCoins gives you a list of all the coin serial numbers that are in an envelope that is owend by the caller.
This list is necessary for so that the caller can then specify which coins that want to recieve or transfer.
This information should be the same on all RAIDA so you should only have to call RAIDA's showenvelopecoins service. Note that this service uses an outside trusted server. The trusted outside servers that we are using now have DNS names of s0.teleportnow.cc trough s24.teleportnow.cc
Only one log file is generated
Location of log files and status files (creates a folder for each send attempt): The log file over writes itself so there is ony one.
CloudCoin/Logs/ShowEnvelopeCoins/16777215/or
CloudCoin/Logs/Sender/[account number]/.
Log File Name:
[envelope name]_coins.txt 16777215_coins.txtThe contents of the file is a list of serial numbers in the envelope - one per line. The contents Sample: 16777200 16777201 16777202
1. The ShowEnvelopesFromCoins is sent a command to that includes the local account (like default) and the name of the envelope.
1. The ShoeEnvelopesFromCoins is sent a command to that includes the local account (like default) and the name of the envelope.
1. The ShowEnvelopesFromCoins loads their ID Coin from theirID folder .
1. The Servant calls one of the showenvelopeCoins on one of the trusted transfer servers.
https://s20.teleportnow.cc/service/showcoinsinenvelope?nn=1&sn=1&an=1836843d928347fb22c2142b49d772b&denomination=1&envelope_name=8rie.
The results are written to log
Test 1 (Autonomous operation): The tester program will place one log file into every folder and sub folder listed in the How it works above. Then the Eraser will be started by the module tester. Then the test program will put a command in the command folder ordering the Eraser to erase all the files. The Test program will then verify that the log files have been erased. If they are errased the test has passed. If the files are still there, the test fails.
The job of the work spacer is to change the default location of the file structure that is used. This information is kept in the workspace configuration file that is located near the executable program.