Skip to content

Instantly share code, notes, and snippets.

use std::{error::Error};
use fhe::bfv::{self, Encoding, Plaintext, PublicKey, SecretKey};
use fhe_traits::{FheDecoder, FheEncoder, FheEncrypter, Serialize, FheDecrypter};
use rand::{thread_rng};
fn main() -> Result<(), Box<dyn Error>> {
let degree = 4096;
let plaintext_modulus: u64 = 4096;
let moduli = vec![0xffffee001, 0xffffc4001, 0x1ffffe0001];
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity ^0.8.6;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract Distribute is Ownable {
using Counters for Counters.Counter;
// example of adding an owner to the mainnet safe via a proposal on the sidechain
const safeKovan = new ethers.Contract(
KOVAN_SAFE_ADDRESS,
GnosisSafeL2.abi,
deployer
)
const safeSokol = new ethers.Contract(
SOKOL_SAFE_ADDRESS,
GnosisSafeL2.abi,
import {AddressZero} from "@ethersproject/constants"
import GnosisSafeL2 from "../../abis/GnosisSafeL2.json"
import GnosisSafeProxyFactory from "../../abis/GnosisSafeProxyFactory.json"
import {Contract, ContractFactory} from "@ethersproject/contracts"
import {JsonRpcSigner, Web3Provider} from "@ethersproject/providers"
const {REACT_APP_PROXY_ADDRESS} = process.env
const createGnosisSafe = async (
admins: string[],
votingThreshold: number,
export const startERC20HouseDAOFundingGracePeriod = (
daoAddress: string,
proposalId: number,
provider: Web3Provider,
signer: JsonRpcSigner
): Promise<number> =>
new Promise<number>(async (resolve, reject) => {
try {
let isMined = false
const daoContract = new Contract(daoAddress, HouseTokenDAO.abi, signer)
export const vote = (
daoAddress: string,
proposalId: number,
vote: boolean,
provider: Web3Provider,
signer: JsonRpcSigner
): Promise<number> =>
new Promise<number>(async (resolve, reject) => {
try {
const daoContract = new Contract(daoAddress, HouseTokenDAO.abi, signer)
@nginnever
nginnever / weth mods
Last active November 10, 2020 23:26
address constant public amb_mediator = 0x5275e7264AB0Bb75D970E7442De0Aadd0C0b85ae;
function depositAndBridge() external override payable returns (bool success) {
require(address(this).balance + flashSupply <= type(uint112).max, "WETH::deposit: supply limit exceeded");
// Create token balance for deposit
balanceOf[msg.sender] += msg.value;
// Approve the new tokens to the mediator contract
allowance[msg.sender][amb_mediator] = msg.value;
@nginnever
nginnever / basic_sim.md
Last active May 12, 2020 17:53
Simulation_ Details

Sim Details

Currently scoring just

  1. firstMessageDeliveries

  2. time in mesh (but this is constant as I generate a static mesh graph across the network)

This current simulation is simple. This uses a small set of nodes and varying amounts of publishers only to better visualize message distribution. TODO: Future simulations that increase the network size to better simulate a live network of closer to 30k nodes exchanging messages.

# atomex.tz
{ parameter
(or (or (pair %initiate
(pair (pair (bytes %hashedSecret) (address %participant))
(pair (nat %payoffAmount) (timestamp %refundTime)))
(pair (address %tokenAddress) (nat %totalAmount)))
(bytes %redeem))
(bytes %refund)) ;
storage
(pair (big_map
This file has been truncated, but you can view the full file.
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..53f7426
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+**/target/
\ No newline at end of file
diff --git a/.gitignore b/.gitignore