profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/asselstine/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Brendan Asselstine asselstine PoolTogether Vancouver, BC https://pooltogether.com Co-founder of PoolTogether: financial savings games. Co-founder of Delta Camp: a software consultancy specializing in blockchain apps and integrations

asselstine/jekyll-trello-backlog 5

A simple Jekyll site that serves a Trello board as a cleanly formatted HTML page.

asselstine/JRtMidi 3

Java wrapper for the RtMidi library. It allows Java to use Midi devices.

asselstine/angular-follow 2

AngularJS Directive that allows an element to become fixed when the page is scrolled.

asselstine/cryptotrophies 2

CryptoTrophies

asselstine/donation-leaderboard 1

Displaying ETH transactions to an Ethereum Address as a Leaderboard

asselstine/asselstine.github.io 0

brendanasselstine.com website

asselstine/buidler-console 0

A project that makes interacting with on-chain pools much easier

asselstine/casual-vandalism 0

Geocache Graffiti

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentpooltogether/owner-manager-contracts

feat(contracts): add two steps ownership transfer

+// SPDX-License-Identifier: GPL-3.0++pragma solidity ^0.8.0;++import "./external/openzeppelin/Context.sol";

✂️ we don't need this

PierrickGT

comment created time in a day

Pull request review commentpooltogether/owner-manager-contracts

feat(contracts): add two steps ownership transfer

+// SPDX-License-Identifier: GPL-3.0++pragma solidity ^0.8.0;++import "./external/openzeppelin/Context.sol";++/**+ * @title Abstract ownable contract that can be inherited by other contracts+ * @notice Contract module which provides a basic access control mechanism, where+ * there is an account (an owner) that can be granted exclusive access to+ * specific functions.+ *+ * By default, the owner is the deployer of the contract.+ *+ * The owner account is set through a two steps process.+ *      1. The current `owner` calls {transferOwnership} to set a `pendingOwner`+ *      2. The `pendingOwner` calls {acceptOwnership} to accept the ownership transfer+ *+ * The manager account needs to be set using {setManager}.+ *+ * This module is used through inheritance. It will make available the modifier+ * `onlyOwner`, which can be applied to your functions to restrict their use to+ * the owner.+ */+abstract contract Ownable is Context {+    address private _owner;+    address private _pendingOwner;++    /**+     * @dev Emitted when `_pendingOwner` has been changed.+     * @param pendingOwner new `_pendingOwner` address.+     */+    event OwnershipOffered(address indexed pendingOwner);++    /**+     * @dev Emitted when `_owner` has been changed.+     * @param previousOwner previous `_owner` address.+     * @param newOwner new `_owner` address.+     */+    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);++    /* ============ Deploy ============ */++    /**+     * @notice Initializes the contract setting the deployer as the initial owner.+     */+    constructor() {

Pass the owner to the constructor, otherwise deploying will be hard

PierrickGT

comment created time in a day

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentpooltogether/owner-manager-contracts

feat(contracts): add two steps ownership transfer

 // SPDX-License-Identifier: GPL-3.0-pragma solidity >= 0.6.0 <= 0.8.6; -import "@openzeppelin/contracts/access/Ownable.sol";-import "@openzeppelin/contracts/utils/Context.sol";+pragma solidity ^0.8.0;++import "./external/openzeppelin/Ownable.sol";  /** *  @title Abstract ownable contract with additional manager role  * @notice Contract module based on Ownable which provides a basic access control mechanism, where- * there is an account (a draw manager for example) that can be granted exclusive access to- * specific functions.+ * there is an owner and a manager that can be granted exclusive access to specific functions.+ *+ * By default, the owner is the deployer of the contract.+ *+ * The owner account is set through a two steps process.+ *      1. The current `owner` calls {transferOwnership} to set a `pendingOwner`+ *      2. The `pendingOwner` calls {acceptOwnership} to accept the ownership transfer  *  * The manager account needs to be set using {setManager}.  *  * This module is used through inheritance. It will make available the modifier  * `onlyManager`, which can be applied to your functions to restrict their use to  * the manager.+ *+ *  */-abstract contract OwnerOrManager is Context, Ownable {+abstract contract OwnerOrManager is Ownable {      address private _manager;+    address private _pendingOwner;      /**-     * @dev Emitted when _manager has been changed.-     * @param newManager new _manager address.+     * @dev Emitted when `_manager` has been changed.+     * @param newManager new `_manager` address.      */     event ManagerTransferred(address indexed newManager);      /**-     * @notice Gets current _manager.-     * @dev Returns current _manager address.1-     * @return Current _manager address.+     * @notice Gets current `_manager`.+     * @return Current `_manager` address.      */     function manager() public view virtual returns (address) {         return _manager;     } +    /**+     * @notice Gets current `_pendingOwner`.+     * @return Current `_pendingOwner` address.+     */+    function pendingOwner() external view virtual returns (address) {+        return _pendingOwner;+    }++    /**+    * @dev Throws if called by any account other than the `pendingOwner`.+    */+    modifier onlyPendingOwner() {+        require(_msgSender() == _pendingOwner, "OwnerOrManager/caller-not-pendingOwner");+        _;+    }+     /**      * @dev Throws if called by any account other than the manager.      */     modifier onlyManagerOrOwner() {-        require(manager() == _msgSender() || owner() == _msgSender(), "Manager/caller-not-manager-or-owner");+        require(manager() == _msgSender() || owner() == _msgSender(), "OwnerOrManager/caller-not-manager-or-owner");         _;     } +    /**+    * @dev Allows current owner to set the pendingOwner address.+    * @param _newOwner Address to transfer ownership to.+    */+    function transferOwnership(address _newOwner) public override onlyOwner {+        require(_newOwner != address(0), "OwnerOrManager/pendingOwner-not-zero-address");+        _pendingOwner = _newOwner;+    }++    /**+    * @dev Allows the pendingOwner address to finalize the transfer.+    */+    function claimOwnership() external onlyPendingOwner {+        _setOwner(_pendingOwner);+        _pendingOwner = address(0);+    }+     /**      * @notice Set or change of manager.      * @dev Throws if called by any account other than the owner.      * @param _newManager New _manager address.      * @return Boolean to indicate if the operation was successful or not.      */-    function setManager(address _newManager) public onlyOwner returns (bool) {-        _setManager(_newManager);+    function setManager(address _newManager) external onlyOwner returns (bool) {+        return _setManager(_newManager);     }      /**      * @notice Set or change of manager.-     * @dev Throws if called by any account other than the owner.      * @param _newManager New _manager address.      * @return Boolean to indicate if the operation was successful or not.      */     function _setManager(address _newManager) internal returns (bool) {         address _previousManager = _manager;-        require(_newManager != address(0), "Manager/manager-not-zero-address");-        require(_newManager != _previousManager, "Manager/existing-manager-address");++        require(_newManager != address(0), "OwnerOrManager/manager-not-zero-address");

They should be able to clear the manager, I think setting to address(0) should be allowed

PierrickGT

comment created time in 5 days

Pull request review commentpooltogether/owner-manager-contracts

feat(contracts): add two steps ownership transfer

 // SPDX-License-Identifier: GPL-3.0-pragma solidity >= 0.6.0 <= 0.8.6; -import "@openzeppelin/contracts/access/Ownable.sol";-import "@openzeppelin/contracts/utils/Context.sol";+pragma solidity ^0.8.0;++import "./external/openzeppelin/Ownable.sol";  /** *  @title Abstract ownable contract with additional manager role  * @notice Contract module based on Ownable which provides a basic access control mechanism, where- * there is an account (a draw manager for example) that can be granted exclusive access to- * specific functions.+ * there is an owner and a manager that can be granted exclusive access to specific functions.+ *+ * By default, the owner is the deployer of the contract.+ *+ * The owner account is set through a two steps process.+ *      1. The current `owner` calls {transferOwnership} to set a `pendingOwner`+ *      2. The `pendingOwner` calls {acceptOwnership} to accept the ownership transfer  *  * The manager account needs to be set using {setManager}.  *  * This module is used through inheritance. It will make available the modifier  * `onlyManager`, which can be applied to your functions to restrict their use to  * the manager.+ *+ *  */-abstract contract OwnerOrManager is Context, Ownable {+abstract contract OwnerOrManager is Ownable {      address private _manager;+    address private _pendingOwner;      /**-     * @dev Emitted when _manager has been changed.-     * @param newManager new _manager address.+     * @dev Emitted when `_manager` has been changed.+     * @param newManager new `_manager` address.      */     event ManagerTransferred(address indexed newManager);      /**-     * @notice Gets current _manager.-     * @dev Returns current _manager address.1-     * @return Current _manager address.+     * @notice Gets current `_manager`.+     * @return Current `_manager` address.      */     function manager() public view virtual returns (address) {         return _manager;     } +    /**+     * @notice Gets current `_pendingOwner`.+     * @return Current `_pendingOwner` address.+     */+    function pendingOwner() external view virtual returns (address) {+        return _pendingOwner;+    }++    /**+    * @dev Throws if called by any account other than the `pendingOwner`.+    */+    modifier onlyPendingOwner() {+        require(_msgSender() == _pendingOwner, "OwnerOrManager/caller-not-pendingOwner");+        _;+    }+     /**      * @dev Throws if called by any account other than the manager.      */     modifier onlyManagerOrOwner() {-        require(manager() == _msgSender() || owner() == _msgSender(), "Manager/caller-not-manager-or-owner");+        require(manager() == _msgSender() || owner() == _msgSender(), "OwnerOrManager/caller-not-manager-or-owner");         _;     } +    /**+    * @dev Allows current owner to set the pendingOwner address.+    * @param _newOwner Address to transfer ownership to.+    */+    function transferOwnership(address _newOwner) public override onlyOwner {+        require(_newOwner != address(0), "OwnerOrManager/pendingOwner-not-zero-address");+        _pendingOwner = _newOwner;

Emit a new event here.

OwnershipOffered?

PierrickGT

comment created time in 5 days

PullRequestReviewEvent
PullRequestReviewEvent

push eventpooltogether/prize-chunker

Brendan Asselstine

commit sha 8bfdea2ebde493271e89d62704963c77f7038762

Deployed gemini prize chunker

view details

push time in 5 days

push eventpooltogether/pooltogether-pool-contracts

Brendan Asselstine

commit sha 8bdec11120312755dcc3f8be22a95c5593a635d7

Added times to pool pool fork test

view details

push time in 6 days

push eventpooltogether/pooltogether-pool-contracts

Brendan Asselstine

commit sha b87ac919adb1f497f593fd24dcd1b0a885b94b9a

Added some POOL pool fork tests

view details

push time in 6 days

push eventpooltogether/defender-autotask-reward

Brendan Asselstine

commit sha 7f144170cfb0890d472986c96716e8068a94e6d5

Fixed bug

view details

push time in 11 days

push eventpooltogether/defender-autotask-reward

Brendan Asselstine

commit sha 89992fd106ac90566aaaa334d3f94f84e89cbcda

Added Celo

view details

push time in 11 days

created tagpooltogether/yield-source-interface

tagv1.1.0

created time in 14 days

push eventpooltogether/yield-source-interface

Brendan Asselstine

commit sha 96d56de7f04a158884cdccb1249e4d8cb6251e3e

Added MockYieldSource

view details

push time in 14 days

push eventpooltogether/pooltogether-rng-contracts

Brendan Asselstine

commit sha b3da74e8c427940282fa75e019c7ba9e0b791afd

Added build artifacts to published package

view details

Brendan Asselstine

commit sha 42296e2b27d263712695b569dbaa0c97327017cd

Added RNG service stub

view details

push time in 15 days

created tagpooltogether/pooltogether-rng-contracts

tagv1.4.0

PoolTogether RNG Service

created time in 15 days

created tagpooltogether/pooltogether-rng-contracts

tagv1.3.1

PoolTogether RNG Service

created time in 15 days

push eventpooltogether/documentation

Pierrick TURELIER

commit sha 7d05ba7695e0d887f45340d020cbb9ea158c4ceb

GitBook: [v3.4.0] 6 pages modified

view details

push time in 20 days

push eventpooltogether/pooltogether-pool-contracts

Brendan Asselstine

commit sha ca78f42070ca9ef142cfaea6f44e5c942c93377d

Removed eip 1820 and added ptip32

view details

push time in 21 days

push eventpooltogether/documentation

Aodhgan

commit sha 2c1b5bf056c265067bc584dbe3f3b38b73d130d2

GitBook: [v3.4.0] 7 pages modified

view details

push time in 25 days

push eventpooltogether/prize-chunker

Brendan Asselstine

commit sha f7337ab3f49ec0ca73994369336dd0bd7d302b52

Deployed celo prize chunker

view details

push time in a month

push eventpooltogether/defender-autotask-reward

Brendan Asselstine

commit sha f8ca62948ec0e185fb7da1ae3440374e8c89fa9d

Added Polygon USDC pool

view details

push time in a month

push eventpooltogether/current-pool-data

Brendan Asselstine

commit sha 1cd6e0d189b7b46d1e47d30de090021bb837fd7d

Added Polygon USDC pool

view details

push time in a month

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent