Skip to content

Commit

Permalink
Update 2 2 0 (#521)
Browse files Browse the repository at this point in the history
* update to 2.2.0

* scarb fmt

* impl traits for LegacyHashMaps

* update expected error messages

* format

* Move LegacyHash implems to correct file

* format

* update scarb
  • Loading branch information
pscott authored Aug 28, 2023
1 parent a014145 commit d75fe00
Show file tree
Hide file tree
Showing 27 changed files with 191 additions and 208 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
- name: Step 2 - Install Scarb
uses: software-mansion/setup-scarb@v1
with:
scarb-version: 0.6.2
scarb-version: 0.7.0

- name: Step 3 - Check formatting
working-directory: ./starknet
Expand Down
2 changes: 1 addition & 1 deletion starknet/Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ casm = true

[dependencies]
openzeppelin = { git = "https://github.com/ericnordelo/cairo-contracts", branch = "feat/erc20votes-#631" }
starknet = ">=2.1.0-rc1"
starknet = ">=2.2.0"

[scripts]
run-lib = "cairo-run src/lib.cairo"
16 changes: 6 additions & 10 deletions starknet/src/authenticators/eth_sig.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,10 @@ mod EthSigAuthenticator {
use sx::{
space::space::{ISpaceDispatcher, ISpaceDispatcherTrait},
types::{Strategy, IndexedStrategy, Choice, UserAddress},
utils::{signatures, legacy_hash::LegacyHashEthAddress}
utils::{signatures, legacy_hash::{LegacyHashEthAddress, LegacyHashUsedSalts}}
};
use hash::LegacyHash;


#[storage]
struct Storage {
Expand Down Expand Up @@ -86,9 +88,7 @@ mod EthSigAuthenticator {
);
self._used_salts.write((author, salt), true);

ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.propose(
UserAddress::Ethereum(author),
execution_strategy,
Expand Down Expand Up @@ -123,9 +123,7 @@ mod EthSigAuthenticator {

// No need to check salts here, as double voting is prevented by the space itself.

ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.vote(
UserAddress::Ethereum(voter),
proposal_id,
Expand Down Expand Up @@ -160,9 +158,7 @@ mod EthSigAuthenticator {
);
self._used_salts.write((author, salt), true);

ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.update_proposal(
UserAddress::Ethereum(author), proposal_id, execution_strategy, metadata_URI
);
Expand Down
17 changes: 4 additions & 13 deletions starknet/src/authenticators/eth_tx.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,7 @@ trait IEthTxAuthenticator<TContractState> {
#[starknet::contract]
mod EthTxAuthenticator {
use super::IEthTxAuthenticator;
use starknet::{
ContractAddress, EthAddress, Felt252TryIntoEthAddress, EthAddressIntoFelt252,
syscalls::call_contract_syscall
};
use starknet::{ContractAddress, EthAddress, Felt252TryIntoEthAddress, EthAddressIntoFelt252,};
use core::{serde::Serde, array::{ArrayTrait, SpanTrait}};
use traits::{PartialEq, TryInto, Into};
use option::OptionTrait;
Expand Down Expand Up @@ -75,9 +72,7 @@ mod EthTxAuthenticator {

consume_commit(ref self, payload_hash, author);

ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.propose(
UserAddress::Ethereum(author),
execution_strategy,
Expand Down Expand Up @@ -107,9 +102,7 @@ mod EthTxAuthenticator {

consume_commit(ref self, payload_hash, voter);

ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.vote(
UserAddress::Ethereum(voter),
proposal_id,
Expand Down Expand Up @@ -138,9 +131,7 @@ mod EthTxAuthenticator {

consume_commit(ref self, payload_hash, author);

ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.update_proposal(
UserAddress::Ethereum(author), proposal_id, execution_strategy, metadata_URI
);
Expand Down
12 changes: 3 additions & 9 deletions starknet/src/authenticators/stark_sig.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,7 @@ mod StarkSigAuthenticator {
);

self._used_salts.write((author, salt), true);
ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.propose(
UserAddress::Starknet(author),
execution_strategy,
Expand Down Expand Up @@ -119,9 +117,7 @@ mod StarkSigAuthenticator {
account_type
);

ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.vote(
UserAddress::Starknet(voter),
proposal_id,
Expand Down Expand Up @@ -157,9 +153,7 @@ mod StarkSigAuthenticator {
);

self._used_salts.write((author, salt), true);
ISpaceDispatcher {
contract_address: target
}
ISpaceDispatcher { contract_address: target }
.update_proposal(
UserAddress::Starknet(author), proposal_id, execution_strategy, metadata_URI
);
Expand Down
12 changes: 3 additions & 9 deletions starknet/src/authenticators/stark_tx.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,7 @@ mod StarkTxAuthenticator {
) {
assert(info::get_caller_address() == author, 'Invalid Caller');

ISpaceDispatcher {
contract_address: space
}
ISpaceDispatcher { contract_address: space }
.propose(
UserAddress::Starknet(author),
execution_strategy,
Expand All @@ -77,9 +75,7 @@ mod StarkTxAuthenticator {
) {
assert(info::get_caller_address() == voter, 'Invalid Caller');

ISpaceDispatcher {
contract_address: space
}
ISpaceDispatcher { contract_address: space }
.vote(
UserAddress::Starknet(voter),
proposal_id,
Expand All @@ -99,9 +95,7 @@ mod StarkTxAuthenticator {
) {
assert(info::get_caller_address() == author, 'Invalid Caller');

ISpaceDispatcher {
contract_address: space
}
ISpaceDispatcher { contract_address: space }
.update_proposal(
UserAddress::Starknet(author), proposal_id, execution_strategy, metadata_URI
);
Expand Down
8 changes: 7 additions & 1 deletion starknet/src/authenticators/vanilla.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,13 @@ mod VanillaAuthenticator {
selector: felt252,
data: Array<felt252>
) {
call_contract_syscall(target, selector, data.span()).unwrap_syscall();
// TODO: use if let Err(e) once it's supported
match call_contract_syscall(target, selector, data.span()) {
Result::Ok(a) => {},
Result::Err(a) => {
assert(false, *a[0]);
},
};
}
}
}
3 changes: 1 addition & 2 deletions starknet/src/factory/factory.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ mod Factory {
.unwrap();

// Call initializer.
call_contract_syscall(space_address, INITIALIZE_SELECTOR, initialize_calldata)
.unwrap_syscall();
call_contract_syscall(space_address, INITIALIZE_SELECTOR, initialize_calldata).unwrap();

self.emit(Event::SpaceDeployed(SpaceDeployed { class_hash, space_address }));

Expand Down
42 changes: 22 additions & 20 deletions starknet/src/space/space.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,15 @@ mod Space {
},
utils::{
reinitializable::{Reinitializable}, ReinitializableImpl, bits::BitSetter,
legacy_hash::LegacyHashChoice, constants::INITIALIZE_SELECTOR
legacy_hash::{
LegacyHashChoice, LegacyHashUserAddress, LegacyHashVotePower, LegacyHashVoteRegistry
},
constants::INITIALIZE_SELECTOR
},
external::ownable::Ownable
};
use hash::{HashStateTrait, Hash, HashStateExTrait};


#[storage]
struct Storage {
Expand Down Expand Up @@ -177,7 +182,7 @@ mod Space {

#[derive(Drop, starknet::Event)]
struct ProposalExecuted {
proposal_id: u256,
proposal_id: u256,
}

#[derive(Drop, starknet::Event)]
Expand All @@ -189,7 +194,7 @@ mod Space {

#[derive(Drop, starknet::Event)]
struct ProposalCancelled {
proposal_id: u256,
proposal_id: u256,
}

#[derive(Drop, starknet::Event)]
Expand All @@ -200,27 +205,27 @@ mod Space {

#[derive(Drop, starknet::Event)]
struct VotingStrategiesRemoved {
voting_strategy_indices: Span<u8>,
voting_strategy_indices: Span<u8>,
}

#[derive(Drop, starknet::Event)]
struct AuthenticatorsAdded {
authenticators: Span<ContractAddress>,
authenticators: Span<ContractAddress>,
}

#[derive(Drop, starknet::Event)]
struct AuthenticatorsRemoved {
authenticators: Span<ContractAddress>,
authenticators: Span<ContractAddress>,
}

#[derive(Drop, starknet::Event)]
struct MaxVotingDurationUpdated {
max_voting_duration: u32,
max_voting_duration: u32,
}

#[derive(Drop, starknet::Event)]
struct MinVotingDurationUpdated {
min_voting_duration: u32,
min_voting_duration: u32,
}

#[derive(Drop, starknet::Event)]
Expand All @@ -231,7 +236,7 @@ mod Space {

#[derive(Drop, starknet::Event)]
struct VotingDelayUpdated {
voting_delay: u32,
voting_delay: u32,
}

#[derive(Drop, starknet::Event)]
Expand All @@ -242,12 +247,12 @@ mod Space {

#[derive(Drop, starknet::Event)]
struct MetadataUriUpdated {
metadata_URI: Span<felt252>,
metadata_URI: Span<felt252>,
}

#[derive(Drop, starknet::Event)]
struct DaoUriUpdated {
dao_URI: Span<felt252>,
dao_URI: Span<felt252>,
}

#[external(v0)]
Expand Down Expand Up @@ -366,7 +371,7 @@ mod Space {
ProposalCreated {
proposal_id: proposal_id,
author: author,
proposal: clone_proposal,
proposal: clone_proposal, // TODO: use span, remove clone
payload: execution_strategy.params.span(),
metadata_URI: metadata_URI.span()
}
Expand Down Expand Up @@ -443,9 +448,7 @@ mod Space {
proposal.finalization_status == FinalizationStatus::Pending(()), 'Already finalized'
);

IExecutionStrategyDispatcher {
contract_address: proposal.execution_strategy
}
IExecutionStrategyDispatcher { contract_address: proposal.execution_strategy }
.execute(
proposal.clone(),
self._vote_power.read((proposal_id, Choice::For(()))),
Expand Down Expand Up @@ -520,7 +523,7 @@ mod Space {
Ownable::assert_only_owner(@state);

assert(class_hash.is_non_zero(), 'Class Hash cannot be zero');
starknet::replace_class_syscall(class_hash).unwrap_syscall();
starknet::replace_class_syscall(class_hash).unwrap();

// Allowing initializer to be called again.
let mut state: Reinitializable::ContractState =
Expand All @@ -531,7 +534,7 @@ mod Space {
syscalls::call_contract_syscall(
info::get_contract_address(), INITIALIZE_SELECTOR, initialize_calldata.span()
)
.unwrap_syscall();
.unwrap();

self
.emit(
Expand Down Expand Up @@ -791,9 +794,8 @@ mod Space {
'Invalid strategy index'
);
let strategy = self._voting_strategies.read(*strategy_index.index);
total_voting_power += IVotingStrategyDispatcher {
contract_address: strategy.address
}
total_voting_power +=
IVotingStrategyDispatcher { contract_address: strategy.address }
.get_voting_power(
timestamp, voter, strategy.params.span(), strategy_index.params.span()
);
Expand Down
2 changes: 1 addition & 1 deletion starknet/src/tests/mocks/executor.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ mod ExecutorExecutionStrategy {
) {
let mut sp4n = payload.span();
let tx: Transaction = Serde::<Transaction>::deserialize(ref sp4n).unwrap();
call_contract_syscall(tx.target, tx.selector, tx.data.span()).unwrap_syscall();
call_contract_syscall(tx.target, tx.selector, tx.data.span()).unwrap();
}
}

Expand Down
Loading

0 comments on commit d75fe00

Please sign in to comment.