diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/99fault/consensus.py b/99fault/consensus.py old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/barycentric_low_degree_check/barycentric_low_degree_check.py b/barycentric_low_degree_check/barycentric_low_degree_check.py old mode 100644 new mode 100755 diff --git a/barycentric_low_degree_check/poly_utils.py b/barycentric_low_degree_check/poly_utils.py old mode 100644 new mode 100755 diff --git a/beacon_chain_impl/bls.py b/beacon_chain_impl/bls.py old mode 100644 new mode 100755 diff --git a/beacon_chain_impl/full_pos.py b/beacon_chain_impl/full_pos.py old mode 100644 new mode 100755 diff --git a/beacon_chain_impl/progressive_merkle_tree.py b/beacon_chain_impl/progressive_merkle_tree.py old mode 100644 new mode 100755 diff --git a/beacon_chain_impl/simpleserialize.py b/beacon_chain_impl/simpleserialize.py old mode 100644 new mode 100755 diff --git a/beacon_chain_impl/test.py b/beacon_chain_impl/test.py old mode 100644 new mode 100755 diff --git a/beacon_chain_impl/test_full_pos.py b/beacon_chain_impl/test_full_pos.py old mode 100644 new mode 100755 diff --git a/binary_fft.py b/binary_fft.py old mode 100644 new mode 100755 diff --git a/binary_fft/binary_fft.py b/binary_fft/binary_fft.py old mode 100644 new mode 100755 diff --git a/binary_fft/ethereum_data_root.py b/binary_fft/ethereum_data_root.py old mode 100644 new mode 100755 diff --git a/binary_fft/fast_binary_fft.pyx b/binary_fft/fast_binary_fft.pyx old mode 100644 new mode 100755 diff --git a/binary_fft/test_binary_fft.py b/binary_fft/test_binary_fft.py old mode 100644 new mode 100755 diff --git a/binary_fft/test_ethereum_data_root.py b/binary_fft/test_ethereum_data_root.py old mode 100644 new mode 100755 diff --git a/binius/binary_fields.py b/binius/binary_fields.py old mode 100644 new mode 100755 diff --git a/binius/binary_ntt.py b/binius/binary_ntt.py old mode 100644 new mode 100755 diff --git a/binius/merkle.py b/binius/merkle.py old mode 100644 new mode 100755 diff --git a/binius/optimized_binius.py b/binius/optimized_binius.py old mode 100644 new mode 100755 diff --git a/binius/optimized_utils.py b/binius/optimized_utils.py old mode 100644 new mode 100755 diff --git a/binius/packed_binius.py b/binius/packed_binius.py old mode 100644 new mode 100755 diff --git a/binius/simple_binius.py b/binius/simple_binius.py old mode 100644 new mode 100755 diff --git a/binius/test.py b/binius/test.py old mode 100644 new mode 100755 diff --git a/binius/utils.py b/binius/utils.py old mode 100644 new mode 100755 diff --git a/bitcoin_unlimited_style_sizelimits.py b/bitcoin_unlimited_style_sizelimits.py old mode 100644 new mode 100755 diff --git a/blind_and_swap/blind_and_swap.py b/blind_and_swap/blind_and_swap.py old mode 100644 new mode 100755 diff --git a/blind_and_swap/swapsim.py b/blind_and_swap/swapsim.py old mode 100644 new mode 100755 diff --git a/blind_and_swap/swapsim2.py b/blind_and_swap/swapsim2.py old mode 100644 new mode 100755 diff --git a/bulletproofs/ipa_commitments.py b/bulletproofs/ipa_commitments.py old mode 100644 new mode 100755 diff --git a/bulletproofs/multicombs.py b/bulletproofs/multicombs.py old mode 100644 new mode 100755 diff --git a/casper4/basic_validation_code.se.py b/casper4/basic_validation_code.se.py old mode 100644 new mode 100755 diff --git a/casper4/diag1.png b/casper4/diag1.png old mode 100644 new mode 100755 diff --git a/casper4/diag2.png b/casper4/diag2.png old mode 100644 new mode 100755 diff --git a/casper4/fixed_address_creator.py b/casper4/fixed_address_creator.py old mode 100644 new mode 100755 diff --git a/casper4/griefing_factor_calculator.py b/casper4/griefing_factor_calculator.py old mode 100644 new mode 100755 diff --git a/casper4/griefing_one_third_offline_simulator.py b/casper4/griefing_one_third_offline_simulator.py old mode 100644 new mode 100755 diff --git a/casper4/rlp_decoder.se.py b/casper4/rlp_decoder.se.py old mode 100644 new mode 100755 diff --git a/casper4/sighash.se.py b/casper4/sighash.se.py old mode 100644 new mode 100755 diff --git a/casper4/simple_casper.v.py b/casper4/simple_casper.v.py old mode 100644 new mode 100755 diff --git a/casper4/simple_casper_tester.py b/casper4/simple_casper_tester.py old mode 100644 new mode 100755 diff --git a/casper4/simulator.py b/casper4/simulator.py old mode 100644 new mode 100755 diff --git a/casper4/sqrt.se.py b/casper4/sqrt.se.py old mode 100644 new mode 100755 diff --git a/casper4/surround_checker.py b/casper4/surround_checker.py old mode 100644 new mode 100755 diff --git a/circlestark/arithmetization_builder.py b/circlestark/arithmetization_builder.py old mode 100644 new mode 100755 diff --git a/circlestark/fast_fft.py b/circlestark/fast_fft.py old mode 100644 new mode 100755 diff --git a/circlestark/fast_fri.py b/circlestark/fast_fri.py old mode 100644 new mode 100755 diff --git a/circlestark/fast_stark.py b/circlestark/fast_stark.py old mode 100644 new mode 100755 diff --git a/circlestark/fft.py b/circlestark/fft.py old mode 100644 new mode 100755 diff --git a/circlestark/fields.py b/circlestark/fields.py old mode 100644 new mode 100755 diff --git a/circlestark/fri.py b/circlestark/fri.py old mode 100644 new mode 100755 diff --git a/circlestark/line_functions.py b/circlestark/line_functions.py old mode 100644 new mode 100755 diff --git a/circlestark/merkle.py b/circlestark/merkle.py old mode 100644 new mode 100755 diff --git a/circlestark/poseidon.py b/circlestark/poseidon.py old mode 100644 new mode 100755 index 3f865cdd..920e80fe --- a/circlestark/poseidon.py +++ b/circlestark/poseidon.py @@ -66,16 +66,16 @@ def poseidon_hash(in1, in2): state[...,8:16] = in2 for i in range(64): if i >= 4 and i < 60: - state[...,0] = pow5(add(state[...,0], round_constants[i, 0])) - state = add( - mul(state, innerdiag), - m31_sum(state, axis=-1).reshape(state.shape[:-1]+(1,)) + state[...,0] = (state[...,0] + round_constants[i, 0]) ** 5 + state = ( + (state * innerdiag) + + M31.sum(state, axis=-1).reshape(state.shape[:-1]+(1,)) ) else: - mul_input = pow5(add(state, round_constants[i])) + mul_input = (state + round_constants[i]) ** 5 state = mul_by_mds(mul_input) - return add(state[...,8:16], in2) + return state[...,8:16] + in2 # We're proving a STARK of a series of Merkle branches, each 32 long def fill_poseidon_trace(hash_inputs, positions): diff --git a/circlestark/precomputes.py b/circlestark/precomputes.py old mode 100644 new mode 100755 diff --git a/circlestark/test.py b/circlestark/test.py old mode 100644 new mode 100755 diff --git a/circlestark/utils.py b/circlestark/utils.py old mode 100644 new mode 100755 diff --git a/clock_disparity/distributions.py b/clock_disparity/distributions.py old mode 100644 new mode 100755 diff --git a/clock_disparity/ghost_node.py b/clock_disparity/ghost_node.py old mode 100644 new mode 100755 diff --git a/clock_disparity/ghost_test.py b/clock_disparity/ghost_test.py old mode 100644 new mode 100755 diff --git a/clock_disparity/lmd_node.py b/clock_disparity/lmd_node.py old mode 100644 new mode 100755 diff --git a/clock_disparity/lmd_test.py b/clock_disparity/lmd_test.py old mode 100644 new mode 100755 diff --git a/clock_disparity/networksim.py b/clock_disparity/networksim.py old mode 100644 new mode 100755 diff --git a/clock_disparity/pos_node.py b/clock_disparity/pos_node.py old mode 100644 new mode 100755 diff --git a/clock_disparity/pow_node.py b/clock_disparity/pow_node.py old mode 100644 new mode 100755 diff --git a/clock_disparity/test.py b/clock_disparity/test.py old mode 100644 new mode 100755 diff --git a/community_notes_analysis/basic_algo.py b/community_notes_analysis/basic_algo.py old mode 100644 new mode 100755 diff --git a/correlation_analysis/analyze_attestations.py b/correlation_analysis/analyze_attestations.py old mode 100644 new mode 100755 diff --git a/correlation_analysis/new_analyze.py b/correlation_analysis/new_analyze.py old mode 100644 new mode 100755 diff --git a/cycle_finding_function_collision_generator.py b/cycle_finding_function_collision_generator.py old mode 100644 new mode 100755 diff --git a/dao_tests/bytecode.txt b/dao_tests/bytecode.txt old mode 100644 new mode 100755 diff --git a/dao_tests/dao_dump.json b/dao_tests/dao_dump.json old mode 100644 new mode 100755 diff --git a/dao_tests/fork_tester.py b/dao_tests/fork_tester.py old mode 100644 new mode 100755 diff --git a/defrag/defrag_sim.py b/defrag/defrag_sim.py old mode 100644 new mode 100755 diff --git a/defrag/permutation2.py b/defrag/permutation2.py old mode 100644 new mode 100755 diff --git a/defrag/permutation_bfs.py b/defrag/permutation_bfs.py old mode 100644 new mode 100755 diff --git a/defrag/send_bfs.py b/defrag/send_bfs.py old mode 100644 new mode 100755 diff --git a/diffadjust/blkdiff.py b/diffadjust/blkdiff.py old mode 100644 new mode 100755 diff --git a/diffadjust/hashpower.csv b/diffadjust/hashpower.csv old mode 100644 new mode 100755 diff --git a/economic_analysis/censorship_sim.py b/economic_analysis/censorship_sim.py old mode 100644 new mode 100755 diff --git a/eip86/eip_86_basic_account.se b/eip86/eip_86_basic_account.se old mode 100644 new mode 100755 diff --git a/eip96/eip_96_blockhash_getter.se.py b/eip96/eip_96_blockhash_getter.se.py old mode 100644 new mode 100755 diff --git a/eip96/eip_96_test_script.py b/eip96/eip_96_test_script.py old mode 100644 new mode 100755 diff --git a/elasticity/analyzer.py b/elasticity/analyzer.py old mode 100644 new mode 100755 diff --git a/elasticity/data.csv b/elasticity/data.csv old mode 100644 new mode 100755 diff --git a/elasticity/data.png b/elasticity/data.png old mode 100644 new mode 100755 diff --git a/erasure_code/2d_recovery/recover.py b/erasure_code/2d_recovery/recover.py old mode 100644 new mode 100755 diff --git a/erasure_code/ec256/share.cpp b/erasure_code/ec256/share.cpp old mode 100644 new mode 100755 diff --git a/erasure_code/ec256/share.go b/erasure_code/ec256/share.go old mode 100644 new mode 100755 diff --git a/erasure_code/ec256/share.h b/erasure_code/ec256/share.h old mode 100644 new mode 100755 diff --git a/erasure_code/ec256/share.js b/erasure_code/ec256/share.js old mode 100644 new mode 100755 diff --git a/erasure_code/ec256/test.py b/erasure_code/ec256/test.py old mode 100644 new mode 100755 diff --git a/erasure_code/ec256/utils.h b/erasure_code/ec256/utils.h old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/LICENSE b/erasure_code/ec65536/LICENSE old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/README.md b/erasure_code/ec65536/README.md old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/ec65536/__init__.py b/erasure_code/ec65536/ec65536/__init__.py old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/ec65536/ec65536.py b/erasure_code/ec65536/ec65536/ec65536.py old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/ec65536/poly_utils.py b/erasure_code/ec65536/ec65536/poly_utils.py old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/ec65536/subquadratic_poly_utils.py b/erasure_code/ec65536/ec65536/subquadratic_poly_utils.py old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/faster_poly_utils.cpp b/erasure_code/ec65536/faster_poly_utils.cpp old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/poly_utils.cpp b/erasure_code/ec65536/poly_utils.cpp old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/setup.py b/erasure_code/ec65536/setup.py old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/tests/test_basic_ops.py b/erasure_code/ec65536/tests/test_basic_ops.py old mode 100644 new mode 100755 diff --git a/erasure_code/ec65536/tests/test_ec65536.py b/erasure_code/ec65536/tests/test_ec65536.py old mode 100644 new mode 100755 diff --git a/erc4337/compression_schemes.py b/erc4337/compression_schemes.py old mode 100644 new mode 100755 diff --git a/eth1_simple_custody/poly_utils.py b/eth1_simple_custody/poly_utils.py old mode 100644 new mode 100755 diff --git a/eth1_simple_custody/simple_custody.py b/eth1_simple_custody/simple_custody.py old mode 100644 new mode 100755 diff --git a/exit_queue_tests/exit_queue_tester.py b/exit_queue_tests/exit_queue_tester.py old mode 100644 new mode 100755 diff --git a/fast_cross_shard_execution/optimistic_dependency_test.py b/fast_cross_shard_execution/optimistic_dependency_test.py old mode 100644 new mode 100755 diff --git a/fast_linear_combinations/multicombs.py b/fast_linear_combinations/multicombs.py old mode 100644 new mode 100755 diff --git a/generic_in_place_tree/tree.py b/generic_in_place_tree/tree.py old mode 100644 new mode 100755 diff --git a/ghost/ghost.py b/ghost/ghost.py old mode 100644 new mode 100755 diff --git a/graph_cbc/graph_cbc.py b/graph_cbc/graph_cbc.py old mode 100644 new mode 100755 diff --git a/iceage.py b/iceage.py old mode 100644 new mode 100755 diff --git a/impurity/check_for_impurity.se b/impurity/check_for_impurity.se old mode 100644 new mode 100755 diff --git a/impurity/impurity_tester.py b/impurity/impurity_tester.py old mode 100644 new mode 100755 diff --git a/interface_generator/README.md b/interface_generator/README.md old mode 100644 new mode 100755 diff --git a/interface_generator/example.py b/interface_generator/example.py old mode 100644 new mode 100755 diff --git a/interface_generator/examples/addresses.json b/interface_generator/examples/addresses.json old mode 100644 new mode 100755 diff --git a/interface_generator/examples/foundation_abi.json b/interface_generator/examples/foundation_abi.json old mode 100644 new mode 100755 diff --git a/interface_generator/examples/foundation_instructions.json b/interface_generator/examples/foundation_instructions.json old mode 100644 new mode 100755 diff --git a/interface_generator/examples/foundation_out.html b/interface_generator/examples/foundation_out.html old mode 100644 new mode 100755 diff --git a/interface_generator/examples/uniswap_abi.json b/interface_generator/examples/uniswap_abi.json old mode 100644 new mode 100755 diff --git a/interface_generator/examples/uniswap_instructions.json b/interface_generator/examples/uniswap_instructions.json old mode 100644 new mode 100755 diff --git a/interface_generator/examples/uniswap_out.html b/interface_generator/examples/uniswap_out.html old mode 100644 new mode 100755 diff --git a/interface_generator/interface_generator.py b/interface_generator/interface_generator.py old mode 100644 new mode 100755 diff --git a/kzg_data_availability/README.md b/kzg_data_availability/README.md old mode 100644 new mode 100755 diff --git a/kzg_data_availability/blst/__init__.py b/kzg_data_availability/blst/__init__.py old mode 100644 new mode 100755 diff --git a/kzg_data_availability/fft.py b/kzg_data_availability/fft.py old mode 100644 new mode 100755 diff --git a/kzg_data_availability/fk20_multi.py b/kzg_data_availability/fk20_multi.py old mode 100644 new mode 100755 diff --git a/kzg_data_availability/fk20_single.py b/kzg_data_availability/fk20_single.py old mode 100644 new mode 100755 diff --git a/kzg_data_availability/kzg_proofs.py b/kzg_data_availability/kzg_proofs.py old mode 100644 new mode 100755 diff --git a/kzg_data_availability/multicombs.py b/kzg_data_availability/multicombs.py old mode 100644 new mode 100755 diff --git a/kzg_data_availability/timer.py b/kzg_data_availability/timer.py old mode 100644 new mode 100755 diff --git a/merkle_tree/merk.py b/merkle_tree/merk.py old mode 100644 new mode 100755 diff --git a/merkle_tree/merktest.py b/merkle_tree/merktest.py old mode 100644 new mode 100755 diff --git a/mimc_stark/README.md b/mimc_stark/README.md old mode 100644 new mode 100755 diff --git a/mimc_stark/better_lagrange.py b/mimc_stark/better_lagrange.py old mode 100644 new mode 100755 diff --git a/mimc_stark/fft.py b/mimc_stark/fft.py old mode 100644 new mode 100755 diff --git a/mimc_stark/fri.py b/mimc_stark/fri.py old mode 100644 new mode 100755 diff --git a/mimc_stark/merkle_tree.py b/mimc_stark/merkle_tree.py old mode 100644 new mode 100755 diff --git a/mimc_stark/mimc_stark.py b/mimc_stark/mimc_stark.py old mode 100644 new mode 100755 diff --git a/mimc_stark/permuted_tree.py b/mimc_stark/permuted_tree.py old mode 100644 new mode 100755 diff --git a/mimc_stark/poly_utils.py b/mimc_stark/poly_utils.py old mode 100644 new mode 100755 diff --git a/mimc_stark/recovery.py b/mimc_stark/recovery.py old mode 100644 new mode 100755 diff --git a/mimc_stark/test.py b/mimc_stark/test.py old mode 100644 new mode 100755 diff --git a/mimc_stark/test_multi_merkle.py b/mimc_stark/test_multi_merkle.py old mode 100644 new mode 100755 diff --git a/mimc_stark/test_recovery.py b/mimc_stark/test_recovery.py old mode 100644 new mode 100755 diff --git a/mimc_stark/utils.py b/mimc_stark/utils.py old mode 100644 new mode 100755 diff --git a/minimal_utxo/utxo_tester.py b/minimal_utxo/utxo_tester.py old mode 100644 new mode 100755 diff --git a/minimal_utxo/utxos.v.py b/minimal_utxo/utxos.v.py old mode 100644 new mode 100755 diff --git a/mining/arpow_miner.py b/mining/arpow_miner.py old mode 100644 new mode 100755 diff --git a/mining/compute_probabilities_of_finality.py b/mining/compute_probabilities_of_finality.py old mode 100644 new mode 100755 diff --git a/mining/finality_probability_sim.py b/mining/finality_probability_sim.py old mode 100644 new mode 100755 diff --git a/mining/hashimoto.py b/mining/hashimoto.py old mode 100644 new mode 100755 diff --git a/mining/mining.go b/mining/mining.go old mode 100644 new mode 100755 diff --git a/mining/mining.py b/mining/mining.py old mode 100644 new mode 100755 diff --git a/mining/python_sha3.py b/mining/python_sha3.py old mode 100644 new mode 100755 diff --git a/newssz/foo.py b/newssz/foo.py old mode 100644 new mode 100755 diff --git a/newssz/test_foo.py b/newssz/test_foo.py old mode 100644 new mode 100755 diff --git a/old_consensus_by_bet/README.md b/old_consensus_by_bet/README.md old mode 100644 new mode 100755 diff --git a/old_consensus_by_bet/casper.py b/old_consensus_by_bet/casper.py old mode 100644 new mode 100755 diff --git a/old_consensus_by_bet/distributions.py b/old_consensus_by_bet/distributions.py old mode 100644 new mode 100755 diff --git a/old_consensus_by_bet/networksim.py b/old_consensus_by_bet/networksim.py old mode 100644 new mode 100755 diff --git a/old_consensus_by_bet/run.py b/old_consensus_by_bet/run.py old mode 100644 new mode 100755 diff --git a/old_consensus_by_bet/voting_strategy.py b/old_consensus_by_bet/voting_strategy.py old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/CasperTFG.pdf b/papers/CasperTFG/CasperTFG.pdf old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/CasperTFG.tex b/papers/CasperTFG/CasperTFG.tex old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/eth_header.tex b/papers/CasperTFG/eth_header.tex old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/ethereum.bib b/papers/CasperTFG/ethereum.bib old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/figures/3binary.png b/papers/CasperTFG/figures/3binary.png old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/figures/3nodeblockchain-fix.png b/papers/CasperTFG/figures/3nodeblockchain-fix.png old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/figures/3nodeblockchain.png b/papers/CasperTFG/figures/3nodeblockchain.png old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/figures/blockchainsafety.png b/papers/CasperTFG/figures/blockchainsafety.png old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/figures/roundrobin.png b/papers/CasperTFG/figures/roundrobin.png old mode 100644 new mode 100755 diff --git a/papers/CasperTFG/nips_2017.sty b/papers/CasperTFG/nips_2017.sty old mode 100644 new mode 100755 diff --git a/papers/casper-basics/casper_basics.pdf b/papers/casper-basics/casper_basics.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/casper_basics.tex b/papers/casper-basics/casper_basics.tex old mode 100644 new mode 100755 diff --git a/papers/casper-basics/eth_header.tex b/papers/casper-basics/eth_header.tex old mode 100644 new mode 100755 diff --git a/papers/casper-basics/ethereum.bib b/papers/casper-basics/ethereum.bib old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/attacks.graffle/data.plist b/papers/casper-basics/figs/attacks.graffle/data.plist old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/attacks.graffle/image12.pdf b/papers/casper-basics/figs/attacks.graffle/image12.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/attacks.graffle/image13.pdf b/papers/casper-basics/figs/attacks.graffle/image13.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/attacks.graffle/image14.pdf b/papers/casper-basics/figs/attacks.graffle/image14.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/attacks.graffle/image6.pdf b/papers/casper-basics/figs/attacks.graffle/image6.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/attacks.graffle/image8.pdf b/papers/casper-basics/figs/attacks.graffle/image8.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/bigcrash.pdf b/papers/casper-basics/figs/bigcrash.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/data.plist b/papers/casper-basics/figs/checkpoint-trees.graffle/data.plist old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image10.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image10.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image12.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image12.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image13.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image13.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image14.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image14.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image15.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image15.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image16.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image16.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image18.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image18.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image19.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image19.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image5.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image5.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image6.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image6.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image7.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image7.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image8.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image8.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoint-trees.graffle/image9.pdf b/papers/casper-basics/figs/checkpoint-trees.graffle/image9.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoints_checkpoints.pdf b/papers/casper-basics/figs/checkpoints_checkpoints.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoints_justifiedchain.pdf b/papers/casper-basics/figs/checkpoints_justifiedchain.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoints_lengths.pdf b/papers/casper-basics/figs/checkpoints_lengths.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/checkpoints_proof1.pdf b/papers/casper-basics/figs/checkpoints_proof1.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/conclusion-new.pdf b/papers/casper-basics/figs/conclusion-new.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/conclusion-old.pdf b/papers/casper-basics/figs/conclusion-old.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/conclusion.graffle b/papers/casper-basics/figs/conclusion.graffle old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets-v3.pdf b/papers/casper-basics/figs/dynamic_validator_sets-v3.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets.graffle/data.plist b/papers/casper-basics/figs/dynamic_validator_sets.graffle/data.plist old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets.graffle/image10.png b/papers/casper-basics/figs/dynamic_validator_sets.graffle/image10.png old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets.graffle/image11.pdf b/papers/casper-basics/figs/dynamic_validator_sets.graffle/image11.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets.graffle/image12.pdf b/papers/casper-basics/figs/dynamic_validator_sets.graffle/image12.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets.graffle/image14.pdf b/papers/casper-basics/figs/dynamic_validator_sets.graffle/image14.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets.graffle/image8.pdf b/papers/casper-basics/figs/dynamic_validator_sets.graffle/image8.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets.graffle/image9.pdf b/papers/casper-basics/figs/dynamic_validator_sets.graffle/image9.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/dynamic_validator_sets.pdf b/papers/casper-basics/figs/dynamic_validator_sets.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/longrange.pdf b/papers/casper-basics/figs/longrange.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/data.plist b/papers/casper-basics/figs/oz-figure-test.graffle/data.plist old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image13.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image13.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image14.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image14.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image17.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image17.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image18.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image18.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image19.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image19.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image26.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image26.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image27.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image27.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image28.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image28.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image29.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image29.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image30.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image30.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image31.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image31.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/figs/oz-figure-test.graffle/image32.pdf b/papers/casper-basics/figs/oz-figure-test.graffle/image32.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/misc/leak function derivation.pdf b/papers/casper-basics/misc/leak function derivation.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-basics/nips_2017.sty b/papers/casper-basics/nips_2017.sty old mode 100644 new mode 100755 diff --git a/papers/casper-economics/appendix.tex b/papers/casper-economics/appendix.tex old mode 100644 new mode 100755 diff --git a/papers/casper-economics/casper_economics_basic.pdf b/papers/casper-economics/casper_economics_basic.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-economics/casper_economics_basic.tex b/papers/casper-economics/casper_economics_basic.tex old mode 100644 new mode 100755 diff --git a/papers/casper-economics/eth_header.tex b/papers/casper-economics/eth_header.tex old mode 100644 new mode 100755 diff --git a/papers/casper-economics/ethereum.bib b/papers/casper-economics/ethereum.bib old mode 100644 new mode 100755 diff --git a/papers/casper-economics/figs/cs.pdf b/papers/casper-economics/figs/cs.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-economics/figs/goodness-with-p.graffle b/papers/casper-economics/figs/goodness-with-p.graffle old mode 100644 new mode 100755 diff --git a/papers/casper-economics/figs/goodness-with-p.pdf b/papers/casper-economics/figs/goodness-with-p.pdf old mode 100644 new mode 100755 diff --git a/papers/casper-economics/nips10submit_e.sty b/papers/casper-economics/nips10submit_e.sty old mode 100644 new mode 100755 diff --git a/papers/cbc-consensus/AbstractCBC.pdf b/papers/cbc-consensus/AbstractCBC.pdf old mode 100644 new mode 100755 diff --git a/papers/cbc-consensus/AbstractCBC.tex b/papers/cbc-consensus/AbstractCBC.tex old mode 100644 new mode 100755 diff --git a/papers/cbc-consensus/eth_header.tex b/papers/cbc-consensus/eth_header.tex old mode 100644 new mode 100755 diff --git a/papers/cbc-consensus/figures/sharedfutures.jpg b/papers/cbc-consensus/figures/sharedfutures.jpg old mode 100644 new mode 100755 diff --git a/papers/cbc-consensus/nips_2017.sty b/papers/cbc-consensus/nips_2017.sty old mode 100644 new mode 100755 diff --git a/papers/discouragement/disc_chart1.png b/papers/discouragement/disc_chart1.png old mode 100644 new mode 100755 diff --git a/papers/discouragement/disc_chart2.png b/papers/discouragement/disc_chart2.png old mode 100644 new mode 100755 diff --git a/papers/discouragement/disc_chart3.png b/papers/discouragement/disc_chart3.png old mode 100644 new mode 100755 diff --git a/papers/discouragement/disc_chart4.png b/papers/discouragement/disc_chart4.png old mode 100644 new mode 100755 diff --git a/papers/discouragement/discouragement.pdf b/papers/discouragement/discouragement.pdf old mode 100644 new mode 100755 diff --git a/papers/discouragement/discouragement.tex b/papers/discouragement/discouragement.tex old mode 100644 new mode 100755 diff --git a/papers/ffg+ghost/paper.pdf b/papers/ffg+ghost/paper.pdf old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship1.png b/papers/outdated/censorship_rejection/Censorship1.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship2.png b/papers/outdated/censorship_rejection/Censorship2.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship3.png b/papers/outdated/censorship_rejection/Censorship3.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship3p5.png b/papers/outdated/censorship_rejection/Censorship3p5.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship4.png b/papers/outdated/censorship_rejection/Censorship4.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship5.png b/papers/outdated/censorship_rejection/Censorship5.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship6.png b/papers/outdated/censorship_rejection/Censorship6.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship6b.png b/papers/outdated/censorship_rejection/Censorship6b.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship6c.png b/papers/outdated/censorship_rejection/Censorship6c.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship6d.png b/papers/outdated/censorship_rejection/Censorship6d.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/Censorship7.png b/papers/outdated/censorship_rejection/Censorship7.png old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/censorship_rejection.aux b/papers/outdated/censorship_rejection/censorship_rejection.aux old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/censorship_rejection.log b/papers/outdated/censorship_rejection/censorship_rejection.log old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/censorship_rejection.pdf b/papers/outdated/censorship_rejection/censorship_rejection.pdf old mode 100644 new mode 100755 diff --git a/papers/outdated/censorship_rejection/censorship_rejection.tex b/papers/outdated/censorship_rejection/censorship_rejection.tex old mode 100644 new mode 100755 diff --git a/papers/pricing/FeesAndETH.ods b/papers/pricing/FeesAndETH.ods old mode 100644 new mode 100755 diff --git a/papers/pricing/GaspriceInGwei.png b/papers/pricing/GaspriceInGwei.png old mode 100644 new mode 100755 diff --git a/papers/pricing/PriceAndFees.png b/papers/pricing/PriceAndFees.png old mode 100644 new mode 100755 diff --git a/papers/pricing/Triangle1.png b/papers/pricing/Triangle1.png old mode 100644 new mode 100755 diff --git a/papers/pricing/Triangle2.png b/papers/pricing/Triangle2.png old mode 100644 new mode 100755 diff --git a/papers/pricing/Triangle3.png b/papers/pricing/Triangle3.png old mode 100644 new mode 100755 diff --git a/papers/pricing/arydshln.sty b/papers/pricing/arydshln.sty old mode 100644 new mode 100755 diff --git a/papers/pricing/bitcoin1.png b/papers/pricing/bitcoin1.png old mode 100644 new mode 100755 diff --git a/papers/pricing/bitcoin2.png b/papers/pricing/bitcoin2.png old mode 100644 new mode 100755 diff --git a/papers/pricing/blocksize_fullnodes.png b/papers/pricing/blocksize_fullnodes.png old mode 100644 new mode 100755 diff --git a/papers/pricing/commath.sty b/papers/pricing/commath.sty old mode 100644 new mode 100755 diff --git a/papers/pricing/etherchain_correlation.png b/papers/pricing/etherchain_correlation.png old mode 100644 new mode 100755 diff --git a/papers/pricing/etherchain_correlation_2.png b/papers/pricing/etherchain_correlation_2.png old mode 100644 new mode 100755 diff --git a/papers/pricing/ethpricing.bib b/papers/pricing/ethpricing.bib old mode 100644 new mode 100755 diff --git a/papers/pricing/ethpricing.pdf b/papers/pricing/ethpricing.pdf old mode 100644 new mode 100755 diff --git a/papers/pricing/ethpricing.tex b/papers/pricing/ethpricing.tex old mode 100644 new mode 100755 diff --git a/papers/pricing/fig1a.png b/papers/pricing/fig1a.png old mode 100644 new mode 100755 diff --git a/papers/pricing/fig1b.png b/papers/pricing/fig1b.png old mode 100644 new mode 100755 diff --git a/papers/pricing/fig1c.png b/papers/pricing/fig1c.png old mode 100644 new mode 100755 diff --git a/papers/pricing/fig1d.png b/papers/pricing/fig1d.png old mode 100644 new mode 100755 diff --git a/papers/pricing/kth_price_revenue.png b/papers/pricing/kth_price_revenue.png old mode 100644 new mode 100755 diff --git a/papers/pricing/marvosym.sty b/papers/pricing/marvosym.sty old mode 100644 new mode 100755 diff --git a/papers/pricing/nips10submit_e.sty b/papers/pricing/nips10submit_e.sty old mode 100644 new mode 100755 diff --git a/papers/pricing/plos2009.bst b/papers/pricing/plos2009.bst old mode 100644 new mode 100755 diff --git a/papers/pricing/sleepwake.png b/papers/pricing/sleepwake.png old mode 100644 new mode 100755 diff --git a/papers/pricing/subfigure.sty b/papers/pricing/subfigure.sty old mode 100644 new mode 100755 diff --git a/papers/pricing/total_social_cost.png b/papers/pricing/total_social_cost.png old mode 100644 new mode 100755 diff --git a/papers/pricing/units.sty b/papers/pricing/units.sty old mode 100644 new mode 100755 diff --git a/papers/pricing/virgil_env.sty b/papers/pricing/virgil_env.sty old mode 100644 new mode 100755 diff --git a/papers/pricing/wrapfig.sty b/papers/pricing/wrapfig.sty old mode 100644 new mode 100755 diff --git a/polynomial_reconstruction/fft.py b/polynomial_reconstruction/fft.py old mode 100644 new mode 100755 diff --git a/polynomial_reconstruction/interpolate_polynomial_without_zeroes.py b/polynomial_reconstruction/interpolate_polynomial_without_zeroes.py old mode 100644 new mode 100755 diff --git a/polynomial_reconstruction/poly_gcd.py b/polynomial_reconstruction/poly_gcd.py old mode 100644 new mode 100755 diff --git a/polynomial_reconstruction/poly_utils.py b/polynomial_reconstruction/poly_utils.py old mode 100644 new mode 100755 diff --git a/polynomial_reconstruction/polynomial_reconstruction.py b/polynomial_reconstruction/polynomial_reconstruction.py old mode 100644 new mode 100755 diff --git a/polynomial_reconstruction/polynomial_reconstruction_danksharding.py b/polynomial_reconstruction/polynomial_reconstruction_danksharding.py old mode 100644 new mode 100755 diff --git a/pow_research/ghost.py b/pow_research/ghost.py old mode 100644 new mode 100755 diff --git a/pow_research/multi_uncle_ghost.py b/pow_research/multi_uncle_ghost.py old mode 100644 new mode 100755 diff --git a/pow_research/random_circuit.py b/pow_research/random_circuit.py old mode 100644 new mode 100755 diff --git a/pow_research/random_graphs.py b/pow_research/random_graphs.py old mode 100644 new mode 100755 diff --git a/pow_research/selfish_mining.py b/pow_research/selfish_mining.py old mode 100644 new mode 100755 diff --git a/pow_research/selfish_mining_strats.py b/pow_research/selfish_mining_strats.py old mode 100644 new mode 100755 diff --git a/price_analysis/csvgen.py b/price_analysis/csvgen.py old mode 100644 new mode 100755 diff --git a/price_analysis/diff_and_price.csv b/price_analysis/diff_and_price.csv old mode 100644 new mode 100755 diff --git a/price_analysis/fit.py b/price_analysis/fit.py old mode 100644 new mode 100755 diff --git a/price_analysis/price_analyzer.py b/price_analysis/price_analyzer.py old mode 100644 new mode 100755 diff --git a/price_analysis/price_grabber.py b/price_analysis/price_grabber.py old mode 100644 new mode 100755 diff --git a/price_analysis/spread.py b/price_analysis/spread.py old mode 100644 new mode 100755 diff --git a/proof_of_custody/bls_sign.mpc b/proof_of_custody/bls_sign.mpc old mode 100644 new mode 100755 diff --git a/proof_of_custody/khovratovich_algorithm.py b/proof_of_custody/khovratovich_algorithm.py old mode 100644 new mode 100755 diff --git a/proof_of_custody/legendre_uhf.mpc b/proof_of_custody/legendre_uhf.mpc old mode 100644 new mode 100755 diff --git a/proof_of_custody/legendre_uhf.py b/proof_of_custody/legendre_uhf.py old mode 100644 new mode 100755 diff --git a/proof_of_custody/uhf_oursourcing.py b/proof_of_custody/uhf_oursourcing.py old mode 100644 new mode 100755 diff --git a/proof_of_solvency/crazy_merkle_tree.py b/proof_of_solvency/crazy_merkle_tree.py old mode 100644 new mode 100755 diff --git a/proof_of_solvency/merkle_sum_tree.py b/proof_of_solvency/merkle_sum_tree.py old mode 100644 new mode 100755 diff --git a/py_plonk/README.md b/py_plonk/README.md old mode 100644 new mode 100755 diff --git a/py_plonk/compiler.py b/py_plonk/compiler.py old mode 100644 new mode 100755 diff --git a/py_plonk/main.plonk.vkey-58.json b/py_plonk/main.plonk.vkey-58.json old mode 100644 new mode 100755 diff --git a/py_plonk/main.plonk.vkey-59.json b/py_plonk/main.plonk.vkey-59.json old mode 100644 new mode 100755 diff --git a/py_plonk/main.plonk.vkey.json b/py_plonk/main.plonk.vkey.json old mode 100644 new mode 100755 diff --git a/py_plonk/mini_poseidon.py b/py_plonk/mini_poseidon.py old mode 100644 new mode 100755 diff --git a/py_plonk/multicombs.py b/py_plonk/multicombs.py old mode 100644 new mode 100755 diff --git a/py_plonk/powersOfTau28_hez_final_11.ptau b/py_plonk/powersOfTau28_hez_final_11.ptau old mode 100644 new mode 100755 diff --git a/py_plonk/prover.py b/py_plonk/prover.py old mode 100644 new mode 100755 diff --git a/py_plonk/rc.json b/py_plonk/rc.json old mode 100644 new mode 100755 diff --git a/py_plonk/test.py b/py_plonk/test.py old mode 100644 new mode 100755 diff --git a/py_plonk/utils.py b/py_plonk/utils.py old mode 100644 new mode 100755 diff --git a/py_plonk/verifier.py b/py_plonk/verifier.py old mode 100644 new mode 100755 diff --git a/py_ssz/LICENSE b/py_ssz/LICENSE old mode 100644 new mode 100755 diff --git a/py_ssz/README.md b/py_ssz/README.md old mode 100644 new mode 100755 diff --git a/py_ssz/py_ssz/__init__.py b/py_ssz/py_ssz/__init__.py old mode 100644 new mode 100755 diff --git a/py_ssz/py_ssz/py_ssz.py b/py_ssz/py_ssz/py_ssz.py old mode 100644 new mode 100755 diff --git a/py_ssz/py_ssz/serializers.py b/py_ssz/py_ssz/serializers.py old mode 100644 new mode 100755 diff --git a/py_ssz/py_ssz/utils.py b/py_ssz/py_ssz/utils.py old mode 100644 new mode 100755 diff --git a/py_ssz/requirements.txt b/py_ssz/requirements.txt old mode 100644 new mode 100755 diff --git a/py_ssz/setup.py b/py_ssz/setup.py old mode 100644 new mode 100755 diff --git a/py_ssz/tests/tests.py b/py_ssz/tests/tests.py old mode 100644 new mode 100755 diff --git a/randao_analysis/low_influence/2of3.py b/randao_analysis/low_influence/2of3.py old mode 100644 new mode 100755 diff --git a/randao_analysis/low_influence/tribes.py b/randao_analysis/low_influence/tribes.py old mode 100644 new mode 100755 diff --git a/randao_analysis/paths.py b/randao_analysis/paths.py old mode 100644 new mode 100755 diff --git a/rollup_compression/4844_compress_complex.py b/rollup_compression/4844_compress_complex.py old mode 100644 new mode 100755 diff --git a/rollup_compression/4844_compress_simple.py b/rollup_compression/4844_compress_simple.py old mode 100644 new mode 100755 diff --git a/rollup_compression/compressor.py b/rollup_compression/compressor.py old mode 100644 new mode 100755 diff --git a/rollup_compression/dicts.py b/rollup_compression/dicts.py old mode 100644 new mode 100755 diff --git a/rsa_moduli/bach_random_factored_numbers.py b/rsa_moduli/bach_random_factored_numbers.py old mode 100644 new mode 100755 diff --git a/rsa_moduli/find_optimal_bit_size.py b/rsa_moduli/find_optimal_bit_size.py old mode 100644 new mode 100755 diff --git a/rsa_moduli/random_numbers_with_multiplicative_group.py b/rsa_moduli/random_numbers_with_multiplicative_group.py old mode 100644 new mode 100755 diff --git a/rsa_moduli/requirements.txt b/rsa_moduli/requirements.txt old mode 100644 new mode 100755 diff --git a/sendmany/mk_sendmany.py b/sendmany/mk_sendmany.py old mode 100644 new mode 100755 diff --git a/sendmany/sendmany_tester.py b/sendmany/sendmany_tester.py old mode 100644 new mode 100755 diff --git a/sharding_fork_choice_poc/distributions.py b/sharding_fork_choice_poc/distributions.py old mode 100644 new mode 100755 diff --git a/sharding_fork_choice_poc/networksim.py b/sharding_fork_choice_poc/networksim.py old mode 100644 new mode 100755 diff --git a/sharding_fork_choice_poc/test.py b/sharding_fork_choice_poc/test.py old mode 100644 new mode 100755 diff --git a/shuffling/feistel_shuffle.py b/shuffling/feistel_shuffle.py old mode 100644 new mode 100755 diff --git a/shuffling/fisher_yates_shuffle.py b/shuffling/fisher_yates_shuffle.py old mode 100644 new mode 100755 diff --git a/shuffling/prime_shuffle.py b/shuffling/prime_shuffle.py old mode 100644 new mode 100755 diff --git a/shuffling/swap_or_not_shuffle.py b/shuffling/swap_or_not_shuffle.py old mode 100644 new mode 100755 diff --git a/shuffling/test_shuffle.py b/shuffling/test_shuffle.py old mode 100644 new mode 100755 diff --git a/sparse_merkle_tree/bintrie_test.py b/sparse_merkle_tree/bintrie_test.py old mode 100644 new mode 100755 diff --git a/sparse_merkle_tree/new_bintrie.py b/sparse_merkle_tree/new_bintrie.py old mode 100644 new mode 100755 diff --git a/sparse_merkle_tree/new_bintrie_hex.py b/sparse_merkle_tree/new_bintrie_hex.py old mode 100644 new mode 100755 diff --git a/sparse_merkle_tree/new_bintrie_optimized.py b/sparse_merkle_tree/new_bintrie_optimized.py old mode 100644 new mode 100755 diff --git a/sparse_merkle_tree/new_bintrie_test.py b/sparse_merkle_tree/new_bintrie_test.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/.gitignore b/spec_pythonizer/.gitignore old mode 100644 new mode 100755 diff --git a/spec_pythonizer/README.md b/spec_pythonizer/README.md old mode 100644 new mode 100755 diff --git a/spec_pythonizer/apply_test_suite.py b/spec_pythonizer/apply_test_suite.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/bls_stub.py b/spec_pythonizer/bls_stub.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/function_puller.py b/spec_pythonizer/function_puller.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/jsonize.py b/spec_pythonizer/jsonize.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/minimal_ssz.py b/spec_pythonizer/minimal_ssz.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/monkey_patches.py b/spec_pythonizer/monkey_patches.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/requirements.txt b/spec_pythonizer/requirements.txt old mode 100644 new mode 100755 diff --git a/spec_pythonizer/sanity_check.py b/spec_pythonizer/sanity_check.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/spec.md b/spec_pythonizer/spec.md old mode 100644 new mode 100755 diff --git a/spec_pythonizer/state_test_gen.py b/spec_pythonizer/state_test_gen.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/state_transition.py b/spec_pythonizer/state_transition.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/utils/hash.py b/spec_pythonizer/utils/hash.py old mode 100644 new mode 100755 diff --git a/spec_pythonizer/utils/merkle_minimal.py b/spec_pythonizer/utils/merkle_minimal.py old mode 100644 new mode 100755 diff --git a/ssz_research/partials/README.md b/ssz_research/partials/README.md old mode 100644 new mode 100755 diff --git a/ssz_research/partials/hash_function.py b/ssz_research/partials/hash_function.py old mode 100644 new mode 100755 diff --git a/ssz_research/partials/minimal_ssz.py b/ssz_research/partials/minimal_ssz.py old mode 100644 new mode 100755 diff --git a/ssz_research/partials/ssz_partial.py b/ssz_research/partials/ssz_partial.py old mode 100644 new mode 100755 diff --git a/ssz_research/partials/test_ssz_partial.py b/ssz_research/partials/test_ssz_partial.py old mode 100644 new mode 100755 diff --git a/ssz_research/ssz_hashable_list/hashable_list.py b/ssz_research/ssz_hashable_list/hashable_list.py old mode 100644 new mode 100755 diff --git a/ssz_research/ssz_hashable_list/test_hashable_list.py b/ssz_research/ssz_hashable_list/test_hashable_list.py old mode 100644 new mode 100755 diff --git a/sublinear_staking/code.vy b/sublinear_staking/code.vy new file mode 100644 index 00000000..3fc8edae --- /dev/null +++ b/sublinear_staking/code.vy @@ -0,0 +1,101 @@ +#pragma version >0.3.10 + +# Basic implementation of a sublinear staking contract. Stake coins, and you get +# return proportional to coins staked ** 0.75. Returns last as long as coins last + +stakedAmount: public(HashMap[address, uint256]) +stakeLastUpdated: public(HashMap[address, uint256]) +stakedTokenAddress: address +uniqueidTokenAddress: address +uniqueidTokenCollection: uint256 +totalPayoutPerSlot: uint256 +liabilities: uint256 +liabilitiesLastUpdated: uint256 + +@view +def intSqrt(input: uint256) -> uint256: + o: uint256 = input + if o == 0: + return 0 + for i:uint256 in range(32): + o = (o + input // o) // 2 + return o + +@view +def getReturnPerSlot(x: uint256) -> uint256: + sqrtX: uint256 = self.intSqrt(x) + return sqrtX * self.intSqrt(sqrtX) + +# Define the interface for the ERC-1155 contract +interface ERC1155: + def balanceOf(_owner: address, _id: uint256) -> uint256: view + +# ERC-20 Interface in Vyper +interface ERC20: + def transfer(_to: address, _value: uint256) -> bool: nonpayable + def transferFrom(_from: address, _to: address, _value: uint256) -> bool: nonpayable + def balanceOf(_owner: address) -> uint256: view + +@view +def isEligible(user: address) -> bool: +# Create an instance of the ERC-1155 contract + c: ERC1155 = ERC1155(self.uniqueidTokenAddress) + + # Get the balance of the user for the specified token ID + balance: uint256 = staticcall c.balanceOf(user, self.uniqueidTokenCollection) + + # Return True if balance is greater than zero, else False + return balance > 0 + +# Setup global variables +@deploy +def __init__(stakedTokenAddress: address, + uniqueidTokenAddress: address, + uniqueidTokenCollection: uint256): + self.stakedTokenAddress = stakedTokenAddress + self.uniqueidTokenAddress = uniqueidTokenAddress + self.uniqueidTokenCollection = uniqueidTokenCollection + +@external +def stake(amount: uint256): + assert self.isEligible(msg.sender) + token: ERC20 = ERC20(self.stakedTokenAddress) + if self.stakedAmount[msg.sender] > 0: + self._unstake() + returnPerSlot: uint256 = self.getReturnPerSlot(amount) + self.stakedAmount[msg.sender] = amount + self.stakeLastUpdated[msg.sender] = block.timestamp + self.liabilities += (block.timestamp - self.liabilitiesLastUpdated) * self.totalPayoutPerSlot + self.liabilities += amount + self.liabilitiesLastUpdated = block.timestamp + self.totalPayoutPerSlot += returnPerSlot + success: bool = extcall token.transferFrom(msg.sender, self, amount) + assert success + +def _unstake(): + token: ERC20 = ERC20(self.stakedTokenAddress) + returnPerSlot: uint256 = self.getReturnPerSlot(self.stakedAmount[msg.sender]) + deadline: uint256 = self.liabilitiesLastUpdated + (staticcall token.balanceOf(self) - self.liabilities) // max(self.totalPayoutPerSlot, 1) + correctedNow: uint256 = min(block.timestamp, deadline) + timeElapsed: uint256 = correctedNow - self.stakeLastUpdated[msg.sender] + totalOut: uint256 = self.stakedAmount[msg.sender] + timeElapsed * returnPerSlot + self.stakedAmount[msg.sender] = 0 + self.liabilities += (correctedNow - self.liabilitiesLastUpdated) * self.totalPayoutPerSlot + self.liabilitiesLastUpdated = correctedNow + self.totalPayoutPerSlot -= returnPerSlot + self.liabilities -= totalOut + extcall token.transfer(msg.sender, totalOut) + +@external +def unstake(): + self._unstake() + +@external +@view +def deadline() -> uint256: + token: ERC20 = ERC20(self.stakedTokenAddress) + return ( + self.liabilitiesLastUpdated + + (staticcall token.balanceOf(self) - self.liabilities) // + max(self.totalPayoutPerSlot, 1) + ) diff --git a/sublinear_staking/erc1155.vy b/sublinear_staking/erc1155.vy new file mode 100644 index 00000000..ef27488e --- /dev/null +++ b/sublinear_staking/erc1155.vy @@ -0,0 +1,11 @@ +# Minimal ERC-1155 contract + +balances: HashMap[address, HashMap[uint256, uint256]] + +@external +def balanceOf(_owner: address, _id: uint256) -> uint256: + return self.balances[_owner][_id] + +@external +def mint(_to: address, _id: uint256, _amount: uint256): + self.balances[_to][_id] += _amount diff --git a/sublinear_staking/erc20.vy b/sublinear_staking/erc20.vy new file mode 100644 index 00000000..d3684e7a --- /dev/null +++ b/sublinear_staking/erc20.vy @@ -0,0 +1,40 @@ +# Minimal ERC-20 contract + +balances: HashMap[address, uint256] +allowances: HashMap[address, HashMap[address, uint256]] +total_supply: uint256 + +@external +def balanceOf(_owner: address) -> uint256: + return self.balances[_owner] + +@external +def transfer(_to: address, _value: uint256) -> bool: + assert self.balances[msg.sender] >= _value, "Insufficient balance" + self.balances[msg.sender] -= _value + self.balances[_to] += _value + return True + +@external +def transferFrom(_from: address, _to: address, _value: uint256) -> bool: + assert self.balances[_from] >= _value, "Insufficient balance" + assert self.allowances[_from][msg.sender] >= _value, "Insufficient allowance" + self.allowances[_from][msg.sender] -= _value + self.balances[_from] -= _value + self.balances[_to] += _value + return True + +@external +def approve(_spender: address, _value: uint256) -> bool: + self.allowances[msg.sender][_spender] = _value + return True + +@external +def mint(_to: address, _value: uint256): + self.balances[_to] += _value + self.total_supply += _value + +@external +def totalSupply() -> uint256: + return self.total_supply + diff --git a/sublinear_staking/test_sublinear.py b/sublinear_staking/test_sublinear.py new file mode 100644 index 00000000..81605351 --- /dev/null +++ b/sublinear_staking/test_sublinear.py @@ -0,0 +1,121 @@ +from web3 import Web3 +from web3.providers.eth_tester import EthereumTesterProvider +from eth_tester import EthereumTester +from vyper import compile_code + +# Set up Web3 and Ethereum Tester +eth_tester = EthereumTester() +w3 = Web3(EthereumTesterProvider(eth_tester)) + +# Accounts +accounts = w3.eth.accounts +a1, a2, a3, a4 = accounts[0], accounts[1], accounts[2], accounts[3] + +# Vyper code for the main staking contract +staking_source_code = open('code.vy').read() +erc20_vyper_code = open('erc20.vy').read() +erc1155_vyper_code = open('erc1155.vy').read() + +# Compile the staking contract +compiled_staking_contract = compile_code(staking_source_code, output_formats=['abi', 'bytecode']) +staking_contract_interface = { + 'abi': compiled_staking_contract['abi'], + 'bytecode': compiled_staking_contract['bytecode'] +} + +# Compile the ERC-1155 contract +compiled_erc1155 = compile_code(erc1155_vyper_code, output_formats=['abi', 'bytecode']) +erc1155_interface = { + 'abi': compiled_erc1155['abi'], + 'bytecode': compiled_erc1155['bytecode'] +} + +# Compile the ERC-20 contract +compiled_erc20 = compile_code(erc20_vyper_code, output_formats=['abi', 'bytecode']) +erc20_interface = { + 'abi': compiled_erc20['abi'], + 'bytecode': compiled_erc20['bytecode'] +} + +# Helper function to deploy contracts +def deploy_contract(w3, abi, bytecode, constructor_args=(), deployer=a1): + Contract = w3.eth.contract(abi=abi, bytecode=bytecode) + tx_hash = Contract.constructor(*constructor_args).transact({'from': deployer}) + tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash) + return w3.eth.contract(address=tx_receipt.contractAddress, abi=abi) + +# Step 3: Deploy ERC-1155 contract and mint tokens +erc1155_contract = deploy_contract(w3, erc1155_interface['abi'], erc1155_interface['bytecode']) +A = erc1155_contract.address +cID = 1 # Collection ID + +# Mint 1 unit of token ID cID to a1, a2, a3 +for account in [a1, a2, a3]: + tx_hash = erc1155_contract.functions.mint(account, cID, 1).transact({'from': a1}) + w3.eth.wait_for_transaction_receipt(tx_hash) + +# Step 4: Deploy ERC-20 contract and mint tokens +erc20_contract = deploy_contract(w3, erc20_interface['abi'], erc20_interface['bytecode']) +T = erc20_contract.address + +# Mint 10**18 units to a1, a2, a3, a4 +initial_balance = 10**18 +for account in [a1, a2, a3, a4]: + tx_hash = erc20_contract.functions.mint(account, initial_balance).transact({'from': a1}) + w3.eth.wait_for_transaction_receipt(tx_hash) + +# Step 5: Deploy the staking contract (C) with T, A, cID +staking_contract = deploy_contract( + w3, + staking_contract_interface['abi'], + staking_contract_interface['bytecode'], + constructor_args=(T, A, cID) +) +C = staking_contract.address + +# Mint 10**18 units to the staking contract C +tx_hash = erc20_contract.functions.mint(C, 3 * 10**16).transact({'from': a1}) +w3.eth.wait_for_transaction_receipt(tx_hash) + +# Step 6: Approve the staking contract to spend tokens for each account +for account in [a1, a2, a3, a4]: + tx_hash = erc20_contract.functions.approve(C, initial_balance).transact({'from': account}) + w3.eth.wait_for_transaction_receipt(tx_hash) + +# Step 7: Each account attempts to stake tokens +stake_amounts = { + a1: 1, + a2: 10**9, + a3: 10**18, + a4: 10**18, +} + +print("\nStaking attempts:") +for account in [a1, a2, a3, a4]: + amount = stake_amounts[account] + try: + tx_hash = staking_contract.functions.stake(amount).transact({'from': account}) + w3.eth.wait_for_transaction_receipt(tx_hash) + print(f"Stake successful for account {account} with amount {amount}") + except Exception as e: + print(f"Stake failed for account {account} with amount {amount}: {e}") + +# Step 8: Fast forward 1000 blocks +eth_tester = w3.provider.ethereum_tester +now = w3.eth.get_block('latest')['timestamp'] +print(f"Before fast forward: {now}") +eth_tester.mine_blocks(1000) +now = w3.eth.get_block('latest')['timestamp'] +print(f"After fast forward: {now}") +deadline = staking_contract.functions.deadline().call() +print(f"Deadline: {deadline}") +# Step 9: Each account unstakes their tokens and prints the amounts +print("\nUnstaking attempts:") +for account in [a1, a2, a3]: + tx_hash = staking_contract.functions.unstake().transact({'from': account}) + w3.eth.wait_for_transaction_receipt(tx_hash) + # Get the new balance + balance = erc20_contract.functions.balanceOf(account).call() + print(f"Account {account} unstaked {amount}, new balance is {balance}") +contract_balance = erc20_contract.functions.balanceOf(staking_contract.address).call() +print(f"Remaining balance: {contract_balance}") diff --git a/test_binary_fft.py b/test_binary_fft.py old mode 100644 new mode 100755 diff --git a/trusted_setup/test.py b/trusted_setup/test.py old mode 100644 new mode 100755 diff --git a/trusted_setup/trusted_setup.py b/trusted_setup/trusted_setup.py old mode 100644 new mode 100755 diff --git a/uncle_regressions/attack_gas.csv b/uncle_regressions/attack_gas.csv old mode 100644 new mode 100755 diff --git a/uncle_regressions/attack_gas_regression.py b/uncle_regressions/attack_gas_regression.py old mode 100644 new mode 100755 diff --git a/uncle_regressions/base_regression.py b/uncle_regressions/base_regression.py old mode 100644 new mode 100755 diff --git a/uncle_regressions/block_datadump_generator.py b/uncle_regressions/block_datadump_generator.py old mode 100644 new mode 100755 diff --git a/uncle_regressions/time_regression.py b/uncle_regressions/time_regression.py old mode 100644 new mode 100755 diff --git a/uncle_regressions/tx_and_bytes_regression.py b/uncle_regressions/tx_and_bytes_regression.py old mode 100644 new mode 100755 diff --git a/variable_balance_sampling/sampling.py b/variable_balance_sampling/sampling.py old mode 100644 new mode 100755 diff --git a/verkle/fft.py b/verkle/fft.py old mode 100644 new mode 100755 diff --git a/verkle/fk20.py b/verkle/fk20.py old mode 100644 new mode 100755 diff --git a/verkle/multicombs.py b/verkle/multicombs.py old mode 100644 new mode 100755 diff --git a/verkle/poly_utils.py b/verkle/poly_utils.py old mode 100644 new mode 100755 diff --git a/verkle/verkle.py b/verkle/verkle.py old mode 100644 new mode 100755 diff --git a/verkle/verkle_precompute.py b/verkle/verkle_precompute.py old mode 100644 new mode 100755 diff --git a/verkle_trie/fft.py b/verkle_trie/fft.py old mode 100644 new mode 100755 diff --git a/verkle_trie/kzg_utils.py b/verkle_trie/kzg_utils.py old mode 100644 new mode 100755 diff --git a/verkle_trie/pippenger.py b/verkle_trie/pippenger.py old mode 100644 new mode 100755 diff --git a/verkle_trie/poly_utils.py b/verkle_trie/poly_utils.py old mode 100644 new mode 100755 diff --git a/verkle_trie/verkle_trie.py b/verkle_trie/verkle_trie.py old mode 100644 new mode 100755 diff --git a/verkle_trie_eip/ipa_utils.py b/verkle_trie_eip/ipa_utils.py old mode 100644 new mode 100755 diff --git a/verkle_trie_eip/poly_utils.py b/verkle_trie_eip/poly_utils.py old mode 100644 new mode 100755 diff --git a/verkle_trie_eip/verkle_trie.py b/verkle_trie_eip/verkle_trie.py old mode 100644 new mode 100755 diff --git a/verkle_trie_pedersen/blst.py b/verkle_trie_pedersen/blst.py old mode 100644 new mode 100755 diff --git a/verkle_trie_pedersen/ipa_utils.py b/verkle_trie_pedersen/ipa_utils.py old mode 100644 new mode 100755 diff --git a/verkle_trie_pedersen/poly_utils.py b/verkle_trie_pedersen/poly_utils.py old mode 100644 new mode 100755 diff --git a/verkle_trie_pedersen/verkle_trie.py b/verkle_trie_pedersen/verkle_trie.py old mode 100644 new mode 100755 diff --git a/whisk_csidh/fish.sage b/whisk_csidh/fish.sage old mode 100644 new mode 100755 diff --git a/whisk_csidh/relation_lattices.py b/whisk_csidh/relation_lattices.py old mode 100644 new mode 100755 diff --git a/zksnark/code_to_r1cs.py b/zksnark/code_to_r1cs.py old mode 100644 new mode 100755 diff --git a/zksnark/false_tests.txt b/zksnark/false_tests.txt old mode 100644 new mode 100755 diff --git a/zksnark/qap_creator.py b/zksnark/qap_creator.py old mode 100644 new mode 100755 diff --git a/zksnark/true_tests.txt b/zksnark/true_tests.txt old mode 100644 new mode 100755 diff --git a/zkstark/quadratic_prover_test.py b/zkstark/quadratic_prover_test.py old mode 100644 new mode 100755 diff --git a/zkstark/quadratic_provers.py b/zkstark/quadratic_provers.py old mode 100644 new mode 100755