Comments (1)
Consider also this from @aakoshh:
What if the actor value is wrong? I haven't seen it checked during initialisation. It would mean that some participants never get notifications about results, right?
So what about someone trying to attack like this: Alice, Bob, Charlie and Eve want to participate in a 4 way atomic transaction. Everyone locks their state and give the input CID to Eve. Eve, initialises the atomic swap at the closest common ancestor, but corrupts everyone's actor field except herself. Then she also initialises another swap correctly.
Before the others could submit their outputs, Eve aborts the first atomic swap - since hers is the only correct actor in it, only her subnet gets properly notified; the others go into the dead letters. This notification unlocks her state, but the others don't know this, and they go ahead with the 2nd atomic swap. Eve gets a second notification about the successful swap, but she's already in a state where her state isn't locked.
It seems useless to do this, but the point is that the parent system and the child system are both individually correct, Eve is managing to put them in unexpected states.
Maybe there should be some check that all locked states are only participating in a single atomic swap at any time, in the parent?
Original comment: https://github.com/adlrocha/builtin-actors/pull/13#discussion_r928984624
from eudico.
Related Issues (20)
- Syncing protocol for state in subnet
- Separate key pair to sign HC subnet consensus messages HOT 1
- Preventing `LockedState` from blocking if finalization top-down message fails
- Dependencies for the integration of FVM with HC into Eudico HOT 4
- Aggregate child checkpoints in a single CID
- Remove `CrossMessage` field from `BlockMsg`
- Upgrade to latest version of go-address
- Remove dead code from Tendermint consensus HOT 2
- Remove the need to execute cross-net messages implicitly
- Bug when the same cross-net message is included twice in the same subnet block?
- Make the SCA a user-defined actor
- Data race in subnet manager's exchange protocol HOT 4
- Multiple data races in HC HOT 6
- Rename Subnet Actor and SCA to IPC-x HOT 7
- Decouple the block reward logic and make it configurable
- Remove redundant locks in subnet manager HOT 2
- Liveness of Mir Reconfiguration
- Pull based mempool HOT 2
- Subnet tests failed after finality timer exceeded HOT 2
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 eudico.