Skip to content

Instantly share code, notes, and snippets.

# frozen_string_literal: true
def repo_commits(repo)
`cd #{repo} && git pull origin`
result = `cd #{repo} && git --no-pager log --pretty='format:%h;%an;%ae;%ad;%(trailers:key=Co-authored-by)' --date=short --shortstat --no-merges`
commits = result.unpack('C*').pack('U*').split("\n").delete_if(&:empty?).delete_if { |x| x =~ /^Co-authored-by/ }
commits = commits.reject.each_with_index { |e, i| e =~ /;/ && (commits[i + 1] =~ /;/ || commits[i + 1].nil?) }.each_slice(2).to_a
commits.map do |c|
changes = c[1]
@danicuki
danicuki / nft_rarity.rb
Created December 23, 2021 14:44
Calculates NFT rarity using blockfrost Cardano API
require 'rest-client'
require 'json'
require 'csv'
require 'json_converter'
API_KEY = ENV['API_KEY']
HEADERS = {"project_id" => API_KEY}
policy_id = '90465e141ecb7b72ed0cdbcbd848673177cd52be5af5518e95d0de1d'
url = "https://cardano-mainnet.blockfrost.io/api/v0/assets/policy/#{policy_id}?count=100&page="
@danicuki
danicuki / WavePortal.sol
Created April 29, 2022 21:33
Seção 1: Escrever e deployar o contrato inteligente WavePortal na rede local Ethereum
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract WavePortal {
uint256 totalWaves;
constructor() {
@danicuki
danicuki / App.jsx
Last active May 30, 2023 02:17
Seção 2
import React, { useEffect, useState } from "react";
import { ethers } from "ethers";
import './App.css';
import abi from "./utils/WavePortal.json"
export default function App() {
const [currentAccount, setCurrentAccount] = useState("");
const contractAddress = "0xF2482AEDB6bfF7Cc73772fCBCeAA9157ff00c287";
const contractABI = abi.abi;
@danicuki
danicuki / App.jsx
Last active May 4, 2022 13:16
Section 3: Atualiza WavePortal para enviar ETH para os usuários
import React, { useEffect, useState } from "react";
import { ethers } from "ethers";
import './App.css';
import abi from "./utils/WavePortal.json"
export default function App() {
const [currentAccount, setCurrentAccount] = useState("");
const [allWaves, setAllWaves] = useState([]);
const contractAddress = "0xd289A2e424dE94E9dcfFE03Ae050961Df70a4474";
@danicuki
danicuki / App.jsx
Last active April 17, 2024 16:54
Seção 4: Interface UI + deploy na testnet Ethereum e projeto completo
import React, { useEffect, useState } from "react";
import { ethers } from "ethers";
import './App.css';
import abi from "./utils/WavePortal.json"
export default function App() {
const [currentAccount, setCurrentAccount] = useState("");
const [allWaves, setAllWaves] = useState([]);
const contractAddress = "0xd289A2e424dE94E9dcfFE03Ae050961Df70a4474";
@danicuki
danicuki / MyEpicNFT.sol
Created June 20, 2022 00:36
NFT Collection - Código fim da Seção 1
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.1;
// Primeiro importamos alguns contratos do OpenZeppelin.
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "hardhat/console.sol";
// Nós herdamos o contrato que importamos. Isso significa que
// teremos acesso aos métodos do contrato herdado.
contract MyEpicNFT is ERC721URIStorage {
// Mágica dada pelo OpenZeppelin para nos ajudar a observar os tokenIds.
@danicuki
danicuki / MyEpicNFT.sol
Created June 20, 2022 01:16
MyEpicNFT.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.1;
// Precisamos de algumas funcoes utilitarias.
import "@openzeppelin/contracts/utils/Strings.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "hardhat/console.sol";
pragma solidity 0.8.0;
// We need some util functions for strings.
import "@openzeppelin/contracts/utils/Strings.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "hardhat/console.sol";
contract MyEpicNFT is ERC721URIStorage {
@danicuki
danicuki / Base64.sol
Created June 20, 2022 01:29
Base64.sol
/**
*Submitted for verification at Etherscan.io on 2021-09-05
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// [MIT License]
/// @title Base64