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

Pagaria por terreno virtual? Um foi vendido por US$ 2,4 mi no metaverso

Terreno foi vendido no Decentraland - Decentraland/Reprodução
Terreno foi vendido no Decentraland Imagem: Decentraland/Reprodução

Elizabeth Howcroft

Em Londres

23/11/2021 16h11

Um terreno virtual no mundo online Decentraland foi vendido por valor em criptomoedas equivalente a um recorde de 2,4 milhões de dólares (cerca de R$ 13,4 milhões, em conversão direta), afirmou o comprador, Tokens.com, e a Decentraland, nesta terça-feira.

O mundo de Decentraland é um ambiente online, também conhecido como "metaverso", em que os usuários podem comprar terrenos, visitar edifícios e conhecer outras pessoas que usam avatares.

Tais ambientes têm crescido em popularidade, principalmente depois que as medidas de isolamento social deixaram as pessoas presas em suas casas por meses.

O Decentraland é um tipo específico de metaverso que usa a tecnologia blockchain. Terrenos e outros itens vendidos no mundo online são comercializados na forma de tokens não fungíveis (NFTs), um tipo de ativo digital.

Entusiastas das moedas digitais compram terrenos no metaverso da Decentraland como um investimento especulativo, por meio da criptomoeda do metaverso, chamada de Mana.

Uma subsidiária da Tokens.com, chamada de Metaverse Group, comprou um terreno por 618 mil manas na segunda-feira, o que equivale a cerca de 2,43 milhões de dólares, afirmou um porta-voz da Decentraland confirmado por um comunicado da própria Tokens.com.

A compra da área foi registrada no marketplace de NFTs OpenSea, segundo dados vistos pela Reuters.

A Decentraland afirmou que a transação representou a mais cara compra de espaço online já realizada na plataforma.

O terreno fica na área "Fashion Street" do mapa da Decentraland e a Tokens.com afirmou que será usado para hospedar eventos digitais de moda e para a venda de roupas virtuais para avatares.

A área é formada por 116 sublotes, cada um medindo cerca de 5 metros quadrados. No total, o terreno adquirido possui um espaço online equivalente a 566 metros quadrados.

Em junho, uma área no Decentraland foi vendida por 1,295 milhão de manas, cerca de 913,2 mil dólares na época. Os compradores construíram um shopping center para vender roupas digitais, mas a Reuters visitou o espaço várias vezes desde então e não presenciou qualquer comprador no centro comercial.

Mana é altamente volátil. A moeda se valorizou cerca de 400% neste mês, segundo a Coinbase, disparando depois que o Facebook mudou de nome para Meta e anunciou sua estratégia para se expandir no mercado de metaversos.