Skip to content

Instantly share code, notes, and snippets.

View nhancv's full-sized avatar
🏠
Working from home

Nhan Cao nhancv

🏠
Working from home
View GitHub Profile
@nhancv
nhancv / painter.dart
Last active December 29, 2023 14:29
Flutter custom painter: rounded rect and arrow
class _MenuBoxBackground extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
final Paint paint = Paint()
..color = Colors.white
..strokeWidth = 1.W
..style = PaintingStyle.fill;
final double triangleH = 10.H;
final double triangleW = 25.0.W;
final double width = size.width;
// SPDX-License-Identifier: GNU GENERAL PUBLIC LICENSE V3
pragma solidity =0.8.3;
contract WBNB {
string public name = "Wrapped BNB";
string public symbol = "WBNB";
uint8 public decimals = 18;
event Approval(address indexed src, address indexed guy, uint wad);
event Transfer(address indexed src, address indexed dst, uint wad);

setup adb

Add platform-tools to your path

echo 'export ANDROID_HOME=/Users/$USER/Library/Android/sdk' >> ~/.bash_profile
echo 'export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools' >> ~/.bash_profile

Refresh your bash profile (or restart your terminal app)

source ~/.bash_profile
@nhancv
nhancv / w_circle_crop.dart
Last active August 28, 2023 13:10
Flutter crop circles, background image, draggable, transparent hole
import 'dart:convert';
import 'dart:io';
import 'dart:typed_data';
import 'dart:ui' as ui;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:nft/services/safety/base_stateful.dart';
import 'package:nft/widgets/p_appbar_transparency.dart';
import 'package:path_provider/path_provider.dart';
@nhancv
nhancv / Multicall.sol
Created August 11, 2023 00:39
Multicall v2, v3
pragma solidity =0.5.0;
pragma experimental ABIEncoderV2;
/// @title Multicall - Aggregate results from multiple read-only function calls
/// @author Michael Elliot <mike@makerdao.com>
/// @author Joshua Levine <joshua@makerdao.com>
/// @author Nick Johnson <arachnid@notdot.net>
contract Multicall {
struct Call {
@nhancv
nhancv / USDToken.sol
Last active August 3, 2023 05:11
ERC20 implementation, USDT, BUSD
pragma solidity 0.5.16;
/**
* @dev Interface of the ERC20 standard.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
@nhancv
nhancv / WETH.sol
Last active August 2, 2023 08:13
WETH
// SPDX-License-Identifier: GNU GENERAL PUBLIC LICENSE V3
pragma solidity 0.5.16;
contract WETH {
string public name = "Wrapped Ether";
string public symbol = "WETH";
uint8 public decimals = 18;
event Approval(address indexed src, address indexed guy, uint256 wad);
event Transfer(address indexed src, address indexed dst, uint256 wad);
@nhancv
nhancv / export_nftids.js
Created July 26, 2023 03:36
Export NFT ids of owner to text file
const fs = require('fs');
const fetchNFTIDs = async () => {
const NFT_ADDRESS='';
const OWNER_ADDRESS='';
const ETHERSCAN_APIKEY='';
const res = await fetch(`https://api.etherscan.io/api?module=account&action=addresstokennftinventory&address=${OWNER_ADDRESS}&contractaddress=${NFT_ADDRESS}&page=1&offset=1000&apikey=${ETHERSCAN_APIKEY}`);
if (res.ok) {
const data = await res.json();
const file = `nfts-${OWNER_ADDRESS}-${Date.now()}.txt`;
@nhancv
nhancv / install_docker_script.sh
Created June 25, 2023 03:11
Install docker ubuntu
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $(whoami)
@nhancv
nhancv / ERC20.ABI.json
Created June 14, 2023 02:16
Ethereum Solidity Standard ABI
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"