Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Add note to issues not possible anymore.
  • Loading branch information
smonicas committed Oct 27, 2022
commit ed859951c6618da90e0cd7e8db6b77cf85028ef8
1 change: 1 addition & 0 deletions not-so-smart-contracts/cairo/access_controls/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Access controls & account abstraction
NOTE: The following was possible before StarkNet OS enforced the use of an account contract.

The account abstraction model used by StarkNet has some important differences from what Solidity developers might be used to. There are no EOA addresses in StarkNet, only contract addresses. Rather than interact with contracts directly, users will usually deploy a contract that authenticates them and makes further calls on the user's behalf. At its simplest, this contract checks that the transaction is signed by the expected key, but it could also represent a multisig or DAO, or have more complex logic for what kinds of transactions it will allow (e.g. deposits and withdrawals could be handled by separate contracts or it could prevent unprofitable trades).

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Dangerous Public Imports in Libraries
NOTE: The following was possible until cairo-lang 0.10.0.

When a library is imported in Cairo, all functions can be called even if some of them are not declared in the import statement. As a result, it is possible to call functions that a developer may think is unexposed, leading to unexpected behavior.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Namespace Storage Variable Collsion
NOTE: The following was possible until cairo-lang 0.10.0.

In Cairo, it is possible to use namespaces to scope functions under an identifier. However, storage variables are not scoped by these namespaces. If a developer accidentally uses the same variable name in two different namespaces, it could lead to a storage collision.

Expand Down