Comments (1)
Further notes on "is this really necessary?"
First, we could theoretically get the host key by scanning the blockchain for the original contract ID. But for various reasons, this sucks. If the contract never hit the blockchain, you're out of luck; also, the original contract only contains the hash of the unlock conditions, so you really need a contract revision (which reveals the host's public key), not the original contract. And if things are operating normally, there won't be any revisions on the chain until the contract is about to end.
Second, a more technical consideration: is the host key (contained in the revision) really in danger of being corrupted? Even though we're overwriting the revision, we're overwriting the host key with the same bytes each time. (The position of the host key within the file does not change.) So shouldn't it be impossible to corrupt the key?
I tried researching the semantics of write
/pwrite
in this case, but couldn't find anything conclusive. My gut says that in practice, there's no danger of the host key being corrupted. But my gut also says that, in the absence of specified behavior, we should assume that some filesystem out there will corrupt the key. So in the interest of safety, the most responsible thing to do is to put the key in the header, where we can be confident it will never be touched by another write
call.
from us.
Related Issues (20)
- Transaction spends a nonexisting siacoin output HOT 1
- Migrate to RHP3 HOT 1
- RenewContract: ReadResponse: consensus conflict: provided transaction set is standalone and invalid: transaction cannot have an output or payout that has zero value HOT 7
- PseudoKV roadmap (discussion) HOT 1
- NewEphemeralMetaDB misses initializing meta
- Hot swapping PseudoKV contracts HOT 12
- AddShard uses bucketChunks to calculate the next ID HOT 1
- Tooling to retry failed contract renewals HOT 5
- Conversion from untyped int to string yields a string of one rune, not a string of digits HOT 4
- BoltMetaDB.ForEachBlob can cause a deadlock HOT 9
- PseudoKV migration acceleration
- Data race in ParallelBlobDownloader HOT 1
- Rejected for low paying host missed output HOT 5
- TestCompatibility takes more than 10min and panics HOT 4
- Could not find the desired sector HOT 12
- Does migration re-upload everything? HOT 2
- Lock: couldn't read LoopLock response: unexpected EOF HOT 3
- Delete files in parallel (ParallelSectorDeleter) HOT 2
- HostSet.Close forgets releasing locks HOT 5
- tryLock is not released properly
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from us.