;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Logo Pagbenk Seu dinheiro rende mais
Topo

Reais não poderão ser integralmente convertidos em moeda digital, diz Campos Neto

De acordo com a autarquia, a ideia é que a moeda digital funcione como uma extensão do real - Getty Images
De acordo com a autarquia, a ideia é que a moeda digital funcione como uma extensão do real Imagem: Getty Images

24/05/2021 16h10

BRASÍLIA (Reuters) - O presidente do Banco Central (BC), Roberto Campos Neto, disse nesta segunda-feira que as moedas digitais como a que está em estudo pelo BC são melhor adaptadas aos contratos digitais que ganham força com as plataformas de blockchain, mas ele frisou que ainda há muitos questionamentos em torno do novo instrumento.

Em videoconferência promovida pela empresa de private equity EB Capital, Campos Neto afirmou que não será possível, por exemplo, permitir que todos convertam a totalidade de suas moedas físicas em moeda digital, porque isso imporia um risco ao sistema financeiro.

"Se ela é uma extensão da moeda física, e pode ser convertida no mesmo valor, no mesmo tempo, você teria que abrir uma conversão total. Ou seja, se toda a sociedade demandasse trocar toda moeda física pela eletrônica, ela poderia. Isso, obviamente, não pode, porque geraria enorme problema para os bancos, que sofreriam com a parte do multiplicador bancário."

"Existem várias perguntas que não são respondidas nesse mundo, ainda, e a gente está avançando, mas acho que o primeiro o foi dado, que é entender quais são os pilares da moeda digital do futuro", pontuou.

Na manhã desta segunda, o BC divulgou as diretrizes que devem ser adotadas no potencial desenvolvimento de uma moeda digital brasileira emitida pelo própria autoridade monetária, com previsão de uso em pagamentos de varejo.

De acordo com a autarquia, a ideia é que a moeda digital funcione como uma extensão do real. Ela será distribuída ao público pelos bancos e fintechs, que terão a custódia do ativo, mas será 100% garantida pelo BC e não será remunerada —as instituições não poderão usar esses recursos para aplicações ou empréstimos, como acontece com o real.

"Como vão ser as trocas, as negociações no futuro? A gente entende que em algum momento esse movimento de 'tokenização', ou seja, transformar títulos em códigos numéricos e ser negociado via plataforma de blockchain, a gente entende que isso é um 'network' que, independente de as pessoas gostarem ou não da criptomoeda, o 'network' em si é muito proveitoso, eficiente", disse Campos Neto.

"E a gente vai viver em algum momento, eu acho que em breve, uma abundância de 'smart contracts', que são contratos digitais. E aí a moeda digital, ela se encaixa melhor com contrato digital do que a moeda física", acrescentou.