NOTE
You may not need local branches for all pull requests in a repo.
To fetch only the branch that you need, use Fetch and delete refs to GitHub pull request branches
If you do for some reason need all pull request branches locally, continue on.
NOTE
You may not need local branches for all pull requests in a repo.
To fetch only the branch that you need, use Fetch and delete refs to GitHub pull request branches
If you do for some reason need all pull request branches locally, continue on.
With the scarecity of IPv4 addresses, and IPv6 still not available at large, NAT traversal is becoming a necessity. Especially with the generalisation of Carrier-grade NATs that you can find on mobile connections. Even with IPv6 you may suffer NAT66. Imagine your mobile device that gets only a single Ipv6 address, and you want to share it on your computer.
The solution might be in a decentralized protocol for address attribution such
// JS calling Rust | |
var addon = require('../native'); | |
console.log(addon.hello()); | |
// -> "hello node" | |
console.log(addon.adder(1,2)); | |
// -> 3 | |
console.log(addon.objAdder({a: 2, b: 5})); |
import React, {PropTypes} from 'react'; | |
import classNames from 'classnames'; | |
class BatchDropZone extends React.Component { | |
static propTypes = { | |
// function that recieves an array of files | |
receiveFiles: PropTypes.func.isRequired, |
// https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html | |
// https://infektor.net/posts/2017-01-19-using-cpp17-attributes-today.html | |
// Compiler flags: -Wall -Werror -Wextra -pedantic -Wunused-result -std=c++11 | |
// Suggested macro names: HANDLE_OUTPUT / NODISCARD / MUST_HANDLE | |
#define HANDLE_OUTPUT __attribute__((warn_unused_result)) | |
HANDLE_OUTPUT int critical_func() | |
{ | |
return 1234; |
/*** | |
* Shoutouts: | |
* | |
* Bytecode origin https://www.reddit.com/r/ethereum/comments/6ic49q/any_assembly_programmers_willing_to_write_a/dj5ceuw/ | |
* Modified version of Vitalik's https://www.reddit.com/r/ethereum/comments/6c1jui/delegatecall_forwarders_how_to_save_5098_on/ | |
* Credits to Jorge Izquierdo (@izqui) for coming up with this design here: https://gist.github.com/izqui/7f904443e6d19c1ab52ec7f5ad46b3a8 | |
* Credits to Stefan George (@Georgi87) for inspiration for many of the improvements from Gnosis Safe: https://github.com/gnosis/gnosis-safe-contracts | |
* | |
* This version has many improvements over the original @izqui's library like using REVERT instead of THROWing on failed calls. | |
* It also implements the awesome design pattern for initializing code as seen in Gnosis Safe Factory: https://github.com/gnosis/gnosis-safe-contracts/blob/master/contracts/ProxyFactory.sol |
/** | |
* Base contract that all upgradeable contracts should use. | |
* | |
* Contracts implementing this interface are all called using delegatecall from | |
* a dispatcher. As a result, the _sizes and _dest variables are shared with the | |
* dispatcher contract, which allows the called contract to update these at will. | |
* | |
* _sizes is a map of function signatures to return value sizes. Due to EVM | |
* limitations, these need to be populated by the target contract, so the | |
* dispatcher knows how many bytes of data to return from called functions. |
module MaybeMonad = struct | |
type 'a t = None | Maybe of 'a | |
let return (a: 'a) : 'a t = Maybe a | |
let (>>=) (m: 'a t) (f: 'a -> 'b t) : 'b t = match m with | |
| None -> None | |
| Maybe a -> f a | |
let get (m: 'a t) (a: 'a) = match m with |
module MaybeMonad = struct | |
type 'a t = None | Maybe of 'a | |
let return (a: 'a) : 'a t = Maybe a | |
let (>>=) (m: 'a t) (f: 'a -> 'b t) : 'b t = match m with | |
| None -> None | |
| Maybe a -> f a | |
let get (m: 'a t) (a: 'a) = match m with |
# Raw transaction API example work-through | |
# Send coins to a 2-of-3 multisig, then spend them. | |
# | |
# For this example, I'm using these three keypairs (public/private) | |
# 0491bba2510912a5bd37da1fb5b1673010e43d2c6d812c514e91bfa9f2eb129e1c183329db55bd868e209aac2fbc02cb33d98fe74bf23f0c235d6126b1d8334f86 / 5JaTXbAUmfPYZFRwrYaALK48fN6sFJp4rHqq2QSXs8ucfpE4yQU | |
# 04865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac09ef122b1a986818a7cb624532f062c1d1f8722084861c5c3291ccffef4ec6874 / 5Jb7fCeh1Wtm4yBBg3q3XbT6B525i17kVhy3vMC9AqfR6FH2qGk | |
# 048d2455d2403e08708fc1f556002f1b6cd83f992d085097f9974ab08a28838f07896fbab08f39495e15fa6fad6edbfb1e754e35fa1c7844c41f322a1863d46213 / 5JFjmGo5Fww9p8gvx48qBYDJNAzR9pmH5S389axMtDyPT8ddqmw | |
# First: combine the three keys into a multisig address: | |
./bitcoind createmultisig 2 '["0491bba2510912a5bd37da1fb5b1673010e43d2c6d812c514e91bfa9f2eb129e1c183329db55bd868e209aac2fbc02cb33d98fe74bf23f0c235d6126b1d8334f86","04865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac09ef122b1a9 |