| 132 | | Possible failures: "Request ID Unknown", "Request ID expired", "Request ID rejected" |
| 133 | | Possible waits: "Processing request" |
| 134 | | |
| 135 | | (question: what about key expiration while request is in mining queue) |
| | 132 | Possible failures: "Request ID Unknown", "Request ID expired", "Request ID rejected" |
| | 133 | Possible waits: "Processing request" |
| | 134 | |
| | 135 | (question: what about key expiration while request is in mining queue) |
| | 136 | |
| | 137 | or passes signed blinds to wallet Bob, must preserve order |
| 161 | | * Wallet Alice sends blanks of coins (without signature!) with the serial |
| 162 | | encrypted for the IS to Wallet Bob |
| 163 | | (Wallet Alice now needs to wait a while) |
| 164 | | |
| 165 | | SPEND_COIN #hex_string(number_of_coins) #base64(coin1) #base64(coin2)[\r]\n |
| 166 | | |
| 167 | | * Wallet Bob validates the blanks |
| 168 | | - do we have the "currency description document" |
| 169 | | - do we trust the issuer (do we have a valid public key) |
| 170 | | - checks blanks against cdd |
| 171 | | |
| 172 | | * If blanks are invalid, the transfer is declined by Wallet Bob |
| 173 | | (later: cdd transfer between wallets) |
| 174 | | |
| 175 | | * Wallet Bob shows proposed transfer to Bob |
| 176 | | |
| 177 | | * Bob decides whether to |
| 178 | | - accept transfer |
| 179 | | - accept transfer without double spending checking |
| 180 | | - decline transfer |
| 181 | | |
| | 163 | * Alice fetches DSDB key at IS |
| | 164 | |
| | 165 | FETCH_DSDB_KEY |
| | 166 | PASS_DSDB_KEY keycertificate |
| | 167 | |
| | 168 | * Wallet Alice sends obfuscated blanks (coins without signature and with serial |
| | 169 | encrypted for DSDB) with the serial to Wallet Bob (Wallet Alice now needs to wait a while) |
| | 170 | |
| | 171 | { |
| | 172 | standard identifier = http://opencoin.org/OpenCoinProtocol/1.0 |
| | 173 | currency identifier = http://opencent.net/OpenCent |
| | 174 | denomination = denomination |
| | 175 | key identifier = key_id(signing key) |
| | 176 | serial = base64(encrypt(ALG,pub-key-of-DSDB, serial)) |
| | 177 | } |
| | 178 | |
| | 179 | PRESENT_BLANK #hex_string(number_of_blanks) |
| | 180 | blank1[\r]\n |
| | 181 | blank2[\r]\n |
| | 182 | |
| | 183 | * Wallet Bob check: |
| | 184 | |
| | 185 | * Wallet Bob validates the blanks |
| | 186 | - do we have the "currency description document" |
| | 187 | - do we trust the issuer (do we have a valid public key) |
| | 188 | - checks blanks against cdd |
| | 189 | |
| | 190 | * If blanks are invalid, the transfer is declined by Wallet Bob |
| | 191 | (later: cdd transfer between wallets) |
| | 192 | |
| | 193 | * Wallet Bob shows proposed transfer to Bob |
| | 194 | |
| | 195 | * Bob decides whether to |
| | 196 | - accept transfer |
| | 197 | - accept transfer without double spending checking |
| | 198 | - decline transfer |
| | 199 | |
| | 200 | REFUSE_BLANK #hex_string(number_of_failures) |
| | 201 | #base64(ecrypted serial of blank1) "Why did we fail?!?" |
| | 202 | #base64(ecrypted serial of blank2) "Why did we fail?!?"[\r]\n |
| | 203 | |
| | 204 | REFUSE_BLANK #hex_string(0) "reason" |
| | 205 | |
| | 206 | (Todo: Add reasons) |