4 ms·
> As another example, a different Fraud Account made a single deposit and over 50 Bitcoin withdrawals before the account ceased its activity. > So Silk Road wa
by IncRnd 4y ago
> As another example, a different Fraud Account made a single deposit and over 50 Bitcoin withdrawals before the account ceased its activity.
> So Silk Road wasn’t waiting for any transaction confirmations??? And didn’t append a nonce to each withdrawal to avoid duplicates?
See the ACID properties of databases. [1] These are often put to the wayside in order to have greater transaction speed. We can see the results.
In computer science, ACID (atomicity, consistency, isolation, durability) is a
set of properties of database transactions intended to guarantee data validity
despite errors, power failures, and other mishaps.[1] In the context of
databases, a sequence of database operations that satisfies the ACID properties
(which can be perceived as a single logical operation on the data) is called a
transaction. For example, a transfer of funds from one bank account to another,
even involving multiple changes such as debiting one account and crediting
another, is a single transaction.
[1] https://en.wikipedia.org/wiki/ACID https://en.wikipedia.org/wiki/ACID
- MuffinFlavored 4y ago> See the ACID properties of databases. [1] But since this is "blockchain", is it more like... they weren't polling for the right confirmation/status/update from the blockchain network API thingie?
- IncRnd 4y ago> But since this is "blockchain", is it more like... they weren't polling for the right confirmation/status/update from the blockchain network API thingie? That's the exact same mistake I referenced. The consuming website should not be in charge of the atomicity of transactions. It doesn't matter whether the API was used incorrectly, blockchain was used, or finanglesperunk was the technology. The vagaries of the implementation don't matter. Sending money should be atomic with the request instead of whatever this was, otherwise the result might be $3.36 Billion in theft. PS Blockchain is a database. The developer can choose to enforce SALT instead of ACID, but something wasn't done right.
- wmf 4y agoNo, it's not blockchain. It's a SQL usage error.
- YetAnotherNick 4y agoWhich of the ACID property is broken here? Transaction is by definition atomic, internal consistency was not broken, and isolation and durability are fine. ACID makes sense in internal transfer, like the example you gave: > debiting one account and crediting another, is a single transaction. Blockchain is ACID compliant, their internal database could be ACID compliant hard part is linking it together. The solution here is exactly going opposite of ACID. Do a transaction in database first, and hope the transaction goes through Bitcoin, if not have another job reverse the transaction. If the reverse job fails, have a support agent manually revert the transaction. A common mistake someone could do is to put transaction in processing state in the database, and have another job update it to success.
- IncRnd 4y ago> Blockchain is ACID compliant, their internal database could be ACID compliant hard part is linking it together. That's the issue, ACID is not ACID for a tiny bit but for the transaction. See the definition you quoted, "debiting one account and crediting another, is a single transaction." Blockchain is absolutely not ACID compliant. There must be a deterministic methodology not miner consensus for ACID. Miners can even change the blockchain. However, why are you even mentioning blockchain instead of MYSQL without SERIALIZABLE, which enforces atomicity? > The solution here is exactly going opposite of ACID. What solution are you talking about? There was no solution put in place, which was the cause of the thefts.