Bitcoin Forum
June 27, 2024, 12:32:11 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 [154] 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 ... 763 »
3061  Local / Português (Portuguese) / Re: Celsius acaba de bloquear saques - a coisa está feia on: September 02, 2022, 11:55:27 PM
Se você tinha $$ na carteira de "custodia" da Celsius, talvez receba o seu dinheiro de volta.

https://coinmarketcap.com/alexandria/article/some-celsius-users-may-be-allowed-to-withdraw-crypto-but-there-s-a-catch

Como saber se você faz parte: Você recebia yield nas suas moedas? Se não, fazia parte da seção de "custodia".

Há quem diga que esse é um truque da empresa para rotular a carteira de custodia como sendo "dos clientes", então meio que implicando que a carteira NÃO de custodia (a que dá yield) seria da empresa (aquele papo de "você nos deu as suas moedas").

https://twitter.com/SimonDixonTwitt/status/1565349073972252672
3062  Economy / Service Announcements / Re: [ANN] Preev.com Successor | oh.gold on: September 02, 2022, 11:41:13 PM
You might want to change the inputmode type of the inputs from numeric to decimal. With the former I can't add a comma/dot on my iPhone's browser, an issue when $100 is 0,005. Tongue

decimal
Fractional numeric input keyboard containing the digits and decimal separator for the user's locale (typically . or ,). Devices may or may not show a minus key (-).

numeric
Numeric input keyboard, but only requires the digits 0–9. Devices may or may not show a minus key.
3063  Local / Português (Portuguese) / Re: A caminho dos 10% de Inflação - Europa on: September 02, 2022, 10:10:17 PM
@joker_josue, entendo que Portugal não é tão frio quanto alguns de seus vizinhos e nem usa tanto o gas russo, mas como acha que vai ser o inverno por aí? Parece que o Nord Stream 1 vai permanencer fechado devido a um "vazamento"... caos total pela Europa (Alemanha, etc...)? Tongue

Nord Stream gas supply pipeline from Russia will be closed INDEFINITELY after 'oil leak was found'
3064  Local / Português (Portuguese) / Re: Arquivo de Posts e outras tools - ninjastic.space on: September 02, 2022, 07:05:09 PM
Por acaso, o teu site não consegue obter a informação de quando o user se registou?
Conseguir consegue, mas eu teria que pegar cada informação (do fórum) no momento que é necessário ou já ter esses dados anteriormente (tendo que analisar cada perfil).

Melhor só usar o BPIP.org quando precisar, que já cuida desse lado.
3065  Local / Português (Portuguese) / Re: Arquivo de Posts e outras tools - ninjastic.space on: September 02, 2022, 02:14:02 PM
TryNinja não sei se podes/queres revelar, mas como é que recolhes esses dados do fórum?
Web scraping.

O bot - o mesmo que cuida das notificações pelo Telegram - é open source: https://github.com/ninjastic/bitcointalk-supernotifier-v2

O fórum tem alguma API?
Não. Tem que pegar tudo na marra, e ai eu faço o favor de disponibilizar tudo através da minha própria API: https://docs.ninjastic.space/
3066  Local / Português (Portuguese) / Re: Crypto.com transfere por engano 7 milhões de dólares on: September 01, 2022, 08:29:30 PM
Ela não fez nada de fato errado.  Ela não hackeou ninguém.
Apropriação indébita é algo errado e ilegal em diversos países. A pessoa recebeu SETE MILHÕES de dólares ao invés de SESSENTA E OITO dólares (102941x mais do que deveria).

Certamente ela deveria tentar fazer um acordo para ficar com pelo menos uma parte do dinheiro. Duvido muito que algum juiz deixe ela ficar com a grana.
Isso não existe. No máximo dá para a empresa a presentear com um troco como agradecimento pela honestidade. Nem 1% (70 MIL) lhe é devido.

Provavelmente ela vai ficar "apenas" com a casa.
Isso nunca aconteceria.

Quote
O Supremo Tribunal do Estado de Victoria ordenou que a casa, que foi comprada pela irmã da mulher em causa, fosse vendida e o dinheiro devolvido à empresa. Espera-se que o caso regresse ao tribunal em outubro.
3067  Local / Português (Portuguese) / Re: Crypto.com transfere por engano 7 milhões de dólares on: September 01, 2022, 05:37:20 PM
- Então uma pessoa recebe um valor destes, de uma plataforma que exige KYC em tudo, e esta a espera de não ser apanhada?
Considerando que se passaram 6-7 meses, é capaz dela ter deixado o dinheiro parado "para ver no que vai dar" e depois de 1 mês sem notícias, pensou que a empresa tinha simplesmente esquecido ou nunca iria perceber. Grin

A sorte foi que ela comprou uma casa e não crypto apenas para ""perder""  tudo em um acidente de barco.
3068  Local / Português (Portuguese) / Re: [Script] Notas do Usuário on: September 01, 2022, 01:08:26 AM
Sobre as notas, uma dúvida... onde fica salvo as anotações, tem como fazer backup delas caso eu queira formatar o pc, reinstalar o navegador ou levar para outro local?
No update que postei hoje já dá para exportar e importar localmente (copiando e salvando um texto com suas notas). Vou melhorando o script com o tempo. Cool
3069  Local / Português (Portuguese) / Re: Michael Saylor não é mais CEO da MicroStrategy on: August 31, 2022, 07:54:44 PM
Saylor está sendo processado pela SEC por tax fraud: https://twitter.com/AGKarlRacine/status/1565031380471382019

Quote
NEW: Today, we’re suing Michael Saylor - a billionaire tech executive who has lived in the District for more than a decade but has never paid any DC income taxes - for tax fraud.

Será que esse é o motivo que o fez sair do cargo de CEO da empresa? Tongue

A sua empresa (MicroStrategy) também está na mira:

Quote
We’re also suing his company, MicroStrategy, for conspiring to help him evade taxes he legally owes on hundreds of millions of dollars he’s earned while living in DC.
3070  Local / Português (Portuguese) / Re: [Script] Notas do Usuário on: August 31, 2022, 07:52:44 PM
Por falar disso, sei que existe mais vários scripts para o fórum. Onde é que eu os posso encontrar?
List of Bitcointalk.org Userscripts/ Add-ons

Eu uso os meus, o Enhanced merit UI, e para fazer o quote de posts em tópicos trancados. Também uso a extensão do BPIP que tem várias adições do ninjastic.space. Cool
3071  Local / Português (Portuguese) / Re: Telegram quer leiloar nomes de usuário e links no formato de NFTs on: August 31, 2022, 07:09:29 PM
Não diz que não sabiam a quem estavam a comprar ou não.

Talvez seja eu que tenha uma visão mais restritiva das estratégias das empresas. Apenas acho estranho empresas, que tem de justificar valores aos seus acionistas, façam compras de grandes valores, sem terem a certeza a quem estão a comprar.
Visa comprou um CryptoPunk de $150k: https://www.moneytimes.com.br/visa-se-aventura-nos-nfts-ao-incluir-cryptopunk-em-sua-colecao-de-artigos-retro/
Arizona Iced Tea comprou um BYAC: https://twitter.com/DrinkAriZona/status/1428805448031948800

Literalmente não tem um único indicativo de que qualquer empresa saiba a identidade desses vendedores. Pelo contrário, por ter sido realizada através da OpenSea, é ainda mais improvável. É um achismo que eu considero desnecessário.
3072  Local / Português (Portuguese) / [Script] Notas do Usuário on: August 31, 2022, 04:36:27 PM
Pediram esse script lá no board gringo e também vou postar ele aqui.

Ele adiciona uma opção de adicionar uma nota/descrição em cada usuário, que só pode ser vista localmente. É uma forma de lembrar detalhes de uma pessoal (i.e bem conhecida, amigável, já negociei, estou devendo X reais, etc...).

Tópico original: https://bitcointalk.org/index.php?topic=5411599





Installation

- Install Tampermonkey (Chrome, Brave...) or Greasymonkey (Firefox).
- Add a new script and paste the code:

Code:
// ==UserScript==
// @name         BitcoinTalk User Notes
// @version      0.3
// @description  Adds an note field to each user on BitcoinTalk
// @author       TryNinja
// @match        https://bitcointalk.org/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bitcointalk.org
// @grant GM.setValue
// @grant GM.getValue
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==

const enableModal = 1;

(async function() {
    'use strict';

    const addStyle = (css) => {
        const style = document.getElementById("GM_addStyleBy8626") || (() => {
        const style = document.createElement('style');
        style.id = "GM_addStyleBy8626";
        document.head.appendChild(style);
        return style;
        })();
        const sheet = style.sheet;
        sheet.insertRule(css, (sheet.rules || sheet.cssRules || []).length);
    }

    if (enableModal) {
        addStyle(`.modal {
            position: fixed;
            width: 100vw;
            height: 100vh;
            top: 0;
            left: 0;
            display: flex;
            align-items: center;
            justify-content: center;
        }`);

        addStyle(`.modal-bg {
            position: absolute;
            width: 100%;
            height: 100%;
        }`);

        addStyle(`.modal-container {
            min-width: 30vh;
            border-radius: 10px;
            background: #fff;
            position: relative;
            padding: 10px;
        }`);

        addStyle(`.modal-close {
            position: absolute;
            right: 15px;
            top: 15px;
            outline: none;
            appearance: none;
            color: red;
            background: none;
            border: 0px;
            font-weight: bold;
            cursor: pointer;
        }`);
    };

    const getValue = typeof GM_getValue === 'undefined' ? GM.getValue : GM_getValue;
    const setValue = typeof GM_setValue === 'undefined' ? GM.setValue : GM_setValue;

    const getParentNodeNth = (element, num) => {
        let parent = element;
        for (let i = 0; i < num; i++) {
            if (parent.parentNode) {
                parent = parent.parentNode;
            }
        }
        return parent;
    };

    const getNotes = async () => {
        let notes;
        try {
            notes = JSON.parse(await getValue('notes') ?? '{}');
        } catch (error) {
            notes = {};
        };
        return notes;
    };

    const setNotes = async notes => {
        if (typeof notes === 'string') {
            try {
                JSON.parse(notes);
                await setValue('notes', notes);
            } catch (error) {
                console.error('Notes value is an invalid JSON format')
            };
        } else if (typeof notes === 'object') {
            await setValue('notes', JSON.stringify(notes ?? {}));
        };
    };

    const getUserNote = async user => {
        const notes = await getNotes();
        if (!notes) {
            return null;
        }
        return notes[user];
    };

    const setUserNote = async (user, note) => {
        const notes = await getNotes();
        notes[user] = note;
        await setNotes(notes)
    };

    const texts = {
        addNote: '<a style="cursor: pointer; font-weight: bold" href="javascript:;">📜 Add Note</a>',
        withNote: note => `<a style="cursor: pointer; font-weight: bold" href="javascript:;"><b>📜</b> ${note}</a>`
    };

    const addNote = async (user, element) => {
        const note = prompt('Input the note (empty to remove):');
        await setUserNote(user, note);
        if (note) {
            element.innerHTML = texts.withNote(note);
        } else if (note !== null) {
            element.innerHTML = texts.addNote;
        }
    };

    const exportNotesToInput = async () => {
        const notesInput = document.querySelector('#notesInput');
        const notesImportExportDiv = document.querySelector('#notesImportExportDiv');
        const doneImportButton = document.querySelector('#doneImportButton');
        const notes = await getNotes();
        const notesJsonString = JSON.stringify(Object.keys(notes)
            .filter(user => notes[user]).reduce((obj, user) => ({...obj, [user]: notes[user]}), {}));

        notesInput.value = notesJsonString;
        notesImportExportDiv.querySelector('span').innerText = 'Export (copy the code)';
        notesImportExportDiv.style.display = 'flex';
        doneImportButton.style.display = 'none';
    };

    const importNotesFromInput = async () => {
        const notesInput = document.querySelector('#notesInput');
        const notesImportExportDiv = document.querySelector('#notesImportExportDiv');
        const doneImportButton = document.querySelector('#doneImportButton');

        notesInput.value = '';
        notesImportExportDiv.querySelector('span').innerText = 'Import (paste the code)';
        notesImportExportDiv.style.display = 'flex';
        doneImportButton.style.display = 'inline-block';
    };

    const importNotesFromInputDone = async () => {
        const notesInput = document.querySelector('#notesInput');
        const confirmImport = confirm('Are you sure you want to override your local notes?');

        if (confirmImport && notesInput.value) {
            setNotes(notesInput.value);
            loadUserNotesList();
        }
    };

    const insertNotesModal = async () => {
        let notesModal = document.querySelector('#userNotesModal');

        if (!notesModal) {
            const moreMenuBtn = document.querySelector('body');
            notesModal = document.createElement('div');

            notesModal.innerHTML = `
                <div class="modal" id="modal-one">
                    <div class="modal-bg modal-exit"></div>
                    <div class="modal-container">
                        <div style="margin-bottom: 5px;">
                            <b style="font-size: 2rem;">User Notes</b>
                            <button class="modal-close modal-exit">X</button>
                        </div>

                        <div style="display: flex; align-items: center; margin-bottom: 5px;">
                            <button id="exportUserNotes">Export</button>
                            <button id="importUserNotes">Import</button>
                        </div>

                        <div>
                            <div style="display: none; flex-direction: column;" id="notesImportExportDiv">
                                <span id="notesInputText"></span>
                                <input id="notesInput" />
                                <button id="doneImportButton" style="display: none;">Done</button>
                            </div>

                        </div>

                        <div id="userNotesList" />
                    </div>
                </div>`;
            notesModal.classList.add('modal');
            notesModal.style.visibility = 'hidden';
            notesModal.setAttribute('id', 'userNotesModal');

            moreMenuBtn.after(notesModal);

            const exportButton = document.querySelector('#exportUserNotes');
            const importButton = document.querySelector('#importUserNotes');
            const doneImportButton = document.querySelector('#doneImportButton');

            exportButton.addEventListener('click', () => exportNotesToInput());
            importButton.addEventListener('click', () => importNotesFromInput());
            doneImportButton.addEventListener('click', () => importNotesFromInputDone());
        };

        return notesModal;
    };

    const loadUserNotesList = async () => {
        const userNotesList = document.querySelector('#userNotesList');

        const notes = await getNotes();

        if (Object.keys(notes).length) {
            userNotesList.innerHTML = Object.keys(notes)
            .filter(user => notes[user])
            .map((user) => `<a href="https://bitcointalk.org/index.php?action=profile;u=${user}" target="_blank">${user}</a>: ${notes[user]}`).join('<br/>');
        } else {
            userNotesList.innerHTML = 'No notes...';
        };
    };

    const insertUserNotesMenuButton = async () => {
        let notesBtn = document.querySelector('#userNotesMenuBtn');
        const modal = await insertNotesModal();
        const modalExit = modal.querySelectorAll('.modal-exit');

        if (!notesBtn) {
            const moreMenuBtn = document.querySelector(`a[href='/more.php']`).parentNode;
            notesBtn = document.createElement('td');

            notesBtn.innerHTML = '<td><a href="javascript:;" id="openUserNotes">User Notes</a></td>';
            notesBtn.classList.add('maintab_back');
            notesBtn.setAttribute('id', 'userNotesMenuBtn');
            moreMenuBtn.after(notesBtn);

            const openUserNotes = document.querySelector('#openUserNotes')
            const notesImportExportDiv = document.querySelector('#notesImportExportDiv');
            const notesInput = document.querySelector('#notesInput');

            openUserNotes.addEventListener('click', () => {
                modal.style.visibility = 'visible';
                modal.style.opacity = 1;
                notesImportExportDiv.style.display = 'none';
                notesInput.value = '';
                loadUserNotesList();
            });
            modalExit.forEach(el => el.addEventListener('click', () => {
                modal.style.visibility = 'hidden';
                modal.style.opacity = 0;
            }));
        }

        return notesBtn;
    };

    if (enableModal) {
        insertNotesModal();
        insertUserNotesMenuButton();
    };

    if (window.location.href.match(/topic=\d+/)) {
        const targets = [...document.querySelectorAll('td.poster_info div a:last-child')]
        .filter(e => window.getComputedStyle(getParentNodeNth(e, 11)).display !== 'none');

        targets.map(async target => {
            const [_, userId] = [...target.parentNode.parentNode.childNodes].find(childNode => childNode.innerHTML).innerHTML.match(/u=(\d+)/);
            const noteDiv = document.createElement('div');
            const note = await getUserNote(userId);
            if (!note) {
                noteDiv.innerHTML = texts.addNote;
            } else {
                noteDiv.innerHTML = texts.withNote(note);
            }
            target.before(noteDiv);
            noteDiv.addEventListener('click', () => addNote(userId, noteDiv), false);
        });
    } else if (window.location.href.match(/profile;u=\d+/)) {
        const [_, userId] = window.location.href.match(/u=(\d+)/);
        const target = getParentNodeNth(document.querySelector('#bodyarea table tr td tbody tr:nth-child(2) tr:last-child').parentNode, 1);
        const noteDiv = document.createElement('div');
        const note = await getUserNote(userId);
        if (!note) {
            noteDiv.innerHTML = texts.addNote;
        } else {
            noteDiv.innerHTML = texts.withNote(note);
        }
        target.before(noteDiv);
        noteDiv.addEventListener('click', () => addNote(userId, noteDiv), false);
    }
})();
3073  Local / Português (Portuguese) / Re: Telegram quer leiloar nomes de usuário e links no formato de NFTs on: August 31, 2022, 02:28:46 PM
Mas para uma Amazon comprar o domínio alguém, tem de falar com esse alguém. Não estou a ver uma Amazon a negociar com um anonimo.
No caso da web3? É só mandar uma oferta através de um mercado, ué. Postei ali em cima uma oferta que o rapaz do amazon.eth recebeu de $1m. Se quem fez a oferta foi a Amazon ou alguém querendo apostar em um flip futuro, não dá para saber, mas tá lá.

Sinceramente duvido que uma empresa como Amazon, ou outra grande empresa, pague 1000 ETH a um anonimo!
Já fizeram parecido. A Budweiser comprou o ENS beer.eth por 30 ETH ($100k): https://finance.yahoo.com/news/budweiser-registers-beer-eth-domain-085142123.html
3074  Other / Meta / Re: [Script] BitcoinTalk User Notes on: August 31, 2022, 03:31:22 AM
Version 0.3

- I added an "User Notes" menu (next to the logout button).
- You can view, export and import your notes (WIP! needs more polishing and a better UI/UX).

You can disable the new menu by changing enableModal from 1 to 0 at the top of the script.

The updated code can be found in the OP.



Off topic: @TryNinja looking at your post history (last posts of the user) I noticed that you quoted a link of an image which is just ridiculously long line without a break.
It ruined the arrangement of the last posts, is there any solution for this issue?
Lol, this is an issue the forum css has with long strings inside the code tag. I had to "censor" the code to fix the page. Maybe a script for that? Tongue
3075  Local / Português (Portuguese) / Re: Telegram quer leiloar nomes de usuário e links no formato de NFTs on: August 31, 2022, 12:41:51 AM
Se os domínios ENS se tornarem populares, facilmente as grandes empresas surgiram com ordens judiciais para que quem tiver o domínio i.e "amazon.eth" não o possa utilizar sob a pena de ser processado. A pessoa até o pode ter, mas não pode fazer nada com ele, e a marca talvez arranje um domínio adicional se não estiver disposta a pagar o valor exigido.
Acho difícil isso acontecer. Os domínios do ENS funcionam livremente onchain e ninguém sabe quem é o dono do endereço. Eu posso linkar o meu endereço com o amazon.eth e ele vai continuar funcionando. Para eu ser processado, terão que descobrir a minha identidade.

É fácil de se obter o domínio com trademark no web2 porquê é uma empresa que controla esses registros centralizados, e ela pode simplesmente transferi-la para a verdadeira Amazon. Além do mais, todo domínio tem que ter um responsável por trás (com nome, telefone, e endereço).
3076  Local / Português (Portuguese) / Re: Royalties em NFTs: A discussão do momento on: August 30, 2022, 11:57:18 PM
Não estou a perceber a polemica. Quem coloca os NFTs nessa plataforma, já sabe que não recebe royalties. Porque é que isso é polemico?  Undecided
Eu lanço um projeto NFT. Para angariar fundos pós lançamento e continuar o seu desenvolvimento (seja lá qual seja), eu coloco uma fee de 2% que vai ser cobrada para cada venda realizada pelos mercados tradicionais (OpenSea, LooksRare...). Essa plataforma P2P faz com que fulano consiga vender o seu NFT sem pagar os meus 2%. Já viu onde tá a polemica?
3077  Local / Português (Portuguese) / Re: E se surgir uma crypto melhor que Bitcoin? on: August 30, 2022, 07:23:23 PM
Nesse caso eu pediria exemplos para quem diz isso. Você tem algum?

"Melhor" é bastante relativo.

A Ethereum é turing complete e permite a execução de smartcontracts. Por outro lado, é muito mais centralizada e suscetível à censura. Todos os dapps ficam à mercê de grandes provedores de nodes centralizados (tais como Infura e Alchemy, que inclusive censuraram o acesso ao smartcontract da Tornado Cash) e ninguém roda o seu próprio node.

A Doge produz blocos mais rapidamente, portanto é mais rápida e barata, mas peca exatamente na segurança da rede. Diminuir a variável na equação da dificuldade da rede não é uma solução para a escalabilidade da rede.

Eles são melhores por quê são mais rápidos e/ou completos? A Doge de jeito nenhum. A Ethereum eu acredito que tem seu caso de uso, sendo que é impossível dizer que ela é melhor que o Bitcoin por exercer um papel diferente da moeda criada pelo grande satoshi.
3078  Economy / Service Discussion / Re: [Tutorial] How To Mix bitcoin free on: August 30, 2022, 02:36:39 AM
PSA: Do not randomly click an onion link online. It's very hard to memorize it, so checking for its legitimacy is hard. Cheesy

Instead, go to ChipMixer's official website and grab the link from there. Then bookmark it on your browser.

chipmixer.com < if it's not .com, then it's a scam!
3079  Bitcoin / Project Development / Re: Why this PHP code is not posting BTC price in USD on 29-08-2019? on: August 30, 2022, 01:11:04 AM
What do you get when you visit the page? Both of your codes are working fine on my end. Tongue

It returns 9753.4870488971, which matches what the API endpoint returns (with the last digit being rounded).
3080  Other / Meta / Re: [Script] BitcoinTalk User Notes on: August 30, 2022, 01:05:49 AM
Crazy idea: would it be possible to encrypt notes (from the browser) and upload it to your server?
Doable, I just need to find a way to encrypt them without the need to import an entire lib for that (i.e crypto-js). I want to keep the script as simple and clean as possible (no jquery, etc...). I'll probably add a local import/export as json soon.

Then please answer my question, Is it safe to use?
People seem inclined to like things from open source, but since Tampermonkey is from closed sources then security questions regarding privacy or such seem worth asking. Instead of blabbering, I'm just telling you I haven't tried it.
I have been using Tampermonkey for years. AFAIK, it is safe as long as you know which scripts you're importing. It's just easier than creating an extension for every script I use (I currently have 3 for the forum - enhanced merits, this one, and to quote posts on locked threads).
Pages: « 1 ... 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 [154] 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 ... 763 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!