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

Exposição de NFT em SP com itens raros de Kobe sorteará anel valioso da NBA

Anel dado aos Lakers por título de 2009 será leiloado em exposição de Kobe Bryant - Divulgação
Anel dado aos Lakers por título de 2009 será leiloado em exposição de Kobe Bryant Imagem: Divulgação

Colaboração para o UOL, em Santos (SP)

31/05/2023 13h00

Itens raros do ex-jogador de basquete Kobe Bryant, morto em 2020, estarão expostos no NFT.Brasil, primeira exposição internacional de NFTs realizada em São Paulo, marcada para os dias 2, 3 e 4 de junho.

O que aconteceu

Fãs do esporte terão a oportunidade de ver "in loco" peças raras usadas pelo lendário atleta. O público do evento, que acontece no Pavilhão da Bienal, no Parque Ibirapuera, está estimado em 30 mil.

Entre as peças está o exclusivo anel de ouro e cravejado com dezenas de diamantes oferecido pela NBA a toda equipe pelo título de 2009, ano em que Bryant liderou os Lakers e conquistou o seu quarto campeonato na carreira.

O anel, aliás, será sorteado entre os fãs que adquirirem NFT's de obras inspiradas em Kobe Bryant. Ao garantir cada NFT por R$175,00, eles vão concorrer a prêmios como viagens aos EUA, ingressos para assistir a um jogo dos Lakers na NBA e também ao valioso anel.

Bolas de basquete, agasalhos, camisetas e tênis, todos usados nas quadras e autografados pelos astros da NBA, também estarão em exibição.

A exposição foi trazida ao Brasil foi empresa norte-americana PelXP.

O que é NFT

NFT é a abreviação de "Non-Fungible Token", que em português significa "Token Não-Fungível". Um token é um símbolo eletrônico que representa um bem. Ele tem características únicas e não pode ser substituído por outra coisa.

Quase tudo pode ser um NFT: obras de arte, músicas, imóveis, itens colecionáveis, medalhas olímpicas, assentos em um evento, memes ou até mesmo uma postagem nas redes sociais.

A proposta do evento NFT.Brasil é dar ao público, que adquire NFTs, a possibilidade de, além de obter a propriedade digital de parte da obra, concorrer e possuir o bem fisicamente.

Os NFTs adquiridos podem ser revendidos e a possibilidade do lucro ocorre no momento em que o proprietário coloca seus ativos para compra e venda através de "marketplaces".