;(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

Reguladores globais monitoram uso de criptomoedas em guerra na Ucrânia

A Ucrânia já levantou mais de 100 milhões de dólares em criptomoedas depois de publicar apelos em redes sociais com pedidos para doações de recursos em bitcoin e outros ativos eletrônicos - Reprodução/ Pixabay
A Ucrânia já levantou mais de 100 milhões de dólares em criptomoedas depois de publicar apelos em redes sociais com pedidos para doações de recursos em bitcoin e outros ativos eletrônicos Imagem: Reprodução/ Pixabay

Huw Jones

Da Reuters

21/03/2022 11h27Atualizada em 21/03/2022 11h49

Autoridades financeiras mundiais acompanham de perto o uso de criptomoedas durante a guerra na Ucrânia por preocupações de que os ativos possam estar sendo usados para contornar sanções impostas pelo Ocidente contra Moscou e seus aliados.

Algumas corretoras de criptomoedas rejeitaram pedidos de interrupção de operações de todos os usuários russos, o que levou a preocupações de que ativos digitais possam estar sendo utilizados para que alvos das sanções movimentem seus recursos.

A Ucrânia já levantou mais de 100 milhões de dólares em criptomoedas depois de publicar apelos em redes sociais com pedidos para doações de recursos em bitcoin e outros ativos eletrônicos.

"Estamos monitorando a situação relativa ao uso de criptos no conflito", disse Patrick Armstrong, membro do secretariado do Conselho de Estabilidade Financeira (FSB, na sigla em inglês), durante conferência em Londres.

O FSB, que agrupa reguladores financeiros, bancos centrais e autoridades de ministérios de finanças das 20 maiores economias do mundo, está compartilhando informações entre seus membros, disse Armstrong.

John Glen, ministro de Serviços Financeiros do Reino Unido, afirmou durante a mesma conferência que os já foram tomados pelo país para impedir o uso de criptomoedas em atividades de lavagem de dinheiro e financiamento de ações terroristas.

Acreditamos que tais medidas vão de forma ativa dar e à resposta do governo à invasão da Ucrânia pela Rússia, afirmou Glen.

Mas David Raw, da Autoridade de Conduta Financeira do Reino Unido, afirmou que 90% das empresas de cripto que buscavam aprovação para estabelecimento de medidas de controle contra lavagem de dinheiro retiraram seus pedidos ou têm recebido recusas pois não estão cumprindo padrões de operação.

Todas as empresas que possuem atividades relacionadas a moedas digitais no Reino Unido têm até o final deste mês para obterem aprovações e se regularizarem.

"Não acabamos em relação às medidas sobre criptomoedas", disse Raw.