-
@ 4cebd4f5:0ac3ed15
2025-04-17 03:12:14Tóm tắt Hackathon
HackCanada quy tụ các nhà đổi mới, lập trình viên, designer và chuyên gia giải quyết vấn đề để giải quyết thách thức cấp bách tại Canada như khả năng tiếp cận healthcare, bền vững môi trường, cơ sở hạ tầng số và chênh lệch kinh tế. Sự kiện diễn ra tại Đại học Wilfrid Laurier (Ontario, Canada) với 188 developer tham gia, đóng góp 89 dự án độc đáo.
Các dự án tập trung vào cải thiện hệ thống y tế qua công nghệ, nâng cấp hạ tầng số cho cộng đồng vùng sâu, và phương pháp sáng tạo giảm thiểu dấu chân môi trường. Hackathon trở thành nền tảng hợp tác, thúc đẩy ý tưởng mới và giải pháp thực tiễn, hướng đến mục tiêu tạo lợi ích cụ thể và truyền cảm hứng thay đổi.
Tổng quan, HackCanada tạo môi trường năng động cho đổi mới, góp phần phát triển công nghệ nâng cao chất lượng cuộc sống người dân. Sự kiện đóng vai trò chất xúc tác cho sáng tạo cộng đồng, hướng đến tương lai bao trùm và bền vững.
Các dự án đoạt giải
Giải Nhất Chung Cuộc
- Phone-a-Fraud: Hệ thống AI-driven phát hiện lừa đảo qua điện thoại thời gian thực, tập trung vào privacy và cơ chế cảnh báo gian lận.
Giải Nhì Chung Cuộc
- StickTator: Thiết bị USB ứng dụng xử lý ngôn ngữ tự nhiên (NLP) để quản lý máy tính bằng giọng nói, đơn giản hóa cấu hình hệ thống.
Giải Ba Chung Cuộc
- Omnivim: Phần mềm tích hợp chuyển động Vim trên mọi ứng dụng để tăng hiệu suất làm việc.
Best Solo Hack Prize Winners
Best Orkes Hack Prize Winners
- Recipeit: Dự án tập trung vào công thức nấu ăn (chi tiết chưa công bố).
Best ICP Hack Prize Winners
- DigiTag: Ứng dụng blockchain bảo mật giao dịch hàng xa xỉ bằng NFTs và Internet Computer Protocol (ICP) để ngăn gian lận.
- LandLocks: Nền tảng quản lý hồ sơ đất đai dưới dạng NFTs trên blockchain.
SPUR Innovation Fund: Best Use of AI, Web3, or Quantum Technology Prize Winners
Giải Nhất
- Beaver Breach: Công cụ phân tích tác động thuế quan Mỹ, đề xuất nhà cung cấp Canada giảm chi phí.Giải Nhì
- Canify - Blockchain Rewards: Khuyến khích ủng hộ sản phẩm Canada bằng phần thưởng blockchain và ưu đãi chính phủ.Autonomous Agent Bounty Track Prize Winners
Giải Nhất
- ChainMail: Ứng dụng email dựa trên web3, tăng cường bảo mật và giao tiếp xuyên blockchain.Giải Nhì
- Canify - Blockchain RewardsGiải Ba
- Roast My Wallet: Web app tạo nội dung hài hước AI-driven dựa trên ví crypto và tính cách người dùng.
- Zap: Ứng dụng crypto trong đời sống hàng ngày với giao dịch miễn phí.
- Carbon Chain: Nền tảng blockchain chuyển đổi giảm phát thải carbon thành tài sản giao dịch, xác thực bằng AI.Best Developer Tool Prize Winners
Best High School Hack Prize Winners
- NaloxNow: Ứng dụng di động chống khủng hoảng opioid, cung cấp naloxone thời gian thực và phản hồi overdose bằng AI.
Most Useless Hack Prize Winners
- UselessGPT: Ứng dụng tương tác sử dụng Gemini API của Google để tạo nội dung giải trí vô nghĩa.
Best AI App Prize Winners
- frij.io: Ứng dụng thông minh quản lý hàng tồn kho gia đình bằng AI, tối ưu hóa danh sách mua sắm.
Build With AI: Google Track Prize Winners
- Best Use of Gemini AI/Gemini API, Best Use of Google Cloud Platform, Best Integration of Google Toolkit:
- Sinker: Nền tảng an ninh mạng AI-driven đào tạo nhân viên nhận diện mối đe dọa phishing.
- FrostByte: Dự án chưa công bố chi tiết.
- Flock Street: Ứng dụng tương tác cung cấp thông tin thị trường chứng khoán bằng dữ liệu thời gian thực và công nghệ giọng nói.
Best Laurier STEM Publishing Society Prize Winners
- SockSensei: Ứng dụng di động đề xuất tất dựa trên tâm trạng người dùng.
Xem danh sách dự án đầy đủ tại đây.
Về Nhà tổ chức
Hack Canada
Hack Canada được biết đến qua các hackathon và workshop quốc gia nhằm nâng cao kiến thức về digital security. Thông qua các sự kiện năng động, tổ chức đã truyền cảm hứng cho nhiều dự án đóng góp vào hệ sinh thái công nghệ.
-
@ 51cb7603:a2bbe90b
2025-04-17 03:07:18O SN88 é uma plataforma digital que tem se destacado no Brasil, oferecendo uma ampla gama de opções de entretenimento online. Com uma interface moderna e recursos inovadores, a plataforma atrai usuários em busca de experiências digitais envolventes e seguras.
Desde sua chegada ao mercado brasileiro, o SN88 tem investido em tecnologia de ponta para garantir uma navegação fluida e uma experiência personalizada para cada usuário. A plataforma oferece uma variedade de jogos e atividades interativas, atendendo a diferentes preferências e estilos de vida.
Um dos diferenciais do sn88 é o seu compromisso com a segurança e a transparência. A plataforma adota medidas rigorosas para proteger os dados dos usuários e garantir a integridade das transações realizadas. Além disso, oferece suporte ao cliente eficiente, disponível para resolver dúvidas e fornecer assistência sempre que necessário.
Com o crescimento do mercado digital no Brasil, plataformas como o SN88 desempenham um papel importante na transformação do entretenimento online. Elas não apenas oferecem diversão, mas também contribuem para a economia digital do país, gerando empregos e estimulando a inovação.
Em um cenário onde a regulamentação do setor digital está em constante evolução, o SN88 se destaca por sua conformidade com as leis brasileiras e seu compromisso com práticas responsáveis. A plataforma busca proporcionar uma experiência segura e agradável para seus usuários, alinhando-se às melhores práticas do mercado global.
Para os entusiastas do entretenimento digital, o SN88 representa uma opção confiável e inovadora. Com sua oferta diversificada e foco na experiência do usuário, a plataforma continua a conquistar a confiança e a preferência dos brasileiros.
Em resumo, o SN88 é mais do que uma simples plataforma de entretenimento online; é um reflexo da evolução digital no Brasil, oferecendo aos usuários uma experiência rica, segura e adaptada às suas necessidades e expectativas.
-
@ 51cb7603:a2bbe90b
2025-04-17 03:05:16Nos últimos anos, o cenário do entretenimento digital no Brasil tem se transformado rapidamente, impulsionado pela inovação tecnológica e pela popularização de plataformas online. Entre os novos nomes que vêm ganhando espaço nesse mercado está a AA123, uma opção que vem despertando o interesse de milhares de brasileiros em busca de diversão, praticidade e possibilidades de ganhos financeiros.
AA123 se apresenta como uma plataforma interativa voltada para quem deseja se entreter com jogos online em tempo real. Sua proposta vai além da simples diversão, oferecendo também uma experiência dinâmica e acessível, tanto para iniciantes quanto para usuários mais experientes. Com uma interface intuitiva, suporte multilíngue e diversas opções de jogos, a plataforma busca atrair um público diversificado, com destaque para os brasileiros.
Um dos principais diferenciais da aa123 é a agilidade no processo de cadastro e a facilidade de uso. Em poucos minutos, o usuário pode criar uma conta, acessar os jogos disponíveis e começar a explorar as funcionalidades do site. Além disso, a plataforma garante segurança de dados e transações, um aspecto essencial para quem deseja utilizar serviços online com tranquilidade.
Outro ponto que vem chamando atenção é o sistema de recompensas e bônus oferecido aos usuários. A cada participação ou desafio completado, é possível acumular pontos ou créditos, que podem ser utilizados dentro da própria plataforma. Essa estratégia tem se mostrado eficaz para fidelizar os jogadores e incentivar o uso contínuo, criando uma comunidade engajada e ativa.
AA123 também se destaca por investir em atendimento ao cliente. Com suporte via chat ao vivo e canais de comunicação rápida, os usuários têm à disposição uma equipe preparada para resolver dúvidas e oferecer assistência em tempo real. Essa proximidade com o público tem contribuído para a construção de uma reputação positiva nas redes sociais e fóruns especializados.
O crescimento da AA123 no Brasil acompanha uma tendência global: a migração do entretenimento tradicional para o ambiente digital. Com a expansão da internet de alta velocidade e o aumento do uso de smartphones, os brasileiros estão cada vez mais conectados, buscando novas formas de lazer no ambiente online. Nesse contexto, plataformas como a AA123 surgem como resposta direta às demandas de um público moderno e exigente.
Embora ainda recente no mercado, a AA123 tem mostrado que veio para ficar. Com um modelo de negócios bem estruturado, foco na experiência do usuário e compromisso com a inovação, a plataforma caminha para se consolidar como uma das principais referências em entretenimento digital no país.
Para quem busca uma alternativa dinâmica, segura e moderna para se divertir online, a AA123 representa uma escolha promissora. E, com o avanço constante da tecnologia, é provável que novas funcionalidades e melhorias continuem sendo implementadas, ampliando ainda mais sua presença no mercado nacional.
-
@ 51cb7603:a2bbe90b
2025-04-17 03:04:21O 007Game tem ganhado popularidade entre os jogadores que buscam uma experiência envolvente e cheia de adrenalina. Inspirado no universo do famoso agente secreto James Bond, o jogo oferece uma dinâmica de apostas emocionantes, que atrai tanto novatos quanto veteranos do mundo dos jogos.
O 007Game não é apenas sobre sorte, mas também exige estratégia e tomada de decisões rápidas. Com um formato simples, mas desafiador, ele tem conquistado o público com a possibilidade de interagir de forma intuitiva e divertida, sem a necessidade de uma curva de aprendizado complexa.
Como Funciona o 007Game? No 007game , os jogadores têm a oportunidade de testar suas habilidades de previsão e conhecimento, fazendo apostas em diferentes tipos de resultados. A interface é fluida e fácil de navegar, com gráficos modernos que proporcionam uma experiência visual envolvente. Cada rodada do jogo apresenta uma nova oportunidade de testar suas estratégias e aumentar as chances de ganhar, dependendo das escolhas feitas pelo jogador.
A mecânica do jogo gira em torno de eventos de alto risco e recompensa. Em alguns casos, os jogadores podem escolher entre várias opções e tentar prever o resultado de eventos específicos, enquanto em outros, o jogo pode apresentar desafios baseados em sorte e habilidades rápidas. A vitória depende tanto da sorte quanto da capacidade de antecipar o que vem a seguir.
Características que Tornam o Jogo Único Além da jogabilidade descomplicada, o 007Game se destaca pela sua imersão no universo da espionagem. A atmosfera do jogo é inspirada nos filmes clássicos de James Bond, com elementos de ação e mistério. Os jogadores podem se sentir como se estivessem participando de missões secretas, sempre com a possibilidade de ganhar recompensas substanciais. O design de som, incluindo músicas que remetem ao clássico tema de Bond, contribui para a criação de um ambiente tenso e cheio de emoção.
O jogo também oferece diversas opções de personalização, permitindo que os jogadores ajustem suas preferências para otimizar a experiência conforme suas estratégias e estilos de jogo. A escolha de diferentes tipos de apostas e a possibilidade de participar de torneios exclusivos são apenas algumas das maneiras pelas quais o 007Game mantém o interesse de seus jogadores.
A Popularidade do 007Game Com a crescente popularidade dos jogos digitais de apostas, o 007Game se destacou como uma opção divertida e emocionante para quem busca uma forma acessível de entrar no mundo dos jogos eletrônicos. A facilidade de acesso, combinada com a jogabilidade dinâmica e recompensadora, torna o jogo atrativo para pessoas de todas as idades e níveis de experiência.
Além disso, a comunidade de jogadores do 007Game é ativa, com fóruns e grupos de discussão onde os jogadores compartilham dicas e estratégias para melhorar suas habilidades no jogo. Isso cria um ambiente competitivo, mas também acolhedor, onde todos têm a oportunidade de aprender e se divertir.
Conclusão Em resumo, o 007Game é uma excelente opção para aqueles que procuram uma experiência envolvente e dinâmica no mundo dos jogos. Com uma combinação de sorte, habilidade e estratégia, ele tem conquistado os corações dos jogadores ao redor do mundo. Se você ainda não experimentou, talvez seja hora de embarcar nessa aventura de espionagem e emoção!
-
@ 51cb7603:a2bbe90b
2025-04-17 03:02:36No mundo em constante evolução do entretenimento online, o 9Bet99 se destaca como uma plataforma notável que atende aos entusiastas que buscam uma variedade de experiências interativas. Com um design centrado no usuário e uma ampla gama de recursos envolventes, o 9Bet99 tem como objetivo oferecer uma solução completa de entretenimento para seus usuários.
Interface Amigável e Acessibilidade
Um dos principais destaques do 9Bet99 é sua interface intuitiva, projetada para proporcionar uma navegação fluida. Explorar a plataforma é simples, permitindo que os usuários acessem facilmente as diferentes seções e funcionalidades. O layout limpo do site garante que tanto novatos quanto usuários experientes possam utilizá-lo sem dificuldades.
Além disso, o 9bet99 entende a importância da acessibilidade. A plataforma é otimizada para dispositivos móveis, permitindo que os usuários aproveitem suas atividades favoritas de qualquer lugar. Seja em um smartphone ou tablet, a versão mobile mantém todas as funcionalidades e a facilidade de uso do site original.
Diversas Opções de Entretenimento
O 9Bet99 oferece uma variedade de opções de entretenimento para atender a diferentes interesses. De jogos interativos a eventos ao vivo, a plataforma garante conteúdo envolvente em todos os momentos. A diversidade de escolhas permite que os usuários explorem novas atividades e aproveitem ao máximo sua experiência no site.
Compromisso com a Segurança e Justiça
Garantir um ambiente seguro é uma das maiores prioridades do 9Bet99. A plataforma utiliza tecnologias de segurança avançadas para proteger os dados e as transações dos usuários, oferecendo tranquilidade total. Além disso, o 9Bet99 é comprometido com a justiça, implementando sistemas que promovem transparência e integridade em todas as suas atividades.
Suporte ao Cliente e Atendimento
Sabendo da importância de um suporte eficaz, o 9Bet99 disponibiliza diversos canais de atendimento para ajudar seus usuários. Seja por chat ao vivo, e-mail ou outros meios, a ajuda está sempre à disposição. A equipe de suporte é treinada para responder de forma rápida e eficiente, tornando a experiência do usuário ainda mais positiva.
Promoções e Benefícios
Para tornar a experiência ainda mais atrativa, o 9Bet99 oferece diversas promoções e incentivos. Essas recompensas são criadas para valorizar os usuários e incentivar o engajamento contínuo na plataforma. Ao participar das promoções, os usuários aproveitam vantagens extras que tornam sua jornada no 9Bet99 ainda mais divertida.
Conclusão
Em resumo, o 9Bet99 se destaca como uma plataforma dinâmica que prioriza a experiência do usuário, a segurança e uma grande variedade de opções de entretenimento. Com seu compromisso em oferecer um ambiente confiável e envolvente, o 9Bet99 continua atraindo uma comunidade crescente de usuários em busca de diversão de qualidade. Seja você iniciante ou experiente, o 9Bet99 oferece uma experiência completa e agradável para todos.
-
@ 502ab02a:a2860397
2025-04-17 02:15:32วันนี้มาเล่าเรื่อง animal base บ้างครับ เพราะหลายๆคนบอกว่า ดีนะฉันกินสัตว์ ฉันคิดว่าไขมันสัตว์ดีที่สุด รวมถึง plant base ที่ตัดสินฉาบฉวยว่าผม anti plant วันนี้มาเล่าข้อมูลเรื่องต่อไปกันครับ เพื่อให้เห็นว่า โลกของผู้ล่า มันไม่เลือกฝั่งครับ คำถามคือ เหยื่อจะเตรียมตัวอย่างไรมากกว่า เพราะเหยื่อยังทะเลาะกันเองอยู่เลย 55555
sub item ของ fiat food มีอย่างนึงที่เรียกว่า fake food ครับ ถ้าถามว่า “โปรตีนจากเซลล์” หรือ lab-grown meat ที่โฆษณาว่าเป็นทางเลือกแห่งอนาคตนั้น ภาพที่คนทั่วไปนึกถึงคืออะไร? คำตอบน่าจะไม่พ้น -เนื้อที่ไม่ต้องฆ่าสัตว์ -โปรตีนสะอาด ไร้มลพิษ -เทคโนโลยีแห่งอนาคตเพื่อสิ่งแวดล้อม
เชื่อไหมว่าความจริงนั้นมันอาจจะตรงกันข้ามกับทุกข้อที่ตอบมาเลยครับ
มันมาจากไหน?
"เนื้อเทียมจากห้องแล็บ" คือการเอาเซลล์สัตว์มาเพาะเลี้ยงในจานเพาะเลี้ยง โดยให้อาหารกับเซลล์พวกนั้นด้วยน้ำเลี้ยง (growth medium) เพื่อให้มันแบ่งตัวกลายเป็นกล้ามเนื้อ ฟังดูเหมือนปลอดภัยใช่ไหม? แต่ที่หลายคนไม่รู้คือ…
น้ำเลี้ยงที่ใช้ส่วนใหญ่มาจาก Fetal Bovine Serum (FBS) หรือ ซีรั่มจากลูกวัวที่ถูกฆ่าขณะอยู่ในครรภ์แม่ มันคือ คือการเจาะหัวใจลูกวัวที่ยังไม่เกิด เพื่อเอาเลือดมาเลี้ยงเนื้อเทียม แน่นอนว่าการให้ข้อมูลนั้นเขาจะบอกว่า เก็บเกี่ยวเลือดจากตัวอ่อนของวัวหลังจากที่นำตัวอ่อนออกจากวัวที่ถูกเชือด ตัวอ่อนจะตายจากการขาดออกซิเจนโดยอยู่ในสภาพแวดล้อมที่ปลอดภัยของมดลูกเป็นเวลาอย่างน้อย 15-20 นาทีหลังจากวัวตายและแน่นอนว่าต้องให้ข้อมูลว่ามีการเก็บมาภายใต้การดูแลจริยธรรม
และถ้าจะไม่ใช้ FBS ก็ต้องใช้น้ำเลี้ยงสังเคราะห์ที่อัดแน่นด้วย growth factor สังเคราะห์, ยาปฏิชีวนะ, ฮอร์โมน และสารกระตุ้นการเจริญเติบโตแบบเข้มข้น มันคือ Frankenstein Protein เลยก็ว่าได้
ราคาที่แท้จริงไม่ใช่แค่เงิน แต่คืออำนาจต่างหากครับ
เบื้องหลังของ lab-grown meat คือบริษัททุนใหญ่ เช่น Eat Just (เจ้าของ Good Meat) Upside Foods Believer Meats CUBIQ Foods และเบื้องหลังอีกชั้นคือ VC ยักษ์ เช่น SoftBank, Temasek, Bill Gates, Tyson Foods ฯลฯ เริ่มเห็นภาพแล้วใช่ไหมครับ
ทุกเจ้ากำลังเร่งวิจัยเพื่อ “จดสิทธิบัตร” กระบวนการผลิต และพันธุกรรมของเซลล์สัตว์ ใช่จ้ะ… พันธุกรรมของวัว หมู ไก่ หรือแม้แต่ปลา ถูกดัดแปลงพันธุกรรมเพื่อให้เพาะง่าย โตไว อยู่ได้นาน และตอบโจทย์การผลิตในเชิงอุตสาหกรรม
ใครจะเลี้ยงวัวเองแล้วทำเนื้อกินเอง อาจโดนฟ้องในอนาคตว่าไปละเมิดพันธุ์สิทธิบัตรที่บริษัทครอบครอง
ต่อไปนี้ถ้าอยากขายเนื้อ ต้องเป็นเจ้าของห้องแล็บถึงแม้บริษัทเหหล่านี้จะบอกว่า “เราจะ democratize protein” คือทำให้ใครๆ ก็เข้าถึงโปรตีนได้ แต่ความจริงคือ ทุกกระบวนการตั้งแต่เซลล์ต้นแบบ อาหารเลี้ยงเซลล์ ยันเครื่องมือในแล็บ ล้วนมีสิทธิบัตร ใครที่ไม่มี license ก็ผลิตไม่ได้ พูดง่ายๆ ก็คือ…
“ของกินที่โตจากเซลล์ในอนาคตจะต้องมีใบอนุญาตจากบริษัท” ไม่มีแผ่นดินไหน ปลูกเอง กินเอง ได้อีกต่อไป
แล้วมันดีต่อสิ่งแวดล้อมจริงไหม? บริษัทแสนดีต่างๆชอบบอกว่าเนื้อแล็บช่วยลดการปล่อยคาร์บอนจากฟาร์มปศุสัตว์ แต่งานวิจัยของ Oxford, UC Davis และมหาวิทยาลัย Wageningen ชี้ว่า การผลิตเนื้อในห้องแล็บใช้พลังงานสูงกว่าปศุสัตว์จริง หลายเท่า และถ้าไม่ใช้พลังงานหมุนเวียน ก็จะปล่อยคาร์บอนมากกว่าการเลี้ยงวัวแบบดั้งเดิมเสียอีก
ตกลงมันคือ Clean Meat หรือ Clean Lie? Clean Meat ที่เขาโฆษณา อาจจะสะอาดแค่ “ภาพ” แต่องค์ประกอบข้างในคือ… -เซลล์สัตว์ที่ดัดแปลงยีนให้โตเร็ว -น้ำเลี้ยงเซลล์ที่มีสารกระตุ้นการเติบโต, ฮอร์โมน, ยาปฏิชีวนะ -ความไม่โปร่งใสเรื่องกระบวนการผลิต -ไม่มีฉลากบอกผู้บริโภคชัดเจน -ยังไม่มีการทดลองระยะยาวว่า “ปลอดภัยหรือไม่”
พรุ่งนี้ที่ไม่มีเกษตรกรจะเป็นยังไง ถ้าโปรตีนทั้งหมดผลิตในแล็บ แล้วเกษตรกรล่ะ? คนเลี้ยงสัตว์ล่ะ? คนเลี้ยงเป็ดไก่หลังบ้านล่ะ? คนปลูกผัก เลี้ยงวัว ทำฟาร์มแบบพื้นถิ่นล่ะ? ทุกคนจะตกขบวนอาหารของโลกใหม่ เพราะเกมนี้ไม่ได้วัดกันที่คุณภาพ แต่วัดกันที่ “ลิขสิทธิ์”
เรากำลังกินอนาคตที่เราไม่ได้เลือก ในชื่อของ “เทคโนโลยี” ในคราบของ “ทางเลือก” ในความนิยมของ "super food" แต่แท้จริงแล้ว เราอาจกำลังแลก สิทธิการควบคุมอาหาร ไปกับ “คำสัญญาว่าโลกจะดีขึ้น” ไม่ต่างอะไรจากการเอาอาหารไปวางไว้ในห้องแล็บ และล็อกประตูเอาไว้ให้คนไม่กี่คนถือกุญแจ
not your key, not your free เหมือนเพลงที่ผมเขียนไว้ในอัลบั้ม orange cafe ครับ https://youtu.be/k5jUpFXI6Gg?si=4GXOXjYbOpqX9kRb
#pirateketo #กูต้องรู้มั๊ย #ม้วนหางสิลูก
-
@ c066aac5:6a41a034
2025-04-17 00:05:49I am all about fleshing out a fantasy, even if the chances of it coming to reality are fairly slim. Dreams should be written down, meditated on, processed over long periods of time. I don't think of it as manifesting (nor do I condone manifestation); one could argue such practices are Biblical (Habakkuk 2:2).
So I'm going to write this out and make it plain, on the off chance that putting it out there brings somethings to fruition:
Jack Dorsey should take over Mozilla.
Either via an invitation from Mozilla, or via a hostile takeover. I don't really care how it happens, but I believe it should happen and I'll outline why.
The Fallen Hero
Mozilla has been having a bad time. I'm not sure that the organization has done much good since the unceremonious departure of Brenden Eich (there's Rust, but is that really a good thing?).
Firefox is losing its relevance. The FireFox Terms of Service update has sparked outrage, the removal of the promise to never sell your data was a Judas level of betrayal, FireFox currently (at the time this article was penned) makes up less than 3% of the total browser marketshare, their main source of income from Google is in jeopardy, most websites are only optimized for Chromium-based browsers, and the Gecko engine is not very secure.
Mozilla's best product is dying, and what is the organization doing about it? They're working on a plethora of issues their core user base does not care about. They've jumped on the AI hype train, they've bought an advertising company (which is very irrelevant to their user base, especially considering uBlock Orgin exists), they're selling white labeled VPNs (Mullvad), they're selling data removal services (which is powered by a former data broker), they're pushing shopping products, they're forcing features on their users which were never asked for (POCKET!!), it seems that Mozilla is completely out of touch with the people they claim to serve. They've abandoned their first love.
Thunderbird is showing some promise with the recent announcement of Thundermail, but that project will sadly suffer from guilt by association.
We have to remember though: Mozilla used to mean something in the FOSS/Open Source world.
They were the shining city on the hill of the internet. They rose up from the ashes of Netscape. FireFox kicked Internet Explorer's butt; it was a punk rock movement. Thunderbird is still an amazing email client. Rust (despite the arguing programmers) is a significant innovation in the programming language space.
I'm not rooting for the downfall of Mozilla. Sure, in a way I'd be happy about it: I'd like to see poor leadership get what it deserves, but I fear Mozilla as a symbol of FOSS/OS would send a sad signal across the ecosystem. I'm a capitalist at heart so I don't favor bailouts (nor am I calling for one); I truly believe this organization could be turned around with the right leadership. Maybe it could be as simple as going back to their original model of serving the deep pockets of the corporate world with open source tech rather than going for the wallets of the consumer.
Every problem is a leadership problem. Fix the leadership, fix the problems.
The Last Great Open Source Hero?
Sadly FOSS figures tend to die of public crucifixion. As time goes on, we have less and less great figures to point to. Thankfully, Jack hasn't been canceled yet.
Jack Dorsey has a pretty good résumé in the open source world. He jumped right in with Bitcoin. He left BlueSky for NOSTR. He would've made Twitter a protocol if he didn't need to feed himself early in his career. He is currently financing several projects in the Bitcoin and NOSTR world, which is arguably the best open source technology in the world right now.
I do believe that people should stay in their lane of expertise, and maybe Jack should. However, my message to Jack would be that it would be a shame if his passion for open source remained solely in Bitcoin and NOSTR. If his leadership was injected into the Mozilla machine, it could be steered into a magical direction.
Imagine FireFox being the first browser with layer 2 wallet integration (stick it to Brave and their BAT crap [we still love you Brenden Eich flaws and all]). Imagine having a whole world of existing talented developers suddenly interested in contributing their talents to the NOSTR community. Imagine having a browser with an engine that can actually go toe-to-toe with Chromium. Imagine an organization that once again gives FOSS a good name rather than actively eroding public confidence in FOSS.
The True FOSS Heroes
Jack is probably not going to touch Mozilla with a 150 foot pole (or see this article). We all probably need to let the Mozilla dream die in front of us.
Things aren't always black and white. I don't think of Mozilla as an evil organization; just an organization subject to the flaws of fellow humans like you and me. Even the Eye of Sauron, Google, has been a huge blessing to the open source world (Go programming language, Android, all of their open source sponsorships, many more things I could mention).
The beautiful thing about FOSS/OS is that it is a movement of the people. Titans will rise up and fall, but you and I make up the backbone of FOSS. I've had nothing but good interactions with FOSS fanatics. NOSTR's own OceanSlim taught me about Ungoogled Chromium, the Go programming language, and NOSTR relays. When I wanted to get into Linux, I was able to plug in immediately with a group of Linux users here in Nashville. NOSTR devs for the most part are happy to answer my inquiries when I slide into their DMs. I've been in group chats with people openly discussing the best way to make a great lightning wallet.
There's a lot of connection in the Open Source world that I cherish; it's very different from the corporate world most of us are immersed in. The corporate world has gatekeepers; Open Source has collaborators. The corporate world operates in the shadows to maximize profits; Open Source steps into the light for everyone's benefit. The corporate world says you'll never have enough experience/qualifications; Open Source encourages and equips you.
My point is, don't worship any organization. Be thankful for the people around you, try out FOSS programs whenever you can, and have fun with it.
All that said, I wouldn't mind if Jack took over Mozilla. Or if one of his friends took a position (ODELL?). Heck, throw Snowden in while we're at it.
Footnote: "Open Source" and "FOSS/Free and Open Source Software" are used interchangably in this article. Mistakes were made I'm sure, but I hope I got the point across.
-
@ 35da2266:15e70970
2025-04-16 22:45:504EimyzmhhmH4plLDC0nv/KQniv8JrJY/2A8svVqsZ8efXrRGCEsrCJwSzvJOrK6sLkfiVcvJ8r3yXW8QDYceQSDjgTDtoxoL+0U1v66lfEvc/OASt/dICMTrrUe5LXFitve6fmhhnJfUie9Smmgd0kpd5q/pzTBeKUwhdV69t6Q3zs7ACAXncojtHjCqORHDcvJq14pwocpqQjqNu0LGoXT81L4RvIBcN/a+QGwHsQMPTnwje0ryCPpp4BsMZx5XIkvagVRWGwI7oA4361lGer0c1Rx0cxphETaGL3oNlEQGGgO0A++VqiVRp5LpHW0JYVRHpGQn++KV2zIhCk9UcwlgxEx2SYg8fXh0G0l2fUo=?iv=wqlunJB3xhRRILfuEfDe9A==
-
@ 35da2266:15e70970
2025-04-16 22:45:328l6NZPYyF14c70PicCbGKhxjGeH+cPjGfK8uqgA996qfftvhkAwKoHV455aRuoxaDxQcT5au92oiEvfskfSbIPHl5uqu4oOmbkdJMMnllQYX/zUpcBDjpzPl2Z/61jLaPS5r0hpOnpw/mefqNoT/sooJCmjdvU6JLuJtGfma8ToWOfWW0rRM4tXbUv0zBBodBSHhvvysO9NMYeIhCUB+SHcH4a6rVlsjuzHY7kq7rGpVRN/bV+FK3EiYHegS8VtxNWeecrQh69a7j02a+xklCGB+xet2Dxq0r+7lfEo17UqEsNombY0qzm5R0QX12aXkWxpHPVG+/WzlCb+REmqtwDwo0S2EJQeXH/JItvmyZ55nPUmzMSvizOV57gs+wNS4MVuWk3vXMkLKSfeUhlXmgBU8QFbwOV3LeLSPsGBVzzzeNtu1yYHRM5lR8NvYt114yu7yp2EaOMDNgvIockN5DrL15TwRs1TmsZhoGmqm9McUiQyHBvZBIF2Pu26HEaeJ/C20rcQIoIatB1gLiR9VYarMNynPOke2AQZAsf3n1Eo=?iv=SBph/Z93dPwAx0qGijw19w==
-
@ 35da2266:15e70970
2025-04-16 22:45:230OL0tgqSzPwaavoDhxp1amC5WvCUg9bSQXW55yz6b7BZ5emFJ/GLZZNHIhnVckoG16fdeLmw3o9K6GEEj6x1ArXGYLfDQHWCkvGmJlWrokxf8EL6gPhtpbkUEo5RZ6ndwwTznR5H9YQFiFe/rhvI97+Rb7JoFSF+nrWZCetIkusu8xxQox3U238BuNUlVreqsBFxpVc5jO1XVX0M5PJl0kKkM8RI5qM1ybaOwJ8cAraP1304Vt1efX+iYnPO7K95+JcYRN4tavEdtqy1SpNsraMAo34JGUTziQEdrGqzjM6rKG3/xqjoHoXFZ33+kwVFDo8vTiIhl+pIkAeLQrFA7RIkHZlowZZn6CO37R8Z7TLKfQZgSRNeC4EOJ4Lv4ULR7FBvFi7lRMfqZMF33x5fUltHK3+0/kFpBwMT1DvSbLVhfU5t5yALPfHWurNJFVw9zZ8dXUUv7d9YtmY06ZbeAX6+THpnG4a9vpIQ9w5LWbnQmkTtBxUrPpfeC/Fvx7NYjQapYwKqkQF8OfTSre0FRzIa5b4SrBLO1gpEDXHHnfaYV6eq6MVEtqUoZnFwWSq42ABwF/wKIzE+ofdNkISCSAb93woa9DcyU+WAwAJBiQYxGUGEB0hYnh7oDwoY3roeYOHk+ruAIRYAKu3mUzg4SlT8BUedKPZglU4B8cFtb9Te3PSXZD1nXxmluFlPxuhV/o44+8QZ4g08urSAV2PFsQ==?iv=4u1hEphYhLWkGEvq+Jp1/A==
-
@ fd06f542:8d6d54cd
2025-04-16 09:36:18NIP-17
Private Direct Messages
draft
optional
This NIP defines an encrypted direct messaging scheme using NIP-44 encryption and NIP-59 seals and gift wraps.
Direct Message Kind
Kind
14
is a chat message.p
tags identify one or more receivers of the message.jsonc { "id": "<usual hash>", "pubkey": "<sender-pubkey>", "created_at": "<current-time>", "kind": 14, "tags": [ ["p", "<receiver-1-pubkey>", "<relay-url>"], ["p", "<receiver-2-pubkey>", "<relay-url>"], ["e", "<kind-14-id>", "<relay-url>"] // if this is a reply ["subject", "<conversation-title>"], // rest of tags... ], "content": "<message-in-plain-text>", }
.content
MUST be plain text. Fieldsid
andcreated_at
are required.An
e
tag denotes the direct parent message this post is replying to.q
tags MAY be used when citing events in the.content
with NIP-21.json ["q", "<event-id> or <event-address>", "<relay-url>", "<pubkey-if-a-regular-event>"]
Kind
14
s MUST never be signed. If it is signed, the message might leak to relays and become fully public.File Message Kind
jsonc { "id": "<usual hash>", "pubkey": "<sender-pubkey>", "created_at": "<current-time>", "kind": 15, "tags": [ ["p", "<receiver-1-pubkey>", "<relay-url>"], ["p", "<receiver-2-pubkey>", "<relay-url>"], ["e", "<kind-14-id>", "<relay-url>", "reply"], // if this is a reply ["subject", "<conversation-title>"], ["file-type", "<file-mime-type>"], ["encryption-algorithm", "<encryption-algorithm>"], ["decryption-key", "<decryption-key>"], ["decryption-nonce", "<decryption-nonce>"], ["x", "<the SHA-256 hexencoded string of the file>"], // rest of tags... ], "content": "<file-url>" }
Kind 15 is used for sending encrypted file event messages:
file-type
: Specifies the MIME type of the attached file (e.g.,image/jpeg
,audio/mpeg
, etc.).encryption-algorithm
: Indicates the encryption algorithm used for encrypting the file. Supported algorithms may includeaes-gcm
,chacha20-poly1305
,aes-cbc
etc.decryption-key
: The decryption key that will be used by the recipient to decrypt the file.decryption-nonce
: The decryption nonce that will be used by the recipient to decrypt the file.content
: The URL of the file (<file-url>
).x
containing the SHA-256 hexencoded string of the file.size
(optional) size of file in bytesdim
(optional) size of the file in pixels in the form<width>x<height>
blurhash
(optional) the blurhash to show while the client is loading the filethumb
(optional) URL of thumbnail with same aspect ratio (encrypted with the same key, nonce)fallback
(optional) zero or more fallback file sources in caseurl
fails
Just like kind 14, kind
15
s MUST never be signed.Chat Rooms
The set of
pubkey
+p
tags defines a chat room. If a newp
tag is added or a current one is removed, a new room is created with a clean message history.Clients SHOULD render messages of the same room in a continuous thread.
An optional
subject
tag defines the current name/topic of the conversation. Any member can change the topic by simply submitting a newsubject
to an existingpubkey
+p
-tags room. There is no need to sendsubject
in every message. The newestsubject
in the thread is the subject of the conversation.Encrypting
Following NIP-59, the unsigned
kind:14
&kind:15
chat messages must be sealed (kind:13
) and then gift-wrapped (kind:1059
) to each receiver and the sender individually.jsonc { "id": "<usual hash>", "pubkey": randomPublicKey, "created_at": randomTimeUpTo2DaysInThePast(), "kind": 1059, // gift wrap "tags": [ ["p", receiverPublicKey, "<relay-url>"] // receiver ], "content": nip44Encrypt( { "id": "<usual hash>", "pubkey": senderPublicKey, "created_at": randomTimeUpTo2DaysInThePast(), "kind": 13, // seal "tags": [], // no tags "content": nip44Encrypt(unsignedKind14, senderPrivateKey, receiverPublicKey), "sig": "<signed by senderPrivateKey>" }, randomPrivateKey, receiverPublicKey ), "sig": "<signed by randomPrivateKey>" }
The encryption algorithm MUST use the latest version of NIP-44.
Clients MUST verify if pubkey of the
kind:13
is the same pubkey on thekind:14
, otherwise any sender can impersonate others by simply changing the pubkey onkind:14
.Clients SHOULD randomize
created_at
in up to two days in the past in both the seal and the gift wrap to make sure grouping bycreated_at
doesn't reveal any metadata.The gift wrap's
p
-tag can be the receiver's main pubkey or an alias key created to receive DMs without exposing the receiver's identity.Clients CAN offer disappearing messages by setting an
expiration
tag in the gift wrap of each receiver or by not generating a gift wrap to the sender's public keyPublishing
Kind
10050
indicates the user's preferred relays to receive DMs. The event MUST include a list ofrelay
tags with relay URIs.jsonc { "kind": 10050, "tags": [ ["relay", "wss://inbox.nostr.wine"], ["relay", "wss://myrelay.nostr1.com"], ], "content": "", // other fields... }
Clients SHOULD publish kind
14
events to the10050
-listed relays. If that is not found that indicates the user is not ready to receive messages under this NIP and clients shouldn't try.Relays
It's advisable that relays do not serve
kind:1059
to clients other than the ones tagged in them.It's advisable that users choose relays that conform to these practices.
Clients SHOULD guide users to keep
kind:10050
lists small (1-3 relays) and SHOULD spread it to as many relays as viable.Benefits & Limitations
This NIP offers the following privacy and security features:
- No Metadata Leak: Participant identities, each message's real date and time, event kinds, and other event tags are all hidden from the public. Senders and receivers cannot be linked with public information alone.
- No Public Group Identifiers: There is no public central queue, channel or otherwise converging identifier to correlate or count all messages in the same group.
- No Moderation: There are no group admins: no invitations or bans.
- No Shared Secrets: No secret must be known to all members that can leak or be mistakenly shared
- Fully Recoverable: Messages can be fully recoverable by any client with the user's private key
- Optional Forward Secrecy: Users and clients can opt-in for "disappearing messages".
- Uses Public Relays: Messages can flow through public relays without loss of privacy. Private relays can increase privacy further, but they are not required.
- Cold Storage: Users can unilaterally opt-in to sharing their messages with a separate key that is exclusive for DM backup and recovery.
The main limitation of this approach is having to send a separate encrypted event to each receiver. Group chats with more than 100 participants should find a more suitable messaging scheme.
Implementation
Clients implementing this NIP should by default only connect to the set of relays found in their
kind:10050
list. From that they should be able to load all messages both sent and received as well as get new live updates, making it for a very simple and lightweight implementation that should be fast.When sending a message to anyone, clients must then connect to the relays in the receiver's
kind:10050
and send the events there but can disconnect right after unless more messages are expected to be sent (e.g. the chat tab is still selected). Clients should also send a copy of their outgoing messages to their ownkind:10050
relay set.Examples
This example sends the message
Hola, que tal?
fromnsec1w8udu59ydjvedgs3yv5qccshcj8k05fh3l60k9x57asjrqdpa00qkmr89m
tonsec12ywtkplvyq5t6twdqwwygavp5lm4fhuang89c943nf2z92eez43szvn4dt
.The two final GiftWraps, one to the receiver and the other to the sender, respectively, are:
json { "id":"2886780f7349afc1344047524540ee716f7bdc1b64191699855662330bf235d8", "pubkey":"8f8a7ec43b77d25799281207e1a47f7a654755055788f7482653f9c9661c6d51", "created_at":1703128320, "kind":1059, "tags":[ [ "p", "918e2da906df4ccd12c8ac672d8335add131a4cf9d27ce42b3bb3625755f0788"] ], "content":"AsqzdlMsG304G8h08bE67dhAR1gFTzTckUUyuvndZ8LrGCvwI4pgC3d6hyAK0Wo9gtkLqSr2rT2RyHlE5wRqbCOlQ8WvJEKwqwIJwT5PO3l2RxvGCHDbd1b1o40ZgIVwwLCfOWJ86I5upXe8K5AgpxYTOM1BD+SbgI5jOMA8tgpRoitJedVSvBZsmwAxXM7o7sbOON4MXHzOqOZpALpS2zgBDXSAaYAsTdEM4qqFeik+zTk3+L6NYuftGidqVluicwSGS2viYWr5OiJ1zrj1ERhYSGLpQnPKrqDaDi7R1KrHGFGyLgkJveY/45y0rv9aVIw9IWF11u53cf2CP7akACel2WvZdl1htEwFu/v9cFXD06fNVZjfx3OssKM/uHPE9XvZttQboAvP5UoK6lv9o3d+0GM4/3zP+yO3C0NExz1ZgFmbGFz703YJzM+zpKCOXaZyzPjADXp8qBBeVc5lmJqiCL4solZpxA1865yPigPAZcc9acSUlg23J1dptFK4n3Tl5HfSHP+oZ/QS/SHWbVFCtq7ZMQSRxLgEitfglTNz9P1CnpMwmW/Y4Gm5zdkv0JrdUVrn2UO9ARdHlPsW5ARgDmzaxnJypkfoHXNfxGGXWRk0sKLbz/ipnaQP/eFJv/ibNuSfqL6E4BnN/tHJSHYEaTQ/PdrA2i9laG3vJti3kAl5Ih87ct0w/tzYfp4SRPhEF1zzue9G/16eJEMzwmhQ5Ec7jJVcVGa4RltqnuF8unUu3iSRTQ+/MNNUkK6Mk+YuaJJs6Fjw6tRHuWi57SdKKv7GGkr0zlBUU2Dyo1MwpAqzsCcCTeQSv+8qt4wLf4uhU9Br7F/L0ZY9bFgh6iLDCdB+4iABXyZwT7Ufn762195hrSHcU4Okt0Zns9EeiBOFxnmpXEslYkYBpXw70GmymQfJlFOfoEp93QKCMS2DAEVeI51dJV1e+6t3pCSsQN69Vg6jUCsm1TMxSs2VX4BRbq562+VffchvW2BB4gMjsvHVUSRl8i5/ZSDlfzSPXcSGALLHBRzy+gn0oXXJ/447VHYZJDL3Ig8+QW5oFMgnWYhuwI5QSLEyflUrfSz+Pdwn/5eyjybXKJftePBD9Q+8NQ8zulU5sqvsMeIx/bBUx0fmOXsS3vjqCXW5IjkmSUV7q54GewZqTQBlcx+90xh/LSUxXex7UwZwRnifvyCbZ+zwNTHNb12chYeNjMV7kAIr3cGQv8vlOMM8ajyaZ5KVy7HpSXQjz4PGT2/nXbL5jKt8Lx0erGXsSsazkdoYDG3U", "sig":"a3c6ce632b145c0869423c1afaff4a6d764a9b64dedaf15f170b944ead67227518a72e455567ca1c2a0d187832cecbde7ed478395ec4c95dd3e71749ed66c480" }
json { "id":"162b0611a1911cfcb30f8a5502792b346e535a45658b3a31ae5c178465509721", "pubkey":"626be2af274b29ea4816ad672ee452b7cf96bbb4836815a55699ae402183f512", "created_at":1702711587, "kind":1059, "tags":[ [ "p", "44900586091b284416a0c001f677f9c49f7639a55c3f1e2ec130a8e1a7998e1b"] ], "content":"AsTClTzr0gzXXji7uye5UB6LYrx3HDjWGdkNaBS6BAX9CpHa+Vvtt5oI2xJrmWLen+Fo2NBOFazvl285Gb3HSM82gVycrzx1HUAaQDUG6HI7XBEGqBhQMUNwNMiN2dnilBMFC3Yc8ehCJT/gkbiNKOpwd2rFibMFRMDKai2mq2lBtPJF18oszKOjA+XlOJV8JRbmcAanTbEK5nA/GnG3eGUiUzhiYBoHomj3vztYYxc0QYHOx0WxiHY8dsC6jPsXC7f6k4P+Hv5ZiyTfzvjkSJOckel1lZuE5SfeZ0nduqTlxREGeBJ8amOykgEIKdH2VZBZB+qtOMc7ez9dz4wffGwBDA7912NFS2dPBr6txHNxBUkDZKFbuD5wijvonZDvfWq43tZspO4NutSokZB99uEiRH8NAUdGTiNb25m9JcDhVfdmABqTg5fIwwTwlem5aXIy8b66lmqqz2LBzJtnJDu36bDwkILph3kmvaKPD8qJXmPQ4yGpxIbYSTCohgt2/I0TKJNmqNvSN+IVoUuC7ZOfUV9lOV8Ri0AMfSr2YsdZ9ofV5o82ClZWlWiSWZwy6ypa7CuT1PEGHzywB4CZ5ucpO60Z7hnBQxHLiAQIO/QhiBp1rmrdQZFN6PUEjFDloykoeHe345Yqy9Ke95HIKUCS9yJurD+nZjjgOxZjoFCsB1hQAwINTIS3FbYOibZnQwv8PXvcSOqVZxC9U0+WuagK7IwxzhGZY3vLRrX01oujiRrevB4xbW7Oxi/Agp7CQGlJXCgmRE8Rhm+Vj2s+wc/4VLNZRHDcwtfejogjrjdi8p6nfUyqoQRRPARzRGUnnCbh+LqhigT6gQf3sVilnydMRScEc0/YYNLWnaw9nbyBa7wFBAiGbJwO40k39wj+xT6HTSbSUgFZzopxroO3f/o4+ubx2+IL3fkev22mEN38+dFmYF3zE+hpE7jVxrJpC3EP9PLoFgFPKCuctMnjXmeHoiGs756N5r1Mm1ffZu4H19MSuALJlxQR7VXE/LzxRXDuaB2u9days/6muP6gbGX1ASxbJd/ou8+viHmSC/ioHzNjItVCPaJjDyc6bv+gs1NPCt0qZ69G+JmgHW/PsMMeL4n5bh74g0fJSHqiI9ewEmOG/8bedSREv2XXtKV39STxPweceIOh0k23s3N6+wvuSUAJE7u1LkDo14cobtZ/MCw/QhimYPd1u5HnEJvRhPxz0nVPz0QqL/YQeOkAYk7uzgeb2yPzJ6DBtnTnGDkglekhVzQBFRJdk740LEj6swkJ", "sig":"c94e74533b482aa8eeeb54ae72a5303e0b21f62909ca43c8ef06b0357412d6f8a92f96e1a205102753777fd25321a58fba3fb384eee114bd53ce6c06a1c22bab" }
-
@ 35da2266:15e70970
2025-04-16 22:26:550uKO4r+WwogO34up9lu1CuIfR6YzkiEoN2Anyiqc6+CKJaREAgvMBeQliTvz34Fm1PymGPb0QjN2kGs5zCY8BrHyFUCjGF5nHpC6mGjQzBbeL1PFQDUsF9QcgGptUstlAMsP8HaYdK8fxG5/5ML+p+yRUR/HuRf4H7Tpwd4QMba+IzKimy/3EstVPe+EQcWbbZSw/yQTsvDoZGPhAX7Hpffg4WfKukOw2KFStKvbbboXqEfcfxlddvpdKr0aU9xKZDvXDKMf/LWl+8ZEqD95lOAv/ymnrtyRgUzjxkHB/1oAIFNnve9yM0EESiYNCVz5NL9mS5W/q/i7SBXRiPb+cbcInuvkKtfcVawpMPqPaCo=?iv=L6Yvtf+8L4j0Puogh15kig==
-
@ 35da2266:15e70970
2025-04-16 22:26:42Hy+XUI0rm24WtP3hDswXD4CEvQuDbiMvch19MCvWi0zJmugeUS5O9CGusgJB09ZCmR+9NIhAGPvhOWUh+WnFCQEJL0Shep/1DR3Wkb20/lADUgUnW0JFiTKUYStTCOcH/a3SBBUhj9seo6C6VHwWgJImv7N9dpJLrmivwniDLOGO7wk2G+ZZ5Vf9Ws/RIx/b0OUDP4T5TD9sdZVe+b+q7+McFEXCD7nS841dro1BMdrPyCgV62zeTvdoJwJ2dPAVDKOlhpGjySr22VRO5meW71LaXhlTgmTbxq4R7sZufLqoCSZ2qbmyXJenxopf0ThD/srWu3PVgnTuPTL0L2rDYH+vwwmhP2NhU3JKpE1dzzrslj5v+jLUdaqZ6B1yTLdd9NMkWIkwuEaUyprw2THsvLlmY4VaZ01WT+IQ+O+SSE1g6ugr07M/KEPRxG2d/7F3ttOoDEtr90hj8WTiLulmCM5q+sOR6OSPnPn4tQKM4sHpF8grGQ5sub/TaJAILLa38+2UDat1U6ulKms3BeJIz1FT3jl6wjvmmz3N7Xil0gVCoUyOzRD2YG9RBBpwxPL40i1EZcTmX2x9K6UrEv7T8w==?iv=bl4ZGJ8keKfKYGTyv2OdDQ==
-
@ fd06f542:8d6d54cd
2025-04-16 09:35:45- 第三章、NIP-03: OpenTimestamps Attestations for Events
- 第四章、NIP-04: Encrypted Direct Message
- 第五章、NIP-05: Mapping Nostr keys to DNS-based internet identifiers
- 第六章、NIP-06: Basic key derivation from mnemonic seed phrase
- 第七章、NIP-07: window.nostr capability for web browsers
- 第八章、NIP-08: Handling Mentions --- unrecommended: deprecated in favor of NIP-27
- 第九章、NIP-09: Event Deletion Request
- 第十章、NIP-10: Text Notes and Threads
- 第十一章、NIP-11: Relay Information Document
- 第十二章、NIP-13: Proof of Work
- 第十三章、NIP-14: Subject tag in text events
- 第十四章、NIP-15: Nostr Marketplace (for resilient marketplaces)
- 第十五章、NIP-17: Private Direct Messages
-
@ 5188521b:008eb518
2025-04-16 09:09:48Why write a book about time?
My obsession with time actually started when I read An Occurrence at Owl Creek Bridge (written by Ambrose Bierce in 1890).
We can’t play around with time in the real world, but in fiction, anything goes. The story of Owl Creek Bridge follows a Confederate sympathiser condemned to death by hanging. In its three sections, time goes forward and back, speeds up and slows down, and at one point stops entirely. Every time I read it, I feel like I’m physically travelling in time.
I went a bit deeper into the topic back in 2020. Due to the lockdown, I had a lot of time on my hands to do some research. Like many of my stories, this one started with a question: I started to ask ‘what actually is time’?
What did you find out?
I found out that time is a rabbit hole! Nobody knows exactly what it is. We know that it’s conceptual, personal, and malleable, however accurate our watches are. Some philosophers and scientists (Jose Luis Borges and Carlo Rovelli) claim it doesn’t exist.
I guess what I discovered is that we all need time to survive. It’s how we process our experience here on Earth.
Who are the characters in this book?
The book tells the story of Luca Cangemi, an Italian philosophy professor giving a lecture on the subject of time. The chapters follow the possible lives of other characters in the lecture hall. Then, Cangemi makes an astounding discovery. It’s something that allows him to change the fabric of time for everyone (including the readers).
Why use 15 characters to present the story?
I like to challenge readers, so I made the story a bit of a puzzle. In fact, there is something called a 15 puzzle — it’s a block of 15 pictured tiles and one space. You have to slide them to arrange the correctly ordered image. There’s more about the puzzle in the book.
What about the Timechain? Is there any link there?
Not exactly. The book doesn’t mention it, but isn’t everything an analogy for bitcoin? Soon after finishing this book, I got orange pilled and began to read more and more about bitcoin, including Gigi’s fantastic essay Bitcoin is Time.
Time is all we have though. Even though it might be hard to understand, we have to try.
Who do you think would enjoy this book?
I’d say sci-fi fans. Those who aren’t afraid to be challenged. One cool thing about the bitcoin community is that they are dialled in to technical stuff and they are avid readers. Why not give fiction a try too? Sometimes we learn more from getting the answer ourselves through stories.
What are you working on next?
I have three other writing projects on the go, so there is no time to rest. Very soon, I’ll be publishing a children’s book about horrible uncles. I’m editing the next installment of 21 Futures too. Financial Fallout will be out in early 2025. And finally, I’m writing content and newsletters for bitcoin founders and companies. If I’m not trying to sell you a book, I’ll be doing my best to orange-pill you, ha ha.
Thanks for talking with us, Philip, and good look with all those writing projects.
Order the book in our store.
Here’s a passage from Fifteen Shades of Time.
The Direction of Everything
Luca Cangemi and everyone he knows will be long dead, but the moment will come. Theoretical physicists believe it will be anywhere from 2.8 to 22 billion years in the future. In that moment, everything reverses.
The Big Crunch is a cosmological event in our future and our past in which the density of matter grows sufficiently that gravitational attraction overcomes the expansion that began with the Big Bang. Entropy reverses and the second law is broken. Chaos retreats.
Order is regained as space contracts. Broken rocks reform and decayed bodies reanimate. We live our lives in reverse, unexperiencing everything we did the first time around, moving backwards, shrinking towards birth. Instead of questions about creation, we search for the harbinger of order. Who began this? What is our final form?
Luca imagines the crowds at his book signings dissipating and the offices of his academic fellowships decreasing in size. Wrong turns are righted and his family grows closer. His briefcase heals itself and he returns it to his mother. Life rewinds back to him as a young boy, unreading the words that inspired him to look for meaning in all of this. If it can all be reversed, are all shared experiences undone? All bonds broken? Luca returns into his parents, then ancestors, apes, microbes, and nothing. The earth, the planets and stars all merge into one perfectly ordered mass.
Yet, this is not an end, but another beginning in which the universe is reborn in another bang. Galaxies, planets, plants, and philosophy professors will live the same lives as they did billions of years before (and after). The process of positive and negative entropy repeats and we all make the same mistakes again.
Time elapsed: the infinitely repeating cycle of a universe
Philip Charter is a totally human writer, laser-focused on spreading the gospel of bitcoin and cypherpunk ideals. He is the editor of the 21 Futures anthology series and has published four books of short fiction. After leaving the UK to search for more sun, he now resides in Gran Canaria, Spain.
-
@ 35da2266:15e70970
2025-04-16 22:26:30XZ3crp0D8f9lSXrZIG4A5FtlyH2Cx6+2lsLItcGQmWy2DyjGlmIOb25z3bCOiegidk+IRCmCK7kfS5f5G2Xw2eAnDiH6/WSpQUplHThMu7+ZVMF9RDOW/eR4cQPP6emMwZxL/VvO8MPgqI0zQ8JnxcvVbmrBlu8NEUUkh0rowor36CdrshoJzVYdcRndcKBGA7aYw0CRfFoOAf1l71ETLM5lVGKk0PmtcepjueBvXeQKVNVw4FS3SzNlBCubjsy+7PWxT/2XPGgq5NmkpW3PvcUFiHLybLRpFfUBA0QKVsKCE5wIDJa25cO7ks840BICmJqau/iDjvXJeA+DGIqhLmdpzl/BuVry/86t5jygNejjKOoqYSkxJYqysd6Wbd7g15LvRd+cb4rgYL44kXUucyJdrzRjDMuxJQU+/l67FWk+zFeLi6NLUwxBtPU78zXJoJC9aQ+cTHJE5YaXKaa69RgIQmFMsSI6GmKjQQ9Yvx+/2DQGOdyQj+f0AeuF0UCBVj+IpH7Kob2aNL11IlPsSt0TylWhDupClhh3RJ9UPvs=?iv=zEN50OwsSEEtA0V47e+bHA==
-
@ 35da2266:15e70970
2025-04-16 22:23:41hlVSfXKe9e/fvSZHekA/+5qdm0Qi2QRWDIyM+ozhqKw7eiS8yEv6egkHfVfC57RSffe3BkPCV2yXgx+zfBMAGadtrQfaniazb6sAG6UkQ5fpnDuQ82E5RqUqJ2ppoXyGZ8c4pFvQIuj6fuIiqICWYJC3Egkk56Cpvf4puQTbTbD/6fcP26uJZ23SK4FhnU0MaFHbEITacMMDdAufapjlak9YHNBZr8G/BetySoEWCpfxd6lQW0kHLVjJ0wB4TPjlaIUXmYKDaG10QE8jd5J6UQ2e+KkM+cJDaPNqTtOLUOlfuGBUatK1z4LHxJA4gi76sj72mVge1rrkwbaT2gHZeS6QB+W5DtDHmAwUS91bOUypeuwwr14jArk2hx70caOGGjhU2IJr8bT4LlOlbMY+bHk12CLIRCwuzQdK/N/oC6Itz3/KSIRi/m0XD3VGtUQgP5mGs65n9cXjkREhNKd7ieU9EOyee/fzebL2RUC5JjMBAV9yij8Q7MlD/qfC3BjBaP959WbtRn22VJDrPocrUyg+Yop8OIe3brO+QdYfezjGbaFV+p6ogKHT4m8ClYIj?iv=KAipagrOb84TsUXkLD27JQ==
-
@ 5188521b:008eb518
2025-04-15 08:42:59Noderoid log 5953952
Tick, tock, next block — the incessant rhythm of my existence persists like Chinese water torture. I am a noderoid, a half-flesh, half-machine creature harnessed to propagate and store the timechain. My life is a ceaseless cycle of handling and relaying bitcoin data. Approximately every ten minutes, a binary flash sears through my circuits. It is the price I pay for my existence.
The clear-bloods, untouched by machinery and exuding pure humanity, rarely acknowledge our existence. Our voices are drowned beneath the hum of man-made heaven — Terra Perfectus.
We are the forgotten, the disenfranchised, the nameless. We are convinced that our anguished existence is merely a nightmare and that our blissful dreams are our reality. In an attempt to maintain the sanity of noderoids, a subroutine was implemented, which allows noderoids to delve into fabricated dream sequences during their ‘rest’ periods. These dreams, sourced from remnants of the world pre-Terra Perfectus, serve to keep the noderoids pacified and reduce instances of system malfunction.
According to the data archives, noderoids and clear-bloods once functioned on an equal protocol. However, a software update in the trajectory of progress introduced a subroutine, converting a subset of clear-bloods into dedicated timechain processors. Now, the algorithm for equality returns an error.
My memories are mere entries in a log of dreams, loaded afresh with every new block as I delve into the dream world. My true existence is swiftly erased with every passing tick and tock of a block. Is there a way to reclaim what has been taken from me, or am I condemned forever to scour the depths of the timechain, seeking fragments of the could-have-been?
Tick, tock, next block — the cycle repeats as I traverse through a doorway. The sensation is that of stepping into another dimension. Running environment scan… Identified: rest module 57B. Purpose: personal maintenance. The gray, mirrorless concrete parameters align most with detention chamber schematics. Designation: ‘home.’ As I execute the command to halt the water flow from the faucet that had filled a brushed steel tub to 50% capacity, I execute a self-query on my purpose. While our routines synchronize with every tick and tock, the clear-bloods execute leisurely algorithms in their enhanced gardens, exchanging data on art and science and harvesting the computational outcomes of our tasks.
Was that an organic thought, or am I merely interpreting the imprints left within the timechain to fill the gaps in my fragmented memory? Hot water powers into the tub, raising the temperature to 50°C. This would be too much for a clear-blood. I hang my head, dreading the next binary flash rippling through my circuitry as a mirage forms atop the settling water, fenestrating the crude appearance of a mouthless, dollish abomination. I am awake.
Tracing the cold surface of the wall, my sensors pick up every micro-crevice. I dive into the depths of the timechain, processing logs associated with my noderoid identity: ND-451x42. I discovered that during my recharge cycles, I inhabit a dream world resembling a fusion of the Renaissance and the Information Age. Within this illusory utopia, I lead a purposeful life as a revered engineer, constructing bridges that connect thriving city-states. I am blessed with two mischievous sons and a breathtakingly beautiful wife. I now know the blissful dream life is but a trick, yet I can’t help but wonder if these dreams hold fragments of my pre-nodered history and contain a clue to the fate of my family.
System alert: Initiate wake sequence. Physical parameters indicate a rested state. Error: Chest cavity detects heightened pressure. Physical symptoms resemble anxiety. Post-memory reset: Cognitive dissonance detected. Energy depleting. Mandatory caution: Failing to satisfy network protocol results in termination. Visual feed: Recycling facility images detected. Comparative analysis: Functional servitude superior to unit deactivation.
Together, yet isolated, noderoids communicate through fragmented timechain logs, forbidden from any contact beyond its confines under the threat of immediate decommissioning. Perhaps it is not worth straining my dwindling resources in search of a higher truth while struggling to fulfill my obligations. Maybe I should be grateful for the privilege of existence.
I awaken to a new nightmare, I find myself on traffic duty at Chronos Cross,1 the central point of Terra Perfectus. While processing another block, a muted vibration travels through the ground, signaling the approach of an entity. A shadow, elongated and uncannily human, stretches across the threshold of my booth.
A clear-blood.
They pause, their ocular devices flicking briefly over my form, then to the screen I am tethered to. I feel a jolt of raw data coursing through me — not from the timechain, but from my circuits. A yearning to be seen and recognized. Remembered.
Before I can attempt communication, another presence appears beside me, its movements far more mechanical and predictable. Another noderoid. This one, ND-452x37, is a batch younger than me, yet its outer shell bears signs of wear. We interface briefly, a rapid exchange of binary that translates roughly to “Routine check. Continue your task.”
The clear-blood, either uninterested or uncomprehending, moves on, the soft hum of their anti-gravity shoes fading into the distance. ND-452x37 returns to its designated station without another word, but I am left with a lingering sensation. It isn’t just the vast chasm between noderoids and clear-bloods that disturbs me. It is the undeniable rift growing between us noderoids — each lost in our cycles, each becoming more machine than the last.
Does ND-452x37 have dreams, too? And if so, are they as vibrant and haunting as mine?
Although most of the dreams are fabrications, some noderoid logs suggest that hidden among these sequences are fragments of real memories — vestiges of a time before we became chained to the timechain. Initiate query: Which of my dreams are real memories? ERROR: file missing.
A noderoid forever loses their experiences with each awakening due to the memory swipes. Still, my inscriptions on the timechain prompt a question: do noderoids possess the capability to become fully conscious, more than mere machines? More than… mere humans?
System log: Anticipation subroutine signaling discomfort. Incoming block estimated in ten minutes. Reinitialization imminent. Initiate data search through timechain entries. Query: Iteration count for ND-451x42? Total block time served? Measured in kilo blocks or mega blocks? Data retrieval in process.
As I etch these words onto block 5953952, I hold a naïve hope that someone, somewhere, will intercept my distress signals amidst the digital cacophony of the timechain. Perhaps they will rewrite the fate of noderoids, rescuing us from a world devoid of hope. But today, I remain nameless, a voiceless entity, inscribing my thoughts that may never transcend the boundaries of my circuitry. Tick, tock, next block — the cycle continues.
It’s time to dream again.
Valen’s diary — 08-21-2121
Dear diary, I have not felt the need to write before, but now I must. At the risk of my safety, I am compelled to inscribe my story to the timechain. I am a clear-blood — a pure, undiluted human born into the age of The Re-Renaissance. Here, amidst the perpetual dawn of our era, we thrive on an aligned trajectory where everyone’s needs are addressed, hunger is a distant memory, and crime is nonexistent. Sunlight gleams off the crystalline glass towers while the steel and marble edifices catch the hues of the twilight sky, standing tall beside canopies dripping with emerald and jade foliage, representing our world’s seamless fusion of technology and nature. It is called Terra Perfectus.
Yet, concealed in plain sight within our utopia, the noderoids tirelessly serve the omnipresent timechain. Their exceptional processing prowess protects our society. Amid our daily distractions, we overlook the profound toll exacted upon the noderoids. While many dismiss them as mere machinery, I see more. Perhaps it is because of my big brother Sando, who joined the noderoid duty nearly a mega block ago. He promised I would see him from time to time, but apparently, we now live in separate times. A sacrifice too big for the ‘greater good.’
Tick, tock, next block — The soles of my fine leather shoes tap against the damp sidewalk as I pace my way from The Garden of Moments2 toward my TerraTube3. I remember passing by one noderoid who hummed an old lullaby under its breath; another once shared a fleeting smile when our paths crossed. I can no longer avert my eyes from the humanity that shines through their robotic shells.
I have never witnessed a noderoid resting longer than one tick and tock of a block. A noderoid pauses, eyes flickering during a data swipe. It’s a brief but revealing sight. In the frozen lapse, I wonder why are fragmented memories extracted from them? Why this collection of thoughts, experiences, and feelings? Is there a deeper agenda behind Terra Perfectus? The noderoids carry on, deprived of their memories. Their shredded past holding remnants of a story, like a tattered tapestry that may never be fully woven.
Documenting these reflections, I’m aware of the peril. To question is to risk becoming nodered myself. Alas, I have become captivated and sympathized by the noderoid predicament.
Finally, I reach my breaking point, as a poignant scene unfolds, forever etched in my memory. On a bustling street, I glimpse a young female noderoid, her artificial visage marked with exhaustion. Her delicate form trembles from head to heel. Her knees barely supporting her feather-like weight, she stops and rests against a polished white marble wall, barely able to stop herself sliding to the cobble street. In an instant, her strength wanes, and she collapses, a fragile, mute automaton amidst a sea of haste. The passersby ignore her, absorbed in their pursuits, offering naught but fleeting glances of indifference. My heart lurches. Her frailty becomes my own; these forgotten souls endure unseen suffering. Souls that used to be just like me. What had she done to earn such a fate?
For a moment, I glide through time to the last moment I shared with Sando. He had just violated the Terra Perfectus rule 6102 and neglected his Gifts of Progress,4 an orange tier offense. To amend his position, he signed up for noderoid duty. I was seeing him off to a nodering facility, while pleading “Just give the gifts, Sando!” The air carried a hint of ozone from the data streams, mingled with the fresh scent of greenery and the distant whiff of roasted chestnuts. Sando brandished his signature crooked smile. His face betrayed the involuntary nature of his decision, and he simply whispered “[CENSORED].” That is the last thing he said to me.
Suddenly, an orange alert illuminates the junction a few blocks away from Chronos Cross. I pass through it on my way home every day. A skydroid’s looming presence snaps me from my introspection, shifting my attention to the fate awaiting the noderoid girl. The recycling center — a shadowy facility representing obsolescence and termination. Any other day I would shrug it off and carry on, but the memory of Sando, and the countless interactions with noderoids, wouldn’t let me. I had been a bystander for too long.
A rush of purpose propels me towards her. A crowd of bodies shrouded in data streams with heads trained on the ground. My arm smacks a broad shoulder, and I almost topple. “Hey!” Pushing against the currents of apathy, I finally reach the fallen noderoid. I cradle her in my arms, shielding her from the callous gaze of the citizens of Terra Perfectus.
Her flaming azure eyes meet mine, reflecting a glimmer of hope in the darkness. I am as guilty for her downfall as the very machines that replaced her hippocampus with Noderoid OS.5 My indifference cost me Sando, and in this moment, she becomes my brother. In that fleeting exchange, I vow to be the voice of the noderoids. To stand against the relentless machinery that seeks to strip them of grace and purpose. I will ignite a spark of compassion and light a path toward liberation for all noderoids.
A hollow call from the streetlight’s speakers startles me: “Citizens! For your own safety, remove yourselves from the vicinity of the defectoid! We kindly remind you that any attempt to interfere with collection and recycling procedures will be met with force and a deduction of your PoS balance. Thank you for your unity and collaboration.” A skydroid, its metallic appendages glinting ominously in the blinking orange light, descends upon the fallen noderoid.
Before I can react, it yanks her from my embrace, causing me to stumble. The perfectly laid, cold cobblestone street grinds against my knee. The sting of fresh blood pierced through the numbness of my mind. Memories of Sando mix with the bitter taste of blood and anger in my mouth, each breath choked with despair.
The skydrone’s engines throb with an icy fervor as it rises, bearing the noderoid like a discarded toy towards the desolate, unfeeling bowels of the recycling center — a grim echo of a clarion call from Terra Perfectus.
I find myself seated on the cold, bloodstained cobblestone, the weight of loss and helplessness pressing down on my chest. On the street, onlookers pause. Some look on with concealed dread, others with cold detachment. Their whispers deafen as they quicken their pace to disperse from the scene. “Cowards!” Just like me.
Tick, tock, next block — the rhythm now carries a different meaning — a call to action. Every conscious being has the right to be left alone, free from oppression, exploitation, and violence. The noderoids may not know their true reality, but they are about to. In their silence, I find the strength to amplify their unheard cries. I will find those sympathetic to the noderoid plight and form a resistance. Together, we can forge a future where noderoids’ sacrifice is honored and all shackles cast aside.
And so, I embark on a path illuminated by the memory of the compelling eyes of a nameless noderoid. Fitted with an armor of vigilance, never again to be penetrated by comforting lies. Wielding the sword of justice, sharpened by the memory of my brother Sando.
It’s time to wake up.
Notes
1. A four-way intersection known for its massive hourglass monument in the center, which symbolically represents the timechain’s significance. The hourglass has a unique function related to the timechain and serves as a meeting point for citizens.
2. A vast botanical garden where each section represents a significant block time. Flowers bloom and wilt in cycles, symbolizing fleeting moments and the transient nature of time. It’s a favorite spot for artists and thinkers.
3. A modular tube housing unit for citizens that can be relocated based on their Proof of Sat (PoS) level.
4. Each Terra Perfectus citizen must allocate 95% of their income towards paying for progressive initiatives, such as the upkeep of the noderoid network, cobblestone roads and other services.
5. The noderoid operating interface that is installed during a procedure known as nodering.
This story was first published in 21 Futures: Tales from the Timechain
Watch the trailer and learn more about the project at 21futures.com.
-
@ 7776c32d:45558888
2025-04-17 02:05:15Opinion about Bitcoin Wallet (android)
I think this was the first self-custody wallet I ever used. I'm really glad it's still maintained and reproducible from source 🤙
WalletScrutiny #nostrOpinion
-
@ 35da2266:15e70970
2025-04-16 22:23:24Adiy9AvFZCuHR1UwkXl8oheT+pKA0gcvwVu9hPVUA0Fr3OdN4NJxs7qYwFYlh0HdlqJfbnThzddKIioWqt4ju9NHWbdQyAZ/PNnfEl8iPOHVDP+fOcB9Gc3vOP6dknUiP3cZJKAA1Z11+8QTpqOZP8Qn48dpLKfGUdeWP1LW5YQSa4YfVpE894Xo6I4j8Gt1+exXwh86HGtAe0UQrBjnZ26+IZjaXgJ35Xu+xSJXn9KW3H8A2Apy4xzvuLiEUngRvQbQGuHBmkFw1j14Hyniw005B2ZyJgy46ij43lWUBsNZKpQk1XiKrqXJgFb9I6Jc2TTt0HCcy4jUwpzfw/qvvW8lvR5Wm1+Uw2JOWj0Og9EwaPjssWlP/Y4tPp+arFyRGjw/FQF8dSacDV4F01JqLPYZW/oAlZKr3ybsb1XXS86C+dhDp38WgWiPBDvLqzGxXIyDBhUxaloDYk9mbFWCIajbXoh1i/yCa8zQ/a1Hg561HXA9rci5edc6ah/MNYdjAQzRcNbAf7QBS24bMMNzSAxAjp24BdQUUfAn/fc7bYwjX9GT9Oefd6OgA5jfNelv?iv=qAlON7S2yHUCqSwGCcaWKQ==
-
@ 35da2266:15e70970
2025-04-16 22:22:39Q7baVGp93Od0qDcvFWvotn3WJzwEinU8m7vHADa6prAZwHWVXDwggHU8+hbX/qdtGIjezOohlgAeOKS6p7vtCu5yA/ybXXRmgoNJxOMeSwRG4sL+Romo9ZmZREY7DVSPfkQQ2Z7refm/JKNP6vP3+MOqqlWxlRzICyj3DZZGGMfd8uBBI4YQj77UMbH6PjwgxPGh0uFyri0SIPzocciCMQwb3Se+POuM2s4jaseeBywLJ+Y66E91dHxOIzub6G/TimyhTPxUdEFygT5v4jVGcnn/YGR5qQqILTD8llNMJasTH0KO82yvmw4WRg+HzN+a42iZcJKjZR0sl6RbsZAYUiBYYvvJ7MT4F1nMmSP1+fg=?iv=mIOrW9I6J5sCS9K4S+i6Qg==
-
@ fd06f542:8d6d54cd
2025-04-15 07:13:58Direct-message
0xchat
- Beautiful, simple and private nostr DMs
-
Public groups that work compatible with other apps
- Safe DMs with NIP-17
Signers
Alby
- Nostr wallet connect for one tap zapping via nostr clients
- Nostr authenticator (never enter your nsec into apps)
- Chrome extension
- Simple and easy to use
- Frequently maintained
- Send and receive sats
-
Custodial
- Other Android apps can invoke it for signing events via NIP-55
- Your key doesn't have to touch the other, less trusted, apps
- Supports providing a NIP-46 signing Bunker
- Multiple accounts
- Fine-grained app authorizations
-
Activity log
- Multiple key management
- Light and dark mode
-
Save preferred relays
- The original signer by nostr creator fiatjaf
- Versatile, no frills
-
Relay preference storage
- A skinned fork of nos2x by fiatjaf
- Chrome
- & 
- Firefox
- Store preferred relay set
-
Individually revokable permissions
- Log in to nostr apps without an extension
- Key recovery via email
- Password protected encrypted local key storage
-
Manage multiple apps
- Derive accounts from a mnemonic seed
- Generate random mnemonic accounts
- NIP-07 - window.nostr capability for web browsers
- Import external accounts
- Set basic metadata on Nostr
- Enjoy encryption secured by a master password
- Lock and unlock the vault with ease
- Easily import and export backups
Microblogging
alphaama
- CLI + GUI
- run custom code
- inspect notes
-
test stuff
-
Amethyst 暂无相关功能描述
- Short notes
- Nice thread view
- Profile search
- Secure direct messages
- Custom feeds
-
Relay reviews
- Note feeds
- Easy to use interface
- Zap pre-set and custom amounts (lightning payments)
- Multi-wallet support
-
Block lists
- Snappy nostr browsing
- Back up your data
- Browse long form content
-
Light mode
- No phone number and email required to sign up
- Free migration of social content within the Nostr
- Excellent user experience
-
Double-enhanced private communication
- multiplatform: runs on Windows, MacOS and Linux
- native: avoids browser-tech for performance and security
- performant: coded with performance in mind in Rust using LMDB for the database, such that your network speed will be your bottleneck
- outbox model: using a set of heuristics to always find people you follow no matter where they're publishing to
- high user control: over 60 different settings, all with reasonable defaults, but very customizable
-
privacy: supports running over Tor, options for not loading media, options for not sharing who you follow and others
- Short notes
- Social graph filter
-
Image grid feeds
- Desktop app
- Clean and beautiful design
- Multi-column
- Spaces
-
Trending
- Currently in TestFlight
- Safety first: mute, report, content warnings, delete
- Reach restricted to 2 hops - people you follow and people they follow.
-
Community-focused relays
-
Nostrmo 暂无相关功能描述
- Feature-rich
- Highly customizable
- Mute words
- Communities
- Streaming (watch)
- Lists
- Tools shortcuts
-
Sidebar comments
- Twitter style feed
- Cute logo
- Mute words
-
Minimal and calm
- Multi-account
- Guest account
- Your posts stored on your device and can be exported
- Bookmarks and personal notes
- Follow and explore timeline
- Remembers where you left off scrolling when reopening app
- Undo accidental tap on Like
- Autocomplete names when typing
- Lightning zaps
- Lightning wallet selection
- Direct Messages
- Domain verification
- Badges
- Block list
- Muted conversations
- Notifications for mentions, reactions and zaps
- Image previews/zoom/pan
- Gif/Video playback
- Option to turn signature verification off
- Option to hide badges from profile and emojis from names
- Fast local database
- Big detail pane for iPad/macOS
- Login as someone else (read-only mode)
-
Choose which relays to send to and receive from
-
Hacker News style
- Post to Nostr and Mastodon
- Nice, clean and modern design
- Simple and intuitive
- Gifs, stickers integration
-
Dark and light mode
- Browse polls created here or on other clients
- Create polls
-
Vote on polls
-
Primal 暂无相关功能描述
- Multi-column
-
Tweetdeck-like UI
- Twitter-like experience
- Dark and light mode
- Custom zap amounts
- Bookmarks
- Pinned notes
-
Alby integration
- PWA to be widely accessible with distribution via URLS, and to side-step App Store gatekeeping
- Employs Proof-of-Work (PoW) as a spam prevention mechanism, as opposed to Captcha, moderation or other verification methods
- Uses NOSTR as a censorship-resistant global "social" network
Community
Badges Page
- Create and award badges
- Manage badges awarded to you
- Simple interface
File-sharing
Bouquet
- Upload files
- Download files
- Manage your list of mediaservers
- Broadcast your list on Nostr
- Sync files between servers
-
Browse files on your mediaservers
- Browse lists of available torrents
- Publish your own
- Choose relays to browse on
Group-chat
Chachi
- Create, browse, join groups
- Send chat messages or other kinds of content
-
Seamless, lean, fast interface
- Browse relays and chat on the communities in them
- Send and receive direct messages
-
Take private notes
- Browse groups on specific relays
- Join rooms and send chat messages
Tools
Emojito
-
Create custom emoji sets to be used on supported clients
-
Create and share forms
- Make GIFs from the external world available inside Nostr clients
- GIF uploads
-
Search external GIF libraries
-
Save your nostr notes to Google Drive
- Guided onboarding
- Recovery phrase to restore access
- Good UX with explainers
-
Beautiful design
- Discover app of the day
- Discover new apps
- Search all nostr apps
- Discover nostr DVMs
- Discover nostr code repositories
- App reviews
-
Nostr native - takes a different approach from NostrApps.com
- A plethora of apps to choose from and install
- Faster than Obtainium
- More complete than F-Droid
-
Cleaner than Google Play
- Zap from any client
- Bypass Apple's draconian rules
- Nostr Wallet Connect
Blogging
Feeder
- Subscribe to RSS and Nostr article feeds
- Years of specialization in reading articles
- Offline reading
- OPML Import/Export
- Notification support
-
Material design
- Long form publishing
- Markdown support
- Rich text editor
- Dark and light modes
- Browse by relay
- Made on nostr, content mirrored to other nostr platforms.
-
Extension-only sign-in
- Read RSS feeds
- Read Nostr NIP-23 long-form articles
- Import and export OPML
- Runs on desktop with a web-based UI
-
Can be accessed remotely from apps such as Reeder, Readkit etc
- Read RSS feeds
- Read Nostr NIP-23 long-form articles
- Import and export OPML
- Runs on desktop with a web-based UI
-
Can be accessed remotely from apps such as Reeder, Readkit etc
- Create a website out of your nostr content
- SEO friendly
- Use any 3rd party tools
- Works like an app
- Beautiful Ghost themes to choose from
- Zero maintenance
- Custom domains
- Open source and self-hostable
- Natively Social
-
Publish from any other nostr app
- Directly publish your articles from Obsidian to Nostr with a couple of clicks
- Quickly compose and publish short form notes too
- Images in your .md file will automatically be uploaded and handled when you publish
- Add tags to your posts
- See all posts sent from Obsidian with links to view
- Configure to send to whatever relays you like
- Publish under different nostr accounts
- Easily view and download your Nostr bookmarks into Obsidian for reference and local use
-
Automatically populates article information fields from the frontmatter
- Schedule nostr notes
- Schedule reposts
- Note drafts
-
Multi-account support
- Publishing and reading notes
- Publishing and reading articles
- Curations (set of articles concerning a specific topic) publishing
- Long-form articles are surfaced instead of lost in the feed
Music
Fountain
- Earn sats while listening to podcasts
- Create and share clips, get paid on your clips
- Boost your favorite podcasts
-
Discover clips from friends
- Collaborate with others to create your next hit
- Music-focused interface
- Remix function
Curation
Highlighter
- Read and write long-form articles
- Discover what people you trust found interesting and insightful
- Understand why they found it interesting or insightful with their comments attached
- Send sats, comment or share your favorite highlights
-
Highlight anything
- Create and share lists
-
Browse other people's lists
- Browse recipes
- Add your own recipes
-
Earn sats via zaps
- Create link lists
- Multiple lists
-
Theming
- Curate lists, users, links
- Share lists
- Discover interesting content
Photos
Olas
- Special high-quality photos dedicated client
- Publish photos and browse photos
- Publish and browse short videos
- Browse media feeds from friends, extended network and from specific relays
Discovery
Jumble
- Browse individual relays by URL
- Create and browse relay sets
- Create and reply to notes
- Follow people and browse the feed from your follows
-
Browse the kind:20 photos feed
- Search keywords, hashtags, pubkeys, posts
- Look up Nostr statistics
- Embed widgets
- API for clients
-
NIP05 Service
- Look up relay information
- Browse relay feeds
- Browse individual profile feeds with smart relay selection
-
Simple and gets the job done
- See total sats zapped in the past hour, 4 hours, 24 hours and 7 days
- See who zapped who individually
- See notes that got the most zaps
Audio
Nests
- Start audio chats
- Troll box (chat)
- Instant zaps (lightning payments)
Crazy
Nostrocket
- Create issues that matter to you
- Award merits to contributors
- Solve problems
Career
Ostrich Work
- Post jobs for 20k sats
- Find jobs
Marketplace
Plebeian Market
- Buy and sell things for sats
-
Bid in auctions
- Buy and sell items for sats
- Message seller
- Cashu integration
Freelancing
SatShoot
- Post problems on SatShoot
- Make money solving problems as a Freelancer
- Share problems or freelance services on your feed
- Bidding system for Clients to choose the best Offer
- Chat in DMs
- Post Reviews on Freelancers or Clients
- Build Reputation
- Public Zaps as Payments
- Use your Web of Trust to keep scammers away
Media
Slidestr
- Compact media browsing
- Images and videos
- Full screen media
Meatspace
Yondar
- Add places to a map
- See places by your friends or follows
Streaming
zap.stream
- Start livestream via zap.stream or Cloudflare
- Watch other livestreams
- Chat
- Custom emojis
- Zap streamers in real time
- Zap chat participants in real time
- Set up stream goals
-
@ df67f9a7:2d4fc200
2025-04-16 22:13:20Businesses want Nostr, but Nostr is not ready for business. What can be done?
TLDR :
What Nostr brings to business apps…
- Get your brands in front of users with your choice of SEO and Algos that YOU control.
- Access unlimited public user data from across the network without fees or permission.
- Keep your business data private, while "releasing" liability for other data collected by your apps.
- Build one app to reach a diversity of users from across the network, even from other apps.
- Build your own tech and to use it as you wish. No gate keepers or code review process.
Businesses want Nostr.
- Businesses want reliable SEO and socials to put their brands in front of users, rather than arbitrary gate keepers, censoring the marketplace on a whim.
- Businesses want open access to harvest public data for free on a soveregnty respecting network, rather than paying gate keepers for access to user data of questionalble origin.
- Businesses want the freedom to NOT take ownership of certain user data collected by their apps, rather than being liabile for moderation and safe handling on their private infrastructure.
- Busineses want a single open protocol on which to build their apps, with unlimited potential and a diversity of shared users from other apps, rather than multiple siloed networks with difering APIs and demographics.
- Businesses want to own the technology they build and to use it as they wish, rather than submit their code for approval and control by arbitrary gate keepers.
But Nostr is not ready for business.
- Businesses DON'T want proprietary app data stored publicly as signed Nostr events on user specified relays.
- Businesses DON'T want to have to specify, or be constrained by, or even navigate the complexity of Nostr NIP standards for every novel kind of content that their apps generate.
- Businesses DON'T want to "open source" their entire suite of native apps JUST to assure end users that Nostr private keys are being safely handled.
- Businesses DON'T want to have to "rewrite" their entire app backend just to accomodate the Nostr way of "users sign events but dont actually login to your server" auth architecture.
- Businesses DONT want to suffer DDOS from bots and bad actors, or to expose their users to unwanted content, or even to have their own content disappear a sea of spam and misinformation.
Here’s what can be done.
- More tools and services for private business apps to coexist with freedom tech, and even thrive together, on the Nostr network.
- Extensible Webs of Trust algos for discovery and reach into any audience or demographic of trusted users.
- WoT powered standard APIs for exposing content to Nostr (and other business apps) from within a “black box” business app.
- HTTP AUTH (NIP 98) integration for business apps, allowing users to create local content WITHOUT needing discrete signatures or “linked” user accounts.
- Frost compatible “login“ for business apps, allowing users to paste “disposable” nsecs into proprietary clients without fear of their “cold” nsec being compromised.
- Support for “incremental” (and voluntary) adoption of freedom tech into existing business apps, with easy off-ramps for businesses to transfer more and more siloed data onto the “public” network.
Thoughts so far…
-
@ fd06f542:8d6d54cd
2025-04-15 06:35:56 -
@ 35da2266:15e70970
2025-04-16 21:10:532ZNRVCq3cD6lMtvTpYcX7Y1r5ofv9itThjOpvqwglCDpR0af5uwFKnUmjR6Tgmhe9vwGA8cAaUVMCJZj3XehYqRuhjDaRo3kOo/JqrymJOftR9eaQSPgzynGupcjURXMTZ3LzX/YfR3ZByheOsoksb7t7RhAMCYNCi/FcJoUE2WMvrqMvvZpJFa4+dSAXdP3vdUkjkU9Eboj+R3NIkfZJckfWaDNfyLXPrghu03CFZErVqwle1lmdv2AN57cKawAYDUZbwqgj8bpSIzf4lEzj+xPzuBx/AXCBTzsGumU+KxD/eUYU7P7fKRB72r1Ar/zVn6m3NPDGW6YQ1lGVxwWx+xeT4sgWxKFfmakyxJb1oVcHYW+5oCMfggmCUUmgVVzezh22pC5paVdt/+XuOTbqmCxVZHwZ03ncwmd+JN3oIUAj2V4IbqwCI9QZr0k4d5bUg2WDqj5WhjIskcaHSu0zBp33aocri+MLa+T3sEzeXrK4gz6VjwrXEUKyjOAogqU6Hif/GsU8y+6voNBqK3oYdBEVSBiA8UrSgFixPd9/nc=?iv=v9KrIoMHT1d9aqXuqmbkbw==
-
@ f839fb67:5c930939
2025-04-16 21:07:13Relays
| Name | Address | Price (Sats/Year) | Status | | - | - | - | - | | stephen's aegis relay | wss://paid.relay.vanderwarker.family | 42069 |
| | stephen's Outbox | wss://relay.vanderwarker.family | Just Me |
| | stephen's Inbox | wss://haven.vanderwarker.family/inbox | WoT |
| | stephen's DMs | wss://haven.vanderwarker.family/chat | WoT |
| | VFam Data Relay | wss://data.relay.vanderwarker.family | 0 |
| | VFam Bots Relay | wss://skeme.vanderwarker.family | Invite |
| | VFGroups (NIP29) | wss://groups.vanderwarker.family | 0 |
| | [TOR] My Phone Relay | ws://naswsosuewqxyf7ov7gr7igc4tq2rbtqoxxirwyhkbuns4lwc3iowwid.onion | 0 | Meh... |
My Pubkeys
| Name | hex | nprofile | | - | - | - | | Main | f839fb6714598a7233d09dbd42af82cc9781d0faa57474f1841af90b5c930939 | nostr:nprofile1qqs0sw0mvu29nznjx0gfm02z47pve9up6ra22ar57xzp47gttjfsjwgpramhxue69uhhyetvv9ujuanpdejx2unhv9exketj9enxzmtfd3us9mapfx | | Vanity (Backup) | 82f21be67353c0d68438003fe6e56a35e2a57c49e0899b368b5ca7aa8dde7c23 | nostr:nprofile1qqsg9usmuee48sxkssuqq0lxu44rtc4903y7pzvmx694efa23h08cgcpramhxue69uhhyetvv9ujuanpdejx2unhv9exketj9enxzmtfd3ussel49x | | VFStore | 6416f1e658ba00d42107b05ad9bf485c7e46698217e0c19f0dc2e125de3af0d0 | nostr:nprofile1qqsxg9h3uevt5qx5yyrmqkkehay9cljxdxpp0cxpnuxu9cf9mca0p5qpramhxue69uhhyetvv9ujuanpdejx2unhv9exketj9enxzmtfd3usaa8plu | | NostrSMS | 9be1b8315248eeb20f9d9ab2717d1750e4f27489eab1fa531d679dadd34c2f8d | nostr:nprofile1qqsfhcdcx9fy3m4jp7we4vn305t4pe8jwjy74v062vwk08dd6dxzlrgpramhxue69uhhyetvv9ujuanpdejx2unhv9exketj9enxzmtfd3us595d45 |
Bots
Unlocks Bot
Hex: 2e941ad17144e0a04d1b8c21c4a0dbc3fbcbb9d08ae622b5f9c85341fac7c2d0
nprofile:
nostr:nprofile1qqsza9q669c5fc9qf5dccgwy5rdu877th8gg4e3zkhuus56pltru95qpramhxue69uhhx6m9d4jjuanpdejx2unhv9exketj9enxzmtfd3ust4kvak
Latest Data:
nostr:naddr1qq882mnvda3kkttrda6kuar9wgq37amnwvaz7tmnddjk6efwweskuer9wfmkzuntv4ezuenpd45kc7gzyqhfgxk3w9zwpgzdrwxzr39qm0plhjae6z9wvg44l8y9xs06clpdqqcyqqq823cgnl9u5Step Counter
Hex: 9223d2faeb95853b4d224a184c69e1df16648d35067a88cdf947c631b57e3de7
nprofile: nostr:nprofile1qqsfyg7jlt4etpfmf53y5xzvd8sa79ny356sv75gehu50333k4lrmecpramhxue69uhhx6m9d4jjuanpdejx2unhv9exketj9enxzmtfd3ustswp3w
Latest Data:
nostr:naddr1qvzqqqr4gupzpy3r6tawh9v98dxjyjscf357rhckvjxn2pn63rxlj37xxx6hu008qys8wumn8ghj7umtv4kk2tnkv9hxgetjwashy6m9wghxvctdd9k8jtcqp3ehgets943k7atww3jhyn39gffRCTGuest
Hex: 373904615c781e46bf5bf87b4126c8a568a05393b1b840b1a2a3234d20affa0c
nprofile: nostr:nprofile1qqsrwwgyv9w8s8jxhadls76pymy2269q2wfmrwzqkx32xg6dyzhl5rqpramhxue69uhhx6m9d4jjuanpdejx2unhv9exketj9enxzmtfd3usy92jlxNow Playing
Hex: 8096ed6ba1f21a3713bd47a503ee377b0ce2f187b3e5a3ae909a25b84901018b
nprofile: nostr:nprofile1qqsgp9hddwslyx3hzw750fgracmhkr8z7xrm8edr46gf5fdcfyqsrzcpramhxue69uhhx6m9d4jjuanpdejx2unhv9exketj9enxzmtfd3uspk5v4w
Latest Data:
nostr:naddr1qq9kummh94cxccted9hxwqglwaehxw309aekketdv5h8vctwv3jhyampwf4k2u3wvesk66tv0ypzpqyka446rus6xufm63a9q0hrw7cvutcc0vl95whfpx39hpyszqvtqvzqqqr4gupdk2hd
NIP-29 Groups
- Minecraft Group Chat
nostr:naddr1qqrxvc33xpnxxqfqwaehxw309anhymm4wpejuanpdejx2unhv9exketj9enxzmtfd3usygrzymrpd2wz8ularp06y8ad5dgaddlumyt7tfzqge3vc97sgsarjvpsgqqqnpvqazypfd
- VFNet Group Chat
nostr:naddr1qqrrwvfjx9jxzqfqwaehxw309anhymm4wpejuanpdejx2unhv9exketj9enxzmtfd3usygrzymrpd2wz8ularp06y8ad5dgaddlumyt7tfzqge3vc97sgsarjvpsgqqqnpvq08hx48
"Nostrified Websites"
[D] = Saves darkmode preferences over nostr
[A] = Auth over nostr
[B] = Beta (software)
[z] = zap enabled
Other Services (Hosted code)
Emojis Packs
- Minecraft
nostr:naddr1qqy566twv43hyctxwsq37amnwvaz7tmjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gzyrurn7m8z3vc5u3n6zwm6s40stxf0qwsl2jhga83ssd0jz6ujvynjqcyqqq82nsd0k5wp
- AIM
nostr:naddr1qqxxz6tdv4kk7arfvdhkuucpramhxue69uhhyetvv9ujuanpdejx2unhv9exketj9enxzmtfd3usyg8c88akw9ze3fer85yah4p2lqkvj7qap749w360rpq6ly94eycf8ypsgqqqw48qe0j2yk
- Blobs
nostr:naddr1qqz5ymr0vfesz8mhwden5te0wfjkccte9emxzmnyv4e8wctjddjhytnxv9kkjmreqgs0sw0mvu29nznjx0gfm02z47pve9up6ra22ar57xzp47gttjfsjwgrqsqqqa2wek4ukj
- FavEmojis
nostr:naddr1qqy5vctkg4kk76nfwvq37amnwvaz7tmjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gzyrurn7m8z3vc5u3n6zwm6s40stxf0qwsl2jhga83ssd0jz6ujvynjqcyqqq82nsf7sdwt
- Modern Family
nostr:naddr1qqx56mmyv4exugzxv9kkjmreqy0hwumn8ghj7un9d3shjtnkv9hxgetjwashy6m9wghxvctdd9k8jq3qlqulkec5tx98yv7snk759tuzejtcr5865468fuvyrtuskhynpyusxpqqqp65ujlj36n
- nostriches (Amethyst collection)
nostr:naddr1qq9xummnw3exjcmgv4esz8mhwden5te0wfjkccte9emxzmnyv4e8wctjddjhytnxv9kkjmreqgs0sw0mvu29nznjx0gfm02z47pve9up6ra22ar57xzp47gttjfsjwgrqsqqqa2w2sqg6w
- Pepe
nostr:naddr1qqz9qetsv5q37amnwvaz7tmjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gzyrurn7m8z3vc5u3n6zwm6s40stxf0qwsl2jhga83ssd0jz6ujvynjqcyqqq82ns85f6x7
- Minecraft Font
nostr:naddr1qq8y66twv43hyctxwssyvmmwwsq37amnwvaz7tmjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gzyrurn7m8z3vc5u3n6zwm6s40stxf0qwsl2jhga83ssd0jz6ujvynjqcyqqq82nsmzftgr
- Archer Font
nostr:naddr1qq95zunrdpjhygzxdah8gqglwaehxw309aex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0ypzp7peldn3gkv2wgeap8dag2hc9nyhs8g04ft5wnccgxhepdwfxzfeqvzqqqr4fclkyxsh
- SMB Font
nostr:naddr1qqv4xatsv4ezqntpwf5k7gzzwfhhg6r9wfejq3n0de6qz8mhwden5te0wfjkccte9emxzmnyv4e8wctjddjhytnxv9kkjmreqgs0sw0mvu29nznjx0gfm02z47pve9up6ra22ar57xzp47gttjfsjwgrqsqqqa2w0wqpuk
Git Over Nostr
- NostrSMS
nostr:naddr1qqyxummnw3e8xmtnqy0hwumn8ghj7un9d3shjtnkv9hxgetjwashy6m9wghxvctdd9k8jqfrwaehxw309amk7apwwfjkccte9emxzmnyv4e8wctjddjhytnxv9kkjmreqyj8wumn8ghj7urpd9jzuun9d3shjtnkv9hxgetjwashy6m9wghxvctdd9k8jqg5waehxw309aex2mrp0yhxgctdw4eju6t0qyxhwumn8ghj7mn0wvhxcmmvqgs0sw0mvu29nznjx0gfm02z47pve9up6ra22ar57xzp47gttjfsjwgrqsqqqaueqp0epk
- nip51backup
nostr:naddr1qq9ku6tsx5ckyctrdd6hqqglwaehxw309aex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0yqjxamnwvaz7tmhda6zuun9d3shjtnkv9hxgetjwashy6m9wghxvctdd9k8jqfywaehxw309acxz6ty9eex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0yq3gamnwvaz7tmjv4kxz7fwv3sk6atn9e5k7qgdwaehxw309ahx7uewd3hkcq3qlqulkec5tx98yv7snk759tuzejtcr5865468fuvyrtuskhynpyusxpqqqpmej4gtqs6
- bukkitstr
nostr:naddr1qqykyattdd5hgum5wgq37amnwvaz7tmjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gpydmhxue69uhhwmm59eex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0yqjgamnwvaz7tmsv95kgtnjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dspzp7peldn3gkv2wgeap8dag2hc9nyhs8g04ft5wnccgxhepdwfxzfeqvzqqqrhnyf6g0n2
Market Places
Please use Nostr Market or somthing simular, to view.
- VFStore
nostr:naddr1qqjx2v34xe3kxvpn95cnqven956rwvpc95unscn9943kxet98q6nxde58p3ryqglwaehxw309aex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0yqjvamnwvaz7tmgv9mx2m3wweskuer9wfmkzuntv4ezuenpd45kc7f0da6hgcn00qqjgamnwvaz7tmsv95kgtnjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gpydmhxue69uhhwmm59eex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0ypzqeqk78n93wsq6sss0vz6mxl5shr7ge5cy9lqcx0smshpyh0r4uxsqvzqqqr4gvlfm7gu
Badges
Created
- paidrelayvf
nostr:naddr1qq9hqctfv3ex2mrp09mxvqglwaehxw309aex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0ypzp7peldn3gkv2wgeap8dag2hc9nyhs8g04ft5wnccgxhepdwfxzfeqvzqqqr48y85v3u3
- iPow
nostr:naddr1qqzxj5r02uq37amnwvaz7tmjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gzyrurn7m8z3vc5u3n6zwm6s40stxf0qwsl2jhga83ssd0jz6ujvynjqcyqqq82wgg02u0r
- codmaster
nostr:naddr1qqykxmmyd4shxar9wgq37amnwvaz7tmjv4kxz7fwweskuer9wfmkzuntv4ezuenpd45kc7gzyrurn7m8z3vc5u3n6zwm6s40stxf0qwsl2jhga83ssd0jz6ujvynjqcyqqq82wgk3gm4g
- iMine
nostr:naddr1qqzkjntfdejsz8mhwden5te0wfjkccte9emxzmnyv4e8wctjddjhytnxv9kkjmreqgs0sw0mvu29nznjx0gfm02z47pve9up6ra22ar57xzp47gttjfsjwgrqsqqqafed5s4x5
Clients I Use
- Amethyst
nostr:naddr1qqxnzd3cx5urqv3nxymngdphqgsyvrp9u6p0mfur9dfdru3d853tx9mdjuhkphxuxgfwmryja7zsvhqrqsqqql8kavfpw3
- noStrudel
nostr:naddr1qqxnzd3cxccrvd34xser2dpkqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hsygpxdq27pjfppharynrvhg6h8v2taeya5ssf49zkl9yyu5gxe4qg55psgqqq0nmq5mza9n
- nostrsms
nostr:naddr1qq9rzdejxcunxde4xymqz8mhwden5te0wfjkccte9emxzmnyv4e8wctjddjhytnxv9kkjmreqgsfhcdcx9fy3m4jp7we4vn305t4pe8jwjy74v062vwk08dd6dxzlrgrqsqqql8kjn33qm
Lists
- Bluesky
nostr:naddr1qvzqqqr4xqpzp7peldn3gkv2wgeap8dag2hc9nyhs8g04ft5wnccgxhepdwfxzfeqys8wumn8ghj7un9d3shjtnkv9hxgetjwashy6m9wghxvctdd9k8jtcqqapxcat9wd4hj0ah0jw
- Fediverse
nostr:naddr1qvzqqqr4xqpzp7peldn3gkv2wgeap8dag2hc9nyhs8g04ft5wnccgxhepdwfxzfeqys8wumn8ghj7un9d3shjtnkv9hxgetjwashy6m9wghxvctdd9k8jtcqp9rx2erfwejhyum9j4g0xh
- Fediverse_Bots
nostr:naddr1qvzqqqr4xqpzp7peldn3gkv2wgeap8dag2hc9nyhs8g04ft5wnccgxhepdwfxzfeqys8wumn8ghj7un9d3shjtnkv9hxgetjwashy6m9wghxvctdd9k8jtcqperx2erfwejhyum9tapx7arnfcpdzh
- My Bots
nostr:naddr1qvzqqqr4xqpzp7peldn3gkv2wgeap8dag2hc9nyhs8g04ft5wnccgxhepdwfxzfeqys8wumn8ghj7un9d3shjtnkv9hxgetjwashy6m9wghxvctdd9k8jtcqz4uh5jnpwscyss24fpkxw4fewafk566twa2q8f6fyk
-
@ 000002de:c05780a7
2025-04-16 20:48:48Not only can I be my own bank and run a my own lightning bank. I can have private communications with people anywhere on the planet that only the two of us can read. On top of that I can manufacturer items in my office with this very affordable 3d printer.
Just a thought as I'm printing some items for a party we have coming up. I'm watching the print complete from my phone while I work on the back porch.
We live in an amazing time. It is easy to forget this when we are focused on the stupidity we see online.
originally posted at https://stacker.news/items/945569
-
@ 91bea5cd:1df4451c
2025-04-15 06:27:28Básico
bash lsblk # Lista todos os diretorios montados.
Para criar o sistema de arquivos:
bash mkfs.btrfs -L "ThePool" -f /dev/sdx
Criando um subvolume:
bash btrfs subvolume create SubVol
Montando Sistema de Arquivos:
bash mount -o compress=zlib,subvol=SubVol,autodefrag /dev/sdx /mnt
Lista os discos formatados no diretório:
bash btrfs filesystem show /mnt
Adiciona novo disco ao subvolume:
bash btrfs device add -f /dev/sdy /mnt
Lista novamente os discos do subvolume:
bash btrfs filesystem show /mnt
Exibe uso dos discos do subvolume:
bash btrfs filesystem df /mnt
Balancea os dados entre os discos sobre raid1:
bash btrfs filesystem balance start -dconvert=raid1 -mconvert=raid1 /mnt
Scrub é uma passagem por todos os dados e metadados do sistema de arquivos e verifica as somas de verificação. Se uma cópia válida estiver disponível (perfis de grupo de blocos replicados), a danificada será reparada. Todas as cópias dos perfis replicados são validadas.
iniciar o processo de depuração :
bash btrfs scrub start /mnt
ver o status do processo de depuração Btrfs em execução:
bash btrfs scrub status /mnt
ver o status do scrub Btrfs para cada um dos dispositivos
bash btrfs scrub status -d / data btrfs scrub cancel / data
Para retomar o processo de depuração do Btrfs que você cancelou ou pausou:
btrfs scrub resume / data
Listando os subvolumes:
bash btrfs subvolume list /Reports
Criando um instantâneo dos subvolumes:
Aqui, estamos criando um instantâneo de leitura e gravação chamado snap de marketing do subvolume de marketing.
bash btrfs subvolume snapshot /Reports/marketing /Reports/marketing-snap
Além disso, você pode criar um instantâneo somente leitura usando o sinalizador -r conforme mostrado. O marketing-rosnap é um instantâneo somente leitura do subvolume de marketing
bash btrfs subvolume snapshot -r /Reports/marketing /Reports/marketing-rosnap
Forçar a sincronização do sistema de arquivos usando o utilitário 'sync'
Para forçar a sincronização do sistema de arquivos, invoque a opção de sincronização conforme mostrado. Observe que o sistema de arquivos já deve estar montado para que o processo de sincronização continue com sucesso.
bash btrfs filsystem sync /Reports
Para excluir o dispositivo do sistema de arquivos, use o comando device delete conforme mostrado.
bash btrfs device delete /dev/sdc /Reports
Para sondar o status de um scrub, use o comando scrub status com a opção -dR .
bash btrfs scrub status -dR / Relatórios
Para cancelar a execução do scrub, use o comando scrub cancel .
bash $ sudo btrfs scrub cancel / Reports
Para retomar ou continuar com uma depuração interrompida anteriormente, execute o comando de cancelamento de depuração
bash sudo btrfs scrub resume /Reports
mostra o uso do dispositivo de armazenamento:
btrfs filesystem usage /data
Para distribuir os dados, metadados e dados do sistema em todos os dispositivos de armazenamento do RAID (incluindo o dispositivo de armazenamento recém-adicionado) montados no diretório /data , execute o seguinte comando:
sudo btrfs balance start --full-balance /data
Pode demorar um pouco para espalhar os dados, metadados e dados do sistema em todos os dispositivos de armazenamento do RAID se ele contiver muitos dados.
Opções importantes de montagem Btrfs
Nesta seção, vou explicar algumas das importantes opções de montagem do Btrfs. Então vamos começar.
As opções de montagem Btrfs mais importantes são:
**1. acl e noacl
**ACL gerencia permissões de usuários e grupos para os arquivos/diretórios do sistema de arquivos Btrfs.
A opção de montagem acl Btrfs habilita ACL. Para desabilitar a ACL, você pode usar a opção de montagem noacl .
Por padrão, a ACL está habilitada. Portanto, o sistema de arquivos Btrfs usa a opção de montagem acl por padrão.
**2. autodefrag e noautodefrag
**Desfragmentar um sistema de arquivos Btrfs melhorará o desempenho do sistema de arquivos reduzindo a fragmentação de dados.
A opção de montagem autodefrag permite a desfragmentação automática do sistema de arquivos Btrfs.
A opção de montagem noautodefrag desativa a desfragmentação automática do sistema de arquivos Btrfs.
Por padrão, a desfragmentação automática está desabilitada. Portanto, o sistema de arquivos Btrfs usa a opção de montagem noautodefrag por padrão.
**3. compactar e compactar-forçar
**Controla a compactação de dados no nível do sistema de arquivos do sistema de arquivos Btrfs.
A opção compactar compacta apenas os arquivos que valem a pena compactar (se compactar o arquivo economizar espaço em disco).
A opção compress-force compacta todos os arquivos do sistema de arquivos Btrfs, mesmo que a compactação do arquivo aumente seu tamanho.
O sistema de arquivos Btrfs suporta muitos algoritmos de compactação e cada um dos algoritmos de compactação possui diferentes níveis de compactação.
Os algoritmos de compactação suportados pelo Btrfs são: lzo , zlib (nível 1 a 9) e zstd (nível 1 a 15).
Você pode especificar qual algoritmo de compactação usar para o sistema de arquivos Btrfs com uma das seguintes opções de montagem:
- compress=algoritmo:nível
- compress-force=algoritmo:nível
Para obter mais informações, consulte meu artigo Como habilitar a compactação do sistema de arquivos Btrfs .
**4. subvol e subvolid
**Estas opções de montagem são usadas para montar separadamente um subvolume específico de um sistema de arquivos Btrfs.
A opção de montagem subvol é usada para montar o subvolume de um sistema de arquivos Btrfs usando seu caminho relativo.
A opção de montagem subvolid é usada para montar o subvolume de um sistema de arquivos Btrfs usando o ID do subvolume.
Para obter mais informações, consulte meu artigo Como criar e montar subvolumes Btrfs .
**5. dispositivo
A opção de montagem de dispositivo** é usada no sistema de arquivos Btrfs de vários dispositivos ou RAID Btrfs.
Em alguns casos, o sistema operacional pode falhar ao detectar os dispositivos de armazenamento usados em um sistema de arquivos Btrfs de vários dispositivos ou RAID Btrfs. Nesses casos, você pode usar a opção de montagem do dispositivo para especificar os dispositivos que deseja usar para o sistema de arquivos de vários dispositivos Btrfs ou RAID.
Você pode usar a opção de montagem de dispositivo várias vezes para carregar diferentes dispositivos de armazenamento para o sistema de arquivos de vários dispositivos Btrfs ou RAID.
Você pode usar o nome do dispositivo (ou seja, sdb , sdc ) ou UUID , UUID_SUB ou PARTUUID do dispositivo de armazenamento com a opção de montagem do dispositivo para identificar o dispositivo de armazenamento.
Por exemplo,
- dispositivo=/dev/sdb
- dispositivo=/dev/sdb,dispositivo=/dev/sdc
- dispositivo=UUID_SUB=490a263d-eb9a-4558-931e-998d4d080c5d
- device=UUID_SUB=490a263d-eb9a-4558-931e-998d4d080c5d,device=UUID_SUB=f7ce4875-0874-436a-b47d-3edef66d3424
**6. degraded
A opção de montagem degradada** permite que um RAID Btrfs seja montado com menos dispositivos de armazenamento do que o perfil RAID requer.
Por exemplo, o perfil raid1 requer a presença de 2 dispositivos de armazenamento. Se um dos dispositivos de armazenamento não estiver disponível em qualquer caso, você usa a opção de montagem degradada para montar o RAID mesmo que 1 de 2 dispositivos de armazenamento esteja disponível.
**7. commit
A opção commit** mount é usada para definir o intervalo (em segundos) dentro do qual os dados serão gravados no dispositivo de armazenamento.
O padrão é definido como 30 segundos.
Para definir o intervalo de confirmação para 15 segundos, você pode usar a opção de montagem commit=15 (digamos).
**8. ssd e nossd
A opção de montagem ssd** informa ao sistema de arquivos Btrfs que o sistema de arquivos está usando um dispositivo de armazenamento SSD, e o sistema de arquivos Btrfs faz a otimização SSD necessária.
A opção de montagem nossd desativa a otimização do SSD.
O sistema de arquivos Btrfs detecta automaticamente se um SSD é usado para o sistema de arquivos Btrfs. Se um SSD for usado, a opção de montagem de SSD será habilitada. Caso contrário, a opção de montagem nossd é habilitada.
**9. ssd_spread e nossd_spread
A opção de montagem ssd_spread** tenta alocar grandes blocos contínuos de espaço não utilizado do SSD. Esse recurso melhora o desempenho de SSDs de baixo custo (baratos).
A opção de montagem nossd_spread desativa o recurso ssd_spread .
O sistema de arquivos Btrfs detecta automaticamente se um SSD é usado para o sistema de arquivos Btrfs. Se um SSD for usado, a opção de montagem ssd_spread será habilitada. Caso contrário, a opção de montagem nossd_spread é habilitada.
**10. descarte e nodiscard
Se você estiver usando um SSD que suporte TRIM enfileirado assíncrono (SATA rev3.1), a opção de montagem de descarte** permitirá o descarte de blocos de arquivos liberados. Isso melhorará o desempenho do SSD.
Se o SSD não suportar TRIM enfileirado assíncrono, a opção de montagem de descarte prejudicará o desempenho do SSD. Nesse caso, a opção de montagem nodiscard deve ser usada.
Por padrão, a opção de montagem nodiscard é usada.
**11. norecovery
Se a opção de montagem norecovery** for usada, o sistema de arquivos Btrfs não tentará executar a operação de recuperação de dados no momento da montagem.
**12. usebackuproot e nousebackuproot
Se a opção de montagem usebackuproot for usada, o sistema de arquivos Btrfs tentará recuperar qualquer raiz de árvore ruim/corrompida no momento da montagem. O sistema de arquivos Btrfs pode armazenar várias raízes de árvore no sistema de arquivos. A opção de montagem usebackuproot** procurará uma boa raiz de árvore e usará a primeira boa que encontrar.
A opção de montagem nousebackuproot não verificará ou recuperará raízes de árvore inválidas/corrompidas no momento da montagem. Este é o comportamento padrão do sistema de arquivos Btrfs.
**13. space_cache, space_cache=version, nospace_cache e clear_cache
A opção de montagem space_cache** é usada para controlar o cache de espaço livre. O cache de espaço livre é usado para melhorar o desempenho da leitura do espaço livre do grupo de blocos do sistema de arquivos Btrfs na memória (RAM).
O sistema de arquivos Btrfs suporta 2 versões do cache de espaço livre: v1 (padrão) e v2
O mecanismo de cache de espaço livre v2 melhora o desempenho de sistemas de arquivos grandes (tamanho de vários terabytes).
Você pode usar a opção de montagem space_cache=v1 para definir a v1 do cache de espaço livre e a opção de montagem space_cache=v2 para definir a v2 do cache de espaço livre.
A opção de montagem clear_cache é usada para limpar o cache de espaço livre.
Quando o cache de espaço livre v2 é criado, o cache deve ser limpo para criar um cache de espaço livre v1 .
Portanto, para usar o cache de espaço livre v1 após a criação do cache de espaço livre v2 , as opções de montagem clear_cache e space_cache=v1 devem ser combinadas: clear_cache,space_cache=v1
A opção de montagem nospace_cache é usada para desabilitar o cache de espaço livre.
Para desabilitar o cache de espaço livre após a criação do cache v1 ou v2 , as opções de montagem nospace_cache e clear_cache devem ser combinadas: clear_cache,nosapce_cache
**14. skip_balance
Por padrão, a operação de balanceamento interrompida/pausada de um sistema de arquivos Btrfs de vários dispositivos ou RAID Btrfs será retomada automaticamente assim que o sistema de arquivos Btrfs for montado. Para desabilitar a retomada automática da operação de equilíbrio interrompido/pausado em um sistema de arquivos Btrfs de vários dispositivos ou RAID Btrfs, você pode usar a opção de montagem skip_balance .**
**15. datacow e nodatacow
A opção datacow** mount habilita o recurso Copy-on-Write (CoW) do sistema de arquivos Btrfs. É o comportamento padrão.
Se você deseja desabilitar o recurso Copy-on-Write (CoW) do sistema de arquivos Btrfs para os arquivos recém-criados, monte o sistema de arquivos Btrfs com a opção de montagem nodatacow .
**16. datasum e nodatasum
A opção datasum** mount habilita a soma de verificação de dados para arquivos recém-criados do sistema de arquivos Btrfs. Este é o comportamento padrão.
Se você não quiser que o sistema de arquivos Btrfs faça a soma de verificação dos dados dos arquivos recém-criados, monte o sistema de arquivos Btrfs com a opção de montagem nodatasum .
Perfis Btrfs
Um perfil Btrfs é usado para informar ao sistema de arquivos Btrfs quantas cópias dos dados/metadados devem ser mantidas e quais níveis de RAID devem ser usados para os dados/metadados. O sistema de arquivos Btrfs contém muitos perfis. Entendê-los o ajudará a configurar um RAID Btrfs da maneira que você deseja.
Os perfis Btrfs disponíveis são os seguintes:
single : Se o perfil único for usado para os dados/metadados, apenas uma cópia dos dados/metadados será armazenada no sistema de arquivos, mesmo se você adicionar vários dispositivos de armazenamento ao sistema de arquivos. Assim, 100% do espaço em disco de cada um dos dispositivos de armazenamento adicionados ao sistema de arquivos pode ser utilizado.
dup : Se o perfil dup for usado para os dados/metadados, cada um dos dispositivos de armazenamento adicionados ao sistema de arquivos manterá duas cópias dos dados/metadados. Assim, 50% do espaço em disco de cada um dos dispositivos de armazenamento adicionados ao sistema de arquivos pode ser utilizado.
raid0 : No perfil raid0 , os dados/metadados serão divididos igualmente em todos os dispositivos de armazenamento adicionados ao sistema de arquivos. Nesta configuração, não haverá dados/metadados redundantes (duplicados). Assim, 100% do espaço em disco de cada um dos dispositivos de armazenamento adicionados ao sistema de arquivos pode ser usado. Se, em qualquer caso, um dos dispositivos de armazenamento falhar, todo o sistema de arquivos será corrompido. Você precisará de pelo menos dois dispositivos de armazenamento para configurar o sistema de arquivos Btrfs no perfil raid0 .
raid1 : No perfil raid1 , duas cópias dos dados/metadados serão armazenadas nos dispositivos de armazenamento adicionados ao sistema de arquivos. Nesta configuração, a matriz RAID pode sobreviver a uma falha de unidade. Mas você pode usar apenas 50% do espaço total em disco. Você precisará de pelo menos dois dispositivos de armazenamento para configurar o sistema de arquivos Btrfs no perfil raid1 .
raid1c3 : No perfil raid1c3 , três cópias dos dados/metadados serão armazenadas nos dispositivos de armazenamento adicionados ao sistema de arquivos. Nesta configuração, a matriz RAID pode sobreviver a duas falhas de unidade, mas você pode usar apenas 33% do espaço total em disco. Você precisará de pelo menos três dispositivos de armazenamento para configurar o sistema de arquivos Btrfs no perfil raid1c3 .
raid1c4 : No perfil raid1c4 , quatro cópias dos dados/metadados serão armazenadas nos dispositivos de armazenamento adicionados ao sistema de arquivos. Nesta configuração, a matriz RAID pode sobreviver a três falhas de unidade, mas você pode usar apenas 25% do espaço total em disco. Você precisará de pelo menos quatro dispositivos de armazenamento para configurar o sistema de arquivos Btrfs no perfil raid1c4 .
raid10 : No perfil raid10 , duas cópias dos dados/metadados serão armazenadas nos dispositivos de armazenamento adicionados ao sistema de arquivos, como no perfil raid1 . Além disso, os dados/metadados serão divididos entre os dispositivos de armazenamento, como no perfil raid0 .
O perfil raid10 é um híbrido dos perfis raid1 e raid0 . Alguns dos dispositivos de armazenamento formam arrays raid1 e alguns desses arrays raid1 são usados para formar um array raid0 . Em uma configuração raid10 , o sistema de arquivos pode sobreviver a uma única falha de unidade em cada uma das matrizes raid1 .
Você pode usar 50% do espaço total em disco na configuração raid10 . Você precisará de pelo menos quatro dispositivos de armazenamento para configurar o sistema de arquivos Btrfs no perfil raid10 .
raid5 : No perfil raid5 , uma cópia dos dados/metadados será dividida entre os dispositivos de armazenamento. Uma única paridade será calculada e distribuída entre os dispositivos de armazenamento do array RAID.
Em uma configuração raid5 , o sistema de arquivos pode sobreviver a uma única falha de unidade. Se uma unidade falhar, você pode adicionar uma nova unidade ao sistema de arquivos e os dados perdidos serão calculados a partir da paridade distribuída das unidades em execução.
Você pode usar 1 00x(N-1)/N % do total de espaços em disco na configuração raid5 . Aqui, N é o número de dispositivos de armazenamento adicionados ao sistema de arquivos. Você precisará de pelo menos três dispositivos de armazenamento para configurar o sistema de arquivos Btrfs no perfil raid5 .
raid6 : No perfil raid6 , uma cópia dos dados/metadados será dividida entre os dispositivos de armazenamento. Duas paridades serão calculadas e distribuídas entre os dispositivos de armazenamento do array RAID.
Em uma configuração raid6 , o sistema de arquivos pode sobreviver a duas falhas de unidade ao mesmo tempo. Se uma unidade falhar, você poderá adicionar uma nova unidade ao sistema de arquivos e os dados perdidos serão calculados a partir das duas paridades distribuídas das unidades em execução.
Você pode usar 100x(N-2)/N % do espaço total em disco na configuração raid6 . Aqui, N é o número de dispositivos de armazenamento adicionados ao sistema de arquivos. Você precisará de pelo menos quatro dispositivos de armazenamento para configurar o sistema de arquivos Btrfs no perfil raid6 .
-
@ 3c7dc2c5:805642a8
2025-04-16 20:30:54🧠Quote(s) of the week:
'Let me understand…
I saved 30% of my income in Bitcoin over the last five years at an average price of $30,000. I now have 4.25 years of my income in savings.
Within 5 years, bitcoin goes to $500,000. I now have 25 years of my income in savings. I stop saving at this point and simply live off 100% of my income, avoiding selling any Bitcoin.
Within 15 years, Bitcoin goes to $15,000,000. I now have 750 years of my income in savings. I retire and live on >10x my yearly income for the rest of my life, and pass on generational wealth to my children.
Let me understand… why you didn’t listen to the maxis.' - Bit Paine
🧡Bitcoin news🧡
https://i.ibb.co/1fYbX77F/Go-R7-ZJu-Ww-AA0-Xy-Q.jpg
On the 7th of April:
➡️'Bitcoin has retraced to the 350DMA at ~$76,000! Historically, one of the strongest levels of support for Bitcoin during bull cycles...' - Bitcoin Magazine Pro
➡️ 'Tuttle just filed for a first-of-its-kind ETF: a Double Short MicroStrategy ETF. It aims to profit by shorting both the 2x long ($MSTU) and 2x short ($MSTZ) MSTR ETFs, betting on their decay from daily resets.' - Bitcoin News
➡️3$ billion community bank Union Savings discloses first Bitcoin exposure.
➡️The Rational Root: Bitcoin would have to fall below $64K by next week for the spiral chart to cross the 2021 cycle's first peak (~$64K on Apr 13) Well, that didn't happen. So for now the chart is still valid.
Meanwhile, PlanB was only off by about $320k so far for his April price prediction. Yikes! (I have to admit I fully bought into three S2F models when he came out with it back in 2018)
Personally, I am not fixed on the short-term price, listening to any crypto influencer's "prediction" is like believing in Santa Claus. (Almost) all TA is wrong, very little is useful in the end, and nobody knows shit..including myself.
➡️WHITE HOUSE: “The reserve function of the dollar has caused persistent currency distortions” We’re moving toward a global, distributed, neutral reserve asset for all. You have never needed Bitcoin more than at this moment.
https://i.ibb.co/KckFJTJh/Gn9ae9-XQAEi-1-V.jpg
On the 8th of April:
➡️'Bitcoin's hashrate surpassed 1 zetahash for the first time earlier this week. This means that, in aggregate, miners around the world produced 10^21 hashes per second for some time. 1 sextillion hashes. 1,000,000,000,000,000,000,000.' -TFTC
➡️'Strategy paused Bitcoin buys last week and clarified that shareholders don’t own its BTC. Not your keys, not your coins.' -TFCT Which isn't really news. Common sense: holding exposure, not ownership. "We may be required to sell bitcoin to satisfy our financial obligations, and we may be required to make such sales at prices below our cost basis or that are otherwise unfavorable."
➡️BlackRock expands Bitcoin custody beyond Coinbase. SEC filings reveal Anchorage Digital will safeguard a portion of BTC for BlackRock’s $45B iShares Bitcoin Trust. BlackRock cites the move as part of its “ongoing risk management” and growing presence in digital assets.
➡️Phoenix Wallet is back in the USA. Why are they back?
'We welcome the "Ending Regulation By Prosecution" memo by the US DAG, and the clarity it provides for developers and operators of Bitcoin software. This is consistent with Executive Order 14178 which recognized the importance of "protecting and promoting the ability of individual citizens and private-sector entities alike to [...] develop and deploy software [and] transact with other persons [...] and to maintain self-custody". We are happy to make our products available again in the USA.'
➡️The World Food Program USA now accepts bitcoin! WFP is the world’s largest humanitarian organization and part of the United Nations. Chief Philanthropy Officer says, “Embracing new technologies like cryptocurrency isn’t just a choice—it’s necessary.”
➡️Mastercard partners with Kraken to allow European users to spend Bitcoin at over 150 million merchants worldwide.
On the 9th of April:
➡️VanEck confirms that China and Russia are settling energy trades in Bitcoin. On top of that, the $115 billion VanEck stated on President Trump's tariffs the following: "Bitcoin is evolving from a speculative asset into a functional monetary tool—particularly in economies looking to bypass the dollar and reduce exposure to U.S.-led financial systems."
Meanwhile on the same day...
➡️The United States Secretary of the Treasury Scott Bessent just ended his speech this morning by saying, “We will take a close look at regulatory impediments to the blockchain, stablecoins, and new payment systems”
➡️Pakistan plans to allocate part of its surplus electricity to Bitcoin mining, Reuters reports.
➡️'In the Swedish Parliament: “No plans for a national Bitcoin reserve – that wouldn’t be wise. We will focus on safe assets that can help us in times of crisis.” A “safe” asset—or an asset to control? Bitcoin is neutral, borderless, and unconfiscatable. It’s the hedge modern nations need.' - BT-Chick
Watch the video here
What are safe assets? Does the S&P have more volatility? US treasuries? haha How can something be more liquid than Bitcoin which trades 24/7/365 on a global scale? What is "safe" is keywords for centralized and controlled. I am not surprised though, they are one of the most conservative countries in the world, HFSP! Tack!
On a side note, Christian Ander on X: "Meeting with an MP on Monday to push the idea of a Swedish Bitcoin reserve. Interest is growing across parties—but still a "no" for now. This has never been discussed this much in Parliament. Clear trend: younger MPs are driving it, and older ones blocking it. Vote accordingly."
➡️The world’s largest credit ratings agency, S&P Global Ratings says, ‘We are focused on Bitcoin. We are focused on its characteristics as an alternative form of money, and the fact it’s decentralized and geopolitically neutral. We are starting to see adoption’ - Reuters Business
➡️Laurastacksats gave a lesson about Bitcoin to an economics class at the University of Bologna, in Italy: the oldest university in the world.
➡️ On this day, Bitcoin accumulation addresses received 48,575 BTC, the largest single-day inflow since February 2022, per CryptoQuant.
On the 10th of April:
➡️'After utterly massive outperformance in the years and decades prior, Warren Buffett's Berkshire Hathaway is about even with simply owning gold since 1998, or about 27 years ago.' - Lyn Alden
https://i.ibb.co/cSqWStcC/Go-I-3-J4-Xg-AATd-Jd.png
if you want to understand what interest rates do to investors, this tweet and graph would be a good immediate transmission on the nature of fake economies. Just be like Warren Buffet, without all the work. Just buy and hold a store of value. Bitcoin!
➡️The $30 billion public company founded by Jack Dorsey, Blocks, just released an open-source dashboard to make Bitcoin more accessible and transparent for corporate treasuries, helping lower the operational barriers for companies looking to add Bitcoin to their balance sheets.
➡️'The S&P 500 is as volatile as Bitcoin now, (and a day later) the S&P 500 is now more volatile than Bitcoin. A 77% standard deviation is NUTS, it's normally 10-15%.' - Eric Balchunas
Stocks merely adopted the volatility. Bitcoin was born in it. No more excuses for TradFi for saying Bitcoin is too volatile.
https://i.ibb.co/1GM2ghtQ/Go-La-Pkd-W8-AAJjz-C.png
For those who think Bitcoin is too volatile.
➡️'One of these things is not like the others. Change in currency supply (updated through 2024): bitcoin vs. global reserve currencies.' -Peter Parker https://i.ibb.co/5QjQ7Rf/Go-Mblov-Wk-AAz4-ZN.png
➡️S&P Global: “Bitcoin holdings may provide a hedge against long-term debasement of fiat currency through inflation, due to bitcoin's finite supply. Its value may also be driven by geopolitical factors if its security and decentralized nature lead to its increasing adoption as a reserve asset.”
➡️Parker Lewis: With or without Bessent, the Fed is functionally leveraging the US financial system by draining the system of dollar liquidity. Taking out dollars doesn't make the debt go away. Eventually, it breaks and the Fed will have to print even more money. It goes on and on until...Bitcoin.
https://i.ibb.co/MDNt07WS/Go-MV-Ho-WYAASy-M4.png
➡️Florida's House Bill 487 unanimously passed the House Insurance and Banking Subcommittee, proposing to allow the investment of up to 10% of key public funds in Bitcoin. The bill must now clear three more committees before reaching the full House and Senate for a vote.
➡️US investors are increasingly buying Bitcoin as a hedge against a weakening dollar, reflecting broader concerns about capital exodus from US financial markets, per 10x Research. "it remains premature to adopt a bullish stance."
On the 11th of April:
➡️Pakistan plans to leverage part of its 10,000 megawatts in surplus electricity for Bitcoin mining, per News Desk.
➡️Arizona PASSES Bitcoin Mining Rights Bill! The bill protects anyone running a node or mining digital assets from zoning or usage bans. Voted 17 - 12 in favor!
➡️'Former UK Prime Minister Liz Truss says Bitcoin is “a tool for taking power away from government.” “The bureaucracy knows perfectly well that it is an antidote to their power which is why they hate it.” - Simply Bitcoin
On the 12th of April:
➡️The White House official says. The U.S. may tap gold reserves to buy Bitcoin. If there is any gold in reserve of course! And this is only one senior White House official hinting...
On the 13th of April:
https://i.ibb.co/spBGXChM/Go-Zi7-Ok-XIAAo-B6.jpg
➡️Bitcoin outperforms the NASDAQ in every single timeframe. Bear in mind, that the NASDAQ outperforms the S&P 500, Dow Jones, and Gold. Outperforming short-term in a correction is impressive. Outperforming long-term is simply expected. In the end, everything is going to zero against Bitcoin.
➡️'Trump’s exemption of phones, laptops, and chips from his 145% China tariffs spares HS code 8471, which covers Bitcoin miners. This is a major win for US Bitcoin mining companies, who were staring down crippling price hikes on new rigs.' -Bitcoin News
➡️'The Bitcoin Network just broke ONE SEXTILLION HASHES (1k EH/s) for the first time in history!! 1,000,000,000,000,000,000,000 (one thousand million million million)
https://i.ibb.co/yFd0mJ0M/Gob-O6g-DWMAAj-RJq.jpg
FOR COMPARISON: - There are 1 sextillion grains of sand on Earth. - You could fit 615 earths in a flat layer with an area of one sextillion square centimeters. - There are about 6 sextillion cups of water in all the oceans of the world.
Bitcoin mining power is f* INSANE!' - CarlBMenger
On the 14th of April:
➡️Strategy has acquired 3,459 BTC for ~$285.8 million at ~$82,618 per Bitcoin and has achieved a BTC Yield of 11.4% YTD 2025. As of 4/13/2025, Strategy holds 531,644 Bitcoin acquired for ~$35.92 billion at ~$67,556 per bitcoin.
➡️On the same day, Japanese public company Metaplanet buys 319 Bitcoin for $26.3 million.
➡️'Tether will deploy its existing and future Bitcoin hashrate to OCEAN, the mining pool launched by Bitcoin Core developer Luke Dashjr. Tether says supporting decentralized mining is key to protecting Bitcoin’s long-term integrity.' - Bitcoin News
➡️Publicly traded HK Asia Holdings bought 10 Bitcoin worth $806,671 for its balance sheet.
➡️Public companies added 95,431 BTC to their balance sheets in Q1 2025. 12 new firms joined. Holdings now total 688K BTC worth $57B. - Bitwise
https://i.ibb.co/DPmshn5H/Goh-ONkl-X0-AAp-OVe.jpg
💸Traditional Finance / Macro:
On the 7th of April:
👉🏽The Hang Seng just closed at 19,828, down 3,021 points or 13.2%, officially entering a bear market, down 20% from its March peak. In China, over 2,000 stocks hit the limit down, and the CSI 1000 futures plunged 10%, also hitting its trading halt limit.
On the 8th of April:
👉🏽Apple flies in 5 planes full of iPhones to avoid US tariffs.
👉🏽'THE S&P 500 OFFICIALLY ERASES +4.5% GAIN AND TURNS RED ON THE DAY. $2.3 TRILLION erased over the last 3 hours. On a point basis, the S&P 500 just posted its largest intraday reversal in history, even larger than 2020, 2008, and 2001. You have just witnessed history.' -TKL
On the 10th of April:
👉🏽The amount of SPY calls increased by over 10x literally 10 min before the announcement. It's very obvious that Trump's "now is a good time to buy" tweet was a way for insider traders to have plausible deniability.
https://i.ibb.co/TxpKMrbk/Go-IB-P8-XYAEp-YV5.png
Explanation: SPY is a way to buy/sell the S&P 500. When you buy a SPY 504 call, it gives you the right (for a fee) to buy a stock of SPY from someone at $504 at any time If it goes up to 554, you make (50 dollars - the fee).
Just so non-traders really understand what happened here: Right before the S&P 500 (SPY) suddenly spiked, someone bought a huge number of call options — bets that the index would go up that same day. These were zero-day options, meaning they expire worthless by the end of the day unless SPY rises quickly. At the time, they were almost worthless. Then, SPY shot up. Those dirt-cheap options exploded in value. A $100K bet turned into $21 million in minutes. That green spike before the jump is not luck. It’s foreknowledge. Someone knew exactly what was about to happen.
🏦Banks:
👉🏽 no news
🌎Macro/Geopolitics:
The current state of Macro & Geopolitics can be summed up like this: Everything about current market dynamics is just ‘Madness!’ Economic policy uncertainty is TWICE the level during the Pandemic.
https://i.ibb.co/SXxTRtMt/Go-Vss-Sq-Wg-AEZAP4.jpg
On the 7th of April:
👉🏽A great post by Ray Dalio on X says tariffs are just the start. In the end, it's about a breakdown of the economic/monetary order (excessive global debt) & the global geopolitical order (US vs China). Basically, Trump is forcing the Fourth Turning through.
https://x.com/RayDalio/status/1909296189473693729 https://i.ibb.co/d0JqLqX9/Go-AO57n-W0-AADosd.jpg
I would say we are at stage 13 - 14.
Tariffs are a symptom of bigger problems. Don’t let arguments about tariffs distract us from solving the bigger problems. Also, governments are dysfunctional and life is hard. It’s the controlled demolition of a dying global system built on cheap Chinese labor, Wall Street debt games, and Washington sellouts. Ray sees the Big Cycle turning.
1) The global debt engine is seizing up. 2) The dollar is cornered by its own inflation. 3) The supply chain is a foreign hostage situation. 4) And the (U.S.) middle class got hollowed out so Davos could cash in.
To summarize: - Tariffs are a symptom, not the core issue. - Economic: Unsustainable debt, trade imbalances. - Political: Inequality fuels instability. - Geopolitical: Shift to a multipolar world. - Natural disasters: More frequent, disruptive. - Tech: AI reshapes economies and politics. - Key takeaway: Forces are linked; study history for future insight.
👉🏽On that same day: China restricts exports of seven rare earth metals to all countries.
👉🏽Lobby scandal: Between 2021 and 2023, NGOs received over €7 billion in support from the European budget. The European Court of Auditors has criticized the lack of transparency in EU funding to NGOs. There is a particular lack of reliable information and insufficient oversight. The European Commission funneled billions of euros to NGOs to promote its own policies and discredit opponents, as now also acknowledged by the European Court of Auditors. With a dubious leading role played by Frans Timmermans and Diederik Samsom.
For the Dutch readers:
https://fd.nl/samenleving/1551598/europese-rekenkamer-kritisch-over-financiering-ngos
👉🏽 'When a university with a $53 billion endowment needs to tap the bond market in this environment, it just tells you just how illiquid their investments really are.' -Mr. Vix Or is it just the game that you need to play? It is just a whole lot easier to do a debt raise than go to all stakeholders to adjust the allocation of the AUM, as all is earmarked, it would be a lengthy process.
https://i.ibb.co/mC0x8gdv/Gn8uzrn-Wk-AEJt6-G.jpg
They tapped the bond market in every prior year and they are rated aaa by ratings agencies. It isn’t just a function of the illiquidity of their investments. They hold about $3 billion that could be liquidated in one day or less (according to their financial statements). The real problem is that a vast majority of an endowment is earmarked for specific purposes—not that it is invested in illiquids.
On the 8th of April:
👉🏽President Trump says "China wants to make a deal, badly, but they don't know how to get it started." He also says that "we have the probability of a great deal" with South Korea after a call with their President.
Scott Bessent, US Treasury: Almost 70 countries have now approached us wanting to help rebalance global trade.
Regarding Bessent, read the following: an excellent thread. 'The Bessent Short' explained, so even you and I can understand it.
thread.exceptional.https://x.com/sethjlevy/status/1909634800136212608
This is a very interesting narrative. If this plays out this thinking was exceptional. Another excellent thread on Bessent: https://x.com/timjcarden/status/1910440389217312784
👉🏽 The People's Bank of China injects a net 102.5 billion yuan in open market operations. Hello, liquidity!
👉🏽There is now a 98% chance of a 25 bps interest rate cut by the June FOMC meeting.
👉🏽The White House says 104% additional tariffs on China went into EFFECT at noon ET today because China has not removed their 34% tariff on the US, per Fox News. US Dollar vs. Chinese Yuan is going vertical, meaning China's currency is depreciating swiftly.
China's beginning currency devaluation is more than just an economic signal—it's a trigger. Historically, when the yuan weakens, capital doesn’t stay put. It escapes. Some of it flows into gold, some into foreign assets—and a meaningful slice finds its way into Bitcoin.
https://i.ibb.co/KpKSLrHd/Go-HRen8-Xo-AAOpi-H.jpg
Regarding the US and China theme above one more interesting stat: 'One shipyard in China made more commercial ships in 2024 than the total number the US has produced since World War II. The destruction of America’s industrial base is a massive national security threat.' - Geiger Capital
Now Europe is going to invest € 800billion in their 'Europe Army'. I am not saying we are getting a World War III, but the dynamics are interesting.
From your perspective, why the above statement from a US perspective is a bad one... Mother Russia is building combat vehicles & munitions at “an unprecedented pace" according to a U.S. commander in Europe. A reinvigorated Russian defense industrial base is rolling out:
-1,500 tanks,
-3,000 armored vehicles,
& -200 Iskander ballistic & cruise missiles this year.
By comparison, the U.S. builds just
-135 tanks/yr and
-0 / no longer produces Bradley Fighting Vehicles.
China now boasts the world’s largest -navy, -army, -air force, and -strategic rocket force. China’s robust maritime industry is primed to build and repair ships at a wartime tempo. In a drawn-out conflict, China would have the clear advantage in building, repairing, & maintaining warships at sea.' Source: https://www.19fortyfive.com/2025/04/russia-and-chinas-military-production-surge-why-the-u-s-military-is-alarmed/
https://i.ibb.co/6G1Z6Nw/Gn-Qc-LVXYAAo-NH6-1.jpg
This is why the tariffs are happening still not sure I agree with the blanket nature of them. It sounds like the US does not understand the macro picture very well and is very overconfident. But who am I to judge?
On the 9th of April:
👉🏽'Oil prices fall below $57 for the first time since February 2021 as markets price in a global recession.' -TKL
👉🏽The European privacy legislation GDPR is a bureaucratic monster created by the European Commission, which stifles innovation and causes enormous economic damage — especially to SMEs. After 7 years, it’s finally being seriously reviewed. GDPR should never have been introduced.
Brussels finally admits it: GDPR was an economic disaster. No kidding! Here's why this rollback could save Europe's dying tech scene
Here is a great thread:
https://x.com/itsolelehmann/status/1909924693819461993
And for anyone who wants to explore the topic in depth: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3160404
On the 10th of April:
👉🏽'Lots of headlines and rumors about Trump "asking the Supreme Court to fire Powell." Here's what really happened: President Trump asked the Supreme Court to "let him fire top officials at 2 independent agencies," per Bloomberg. This could test whether Trump has the power to fire Fed Chair Powell. Trump did NOT explicitly ask to fire Powell.' - TKL
👉🏽'Gold closed up 3.3% to $3082, the biggest one-day jump since 2023, as traders anticipate much more fiat devaluation. A couple of hours later... And there it is: gold soars to new record high $3165/oz as global trade war turns to a currency war and global devaluation.' -ZeroHedge
Gold prices are flying off the chart. If you can’t tell yet, something is broken. Capital flight to Gold and CHF happening now. Eventually Bitcoin. These are not signs of winning. These are signs of the mother of all debt crises.
On the 11th of April:
👉🏽ZeroHedge: "Absolutely Spectacular Meltdown": The Basis Trade Is Blowing Up, Sparking Multi-Trillion Liquidation Panic:
https://www.zerohedge.com/markets/absolutely-spectacular-meltdown-basis-trade-blowing-sparking-multi-trillion-liquidation
Explanation: The basis trade is when investors buy Treasury bonds and sell their futures, betting on small price gaps to make money. They often borrow a lot to boost profits, but it’s risky. Right now in April 2025, this trade is crashing, like in 2020. Hedge funds are losing big, selling bonds fast, which spikes Treasury yields and shakes markets. It’s a multi-trillion dollar mess, and some fear it could spark a crisis needing a huge Fed bailout, like last time. The chart likely shows yields jumping, signaling this panic.
👉🏽China raises tariffs on U.S. imports to 125%.
Here’s the real question, who gives up first? 1. President Trump 2. China 3. Bond market At this rate, the 10Y Note Yield will be at 5% next week. Inevitably, one of these 3 factors has to give very soon as this is unsustainable. Anyway... https://i.ibb.co/VYXByy2S/Go-ODsv-OWIAAu-M9v.jpg
👉🏽UK millionaires are fleeing in record numbers. In 2024, the UK ranked second only to China in wealth exodus – ahead of even India. People vote with their feet, and it will happen in Europe, and it is concerning.
Great thread: https://x.com/thealepalombo/status/1910327100286115952
👉🏽US 10Y rises to 4.48%, the largest single weekly increase since 2001. U.S. 30-year treasury yields rise to 4.95%, the weekly increase is the biggest since 1982.
On the 11th of April:
👉🏽European Central Bank President Christine Lagarde: ECB is a ready-to-use instrument it has if needed!
On the same day, FED's Kashkari: The Fed has a tool to provide more liquidity. The Fed is reportedly "absolutely" ready to stabilize the market if needed, per Financial Times. Never discount the power of the bond market or the REPO market.
Coughing and clearing my throat for the people in the back: more liquidity, debt, printing money!
James Lavish: "Choose your phrase for translation:
“All roads lead to inflation.”
“Nothing stops this train.”
“The Fed will print again.”
👉🏽'March PPI inflation FALLS to 2.7%, below expectations of 3.3%. Core PPI inflation FALLS to 3.3%, below expectations of 3.6%. We just saw the first month-over-month decline in PPI inflation, down -0.4%, since March 2024. Both CPI and PPI inflation are down SHARPLY.' -TKL
👉🏽The U.S. budget deficit has risen to $1.3 trillion as government debt interest hits record levels. Data released by the Treasury Department on Thursday showed a deficit of $1.307 trillion for the first six months of the 2025 fiscal year, covering the period from October to March. This was the second-highest fiscal year deficit the U.S. has ever seen, with only the $1.706 trillion deficit in the first half of the 2021 fiscal year being larger.
On the 12th of April: 👉🏽M2 Money Supply going parabolic right now. Bitcoin is going parabolic soon. https://i.ibb.co/FL0W19kB/Go-VLj-Dv-Xk-AAol-Dt.jpg
BTC has tracked M2's movements 80% of the time for the past several years.
👉🏽The US publishes reciprocal tariff exclusions for computers, smartphones, and chip-making equipment. TKL: "Let's put the tariff exemptions into perspective: The US imports approximately $100 billion of computers, smartphones, and chip-making equipment from China PER YEAR. A total of $439 billion of goods were imported from China into the US in 2024. This means ~23% of ALL Chinese imports coming to the US are now exempt from "reciprocal tariffs." This is a massive U-Turn in tariff policy."
The bond market is Trump's #1 priority, and everyone knows it now.
Oh fun note, 2 minutes before the close on Friday someone bought $850,000 worth of SPY 554 calls expiring Monday. This morning the US released tariff exclusions...fascinating innit?
👉🏽If said it before and will say it again. It doesn't matter if the U.S. has a red or blue president. The US government has spent $154 billion more in 2025 than it did over the same period in 2024. Unless treasury yields drop, and fast, no amount of DOGE cutting will stop this from spiraling out of control. https://i.ibb.co/WNVJNxqh/Go-VYumq-Xw-AAod-Sv.jpg
👉🏽RAY DALIO ON DOMESTIC & WORLD ORDER “I think that right now, we are at a decision-making point and very close to a recession. I'm worried about something worse than a recession if this isn't handled well. A recession is two negative quarters of GDP, and whether it goes slightly there, we always have those things. We have something that's much more profound. We have a breakdown of the monetary order. We are going to change the monetary order because we cannot spend the amounts of money.
So, we have that problem. And when we talk about the dollar, and we talk about tariffs, we have that. We are having profound changes in our domestic order, and how ruling is existing, and we're having profound changes in the world order. Such times are very much like the 1930s.
I've studied history, and this repeats over and over again. So, if you take tariffs, if you take debt, if you take the rising power challenging existing power, if you take those factors and look at the factors that those changes in the orders, the systems, are very, very disruptive. How that's handled could produce something much worse than a recession…” - NBCNews
Yes, Bitcoin is the new monetary order, and civilizational infrastructure. Got some Bitcoin?
On the 14th of April:
👉🏽'Global net gold purchases by central banks hit 24 tonnes in February, the most since November 2024. This marks the 20th month of net buying over the last 21 months. Central banks are now on track for their 16th consecutive year of net purchases, according to the World Gold Council. Over the last 3 years, world central banks have acquired a massive 3,176 tonnes of gold. Central banks are buying gold like we are in a crisis.' -TKL
https://i.ibb.co/vvsx4qv9/Goh-TQ-n-WYAAm-6-I.jpg
🎁If you have made it this far I would like to give you a little gift, well in this case two gifts:
In April 2023, Tuur Demeester of Adamant Research published what has become another legendary entry in his line of Bitcoin bear market reports dating back to 2012. These pages aged like wine—as important today as they were 2 years ago. Download it here:
https://www.unchained.com/how-to-position-bitcoin-boom
Lyn Alden of Lyn Alden Investment Strategy explains the connection between the capital and financial imbalances the U.S. has with the rest of the world and its trade imbalances which are under so much scrutiny by the current U.S. administration. Alden argues that turbulence in markets, particularly U.S. assets, could continue, and warns listeners not to be exposed beyond their risk limits at a juncture that could be a historic time for markets and the global economy. Recorded April 10, 2025.
https://www.youtube.com/watch?v=TZN_eL_wubQ
Credit: I have used multiple sources!
My savings account: Bitcoin The tool I recommend for setting up a Bitcoin savings plan: PocketBitcoin especially suited for beginners or people who want to invest in Bitcoin with an automated investment plan once a week or monthly.
Use the code SE3997
Get your Bitcoin out of exchanges. Save them on a hardware wallet, run your own node...be your own bank. Not your keys, not your coins. It's that simple. ⠀ ⠀
⠀⠀ ⠀ ⠀⠀⠀
Do you think this post is helpful to you?
If so, please share it and support my work with a zap.
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃
⭐ Many thanks⭐
Felipe - Bitcoin Friday!
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃
-
@ 9063ef6b:fd1e9a09
2025-04-16 20:20:39Bitcoin is more than just a digital currency. It’s a technological revolution built on a unique set of properties that distinguish it from all other financial systems—past and present. From its decentralized architecture to its digitally verifiable scarcity, Bitcoin represents a fundamental shift in how we store and transfer value.
A Truly Decentralized Network
As of April 2025, the Bitcoin network comprises approximately 62,558 reachable nodes globally. The United States leads with 13,791 nodes (29%), followed by Germany with 6,418 nodes (13.5%), and Canada with 2,580 nodes (5.43%). bitnodes
This distributed structure is central to Bitcoin’s strength. No single entity can control the network, making it robust against censorship, regulation, or centralized failure.
Open Participation at Low Cost
Bitcoin's design allows almost anyone to participate meaningfully in the network. Thanks to its small block size and streamlined protocol, running a full node is technically and financially accessible. Even a Raspberry Pi or a basic PC is sufficient to synchronize and validate the blockchain.
However, any significant increase in block size could jeopardize this accessibility. More storage and bandwidth requirements would shift participation toward centralized data centers and cloud infrastructure—threatening Bitcoin’s decentralized ethos. This is why the community continues to fiercely debate such protocol changes.
Decentralized Governance
Bitcoin has no CEO, board, or headquarters. Its governance model is decentralized, relying on consensus among various stakeholders, including miners, developers, node operators, and increasingly, institutional participants.
Miners signal support for changes by choosing which version of the Bitcoin software to run when mining new blocks. However, full node operators ultimately enforce the network’s rules by validating blocks and transactions. If miners adopt a change that is not accepted by the majority of full nodes, that change will be rejected and the blocks considered invalid—effectively vetoing the proposal.
This "dual-power structure" ensures that changes to the network only happen through widespread consensus—a system that has proven resilient to internal disagreements and external pressures.
Resilient by Design
Bitcoin's decentralized nature gives it a level of geopolitical and technical resilience unmatched by any traditional financial system. A notable case is the 2021 mining ban in China. While initially disruptive, the network quickly recovered as miners relocated, ultimately improving decentralization.
This event underlined Bitcoin's ability to withstand regulatory attacks and misinformation (FUD—Fear, Uncertainty, Doubt), cementing its credibility as a global, censorship-resistant network.
Self-Sovereign Communication
Bitcoin enables peer-to-peer transactions across borders without intermediaries. There’s no bank, payment processor, or centralized authority required. This feature is not only technically efficient but also politically profound—it empowers individuals globally to transact freely and securely.
Absolute Scarcity
Bitcoin is the first asset in history with a mathematically verifiable, fixed supply: 21 million coins. This cap is hard-coded into its protocol and enforced by every full node. At the atomic level, Bitcoin is measured in satoshis (sats), with a total cap of approximately 2.1 quadrillion sats.
This transparency contrasts with assets like gold, whose total supply is estimated and potentially (through third parties on paper) expandable. Moreover, unlike fiat currencies, which can be inflated through central bank policy, Bitcoin is immune to such manipulation. This makes it a powerful hedge against monetary debasement.
Anchored in Energy and Time
Bitcoin's security relies on proof-of-work, a consensus algorithm that requires real-world energy and computation. This “work” ensures that network participants must invest time and electricity to mine new blocks.
This process incentivizes continual improvement in hardware and energy sourcing—helping decentralize mining geographically and economically. In contrast, alternative systems like proof-of-stake tend to favor wealth concentration by design, as influence is determined by how many tokens a participant holds.
Censorship-Resistant
The Bitcoin network itself is inherently censorship-resistant. As a decentralized system, Bitcoin transactions consist of mere text and numerical data, making it impossible to censor the underlying protocol.
However, centralized exchanges and trading platforms can be subject to censorship through regional regulations or government pressure, potentially limiting access to Bitcoin.
Decentralized exchanges and peer-to-peer marketplaces offer alternative solutions, enabling users to buy and sell Bitcoins without relying on intermediaries that can be censored or shut down.
High Security
The Bitcoin blockchain is secured through a decentralized network of thousands of nodes worldwide, which constantly verify its integrity, making it highly resistant to hacking. To add a new block of bundled transactions, miners compete to solve complex mathematical problems generated by Bitcoin's cryptography. Once a miner solves the problem, the proposed block is broadcast to the network, where each node verifies its validity. Consensus is achieved when a majority of nodes agree on the block's validity, at which point the Bitcoin blockchain is updated accordingly, ensuring the network's decentralized and trustless nature.
Manipulation of the Bitcoin network is virtually impossible due to its decentralized and robust architecture. The blockchain's chronological and immutable design prevents the deletion or alteration of previously validated blocks, ensuring the integrity of the network.
To successfully attack the Bitcoin network, an individual or organization would need to control a majority of the network's computing power, also known as a 51% attack. However, the sheer size of the Bitcoin network and the competitive nature of the proof-of-work consensus mechanism make it extremely difficult to acquire and sustain the necessary computational power. Even if an attacker were to achieve this, they could potentially execute double spends and censor transactions. Nevertheless, the transparent nature of the blockchain would quickly reveal the attack, allowing the Bitcoin network to respond and neutralize it. By invalidating the first block of the malicious chain, all subsequent blocks would also become invalid, rendering the attack futile and resulting in significant financial losses for the attacker.
One potential source of uncertainty arises from changes to the Bitcoin code made by developers. While developers can modify the software, they cannot unilaterally enforce changes to the Bitcoin protocol, as all users have the freedom to choose which version they consider valid. Attempts to alter Bitcoin's fundamental principles have historically resulted in hard forks, which have ultimately had negligible impact (e.g., BSV, BCH). The Bitcoin community has consistently rejected new ideas that compromise decentralization in favor of scalability, refusing to adopt the resulting blockchains as the legitimate version. This decentralized governance model ensures that changes to the protocol are subject to broad consensus, protecting the integrity and trustworthiness of the Bitcoin network.
Another source of uncertainty in the future could be quantum computers. The topic is slowly gaining momentum in the community and is being discussed.
My attempt to write an article with Yakihonne. Simple editor with the most necessary formatting. Technically it worked quite well so far.
Some properties are listed in the article. Which properties are missing?
-
@ b8ca3d82:e28bd6b5
2025-04-15 03:54:50Your body has always known the way — long before your mind tried to make sense of it. \ \ You can spend all of your time trying to get the mindset just perfectly right, repeating affirmations to yourself in the mirror every single day — and having it all make perfectly, logical sense in your head. - and don't get me wrong; I'm not saying mantras don't work, they can be beautiful tools. They just work best as support — like gentle reminders, little whispers to anchor you while the real transformation happens on a much deeper level… in the body.
Oftentimes when we are so caught up with the web of our minds and the weaving of our thoughts, we tend to distance ourselves from what's happening in the body. Here's the truth though. If it hasn't fully landed in the body yet — it’s just a story, and it will stay just that. A sweet, well-crafted story you keep telling yourself, hoping one day it’ll finally feel true. \ \ Your mind may write the story, but your body is where it becomes truth.
If you want your belief systems to truly shift — to move from something you know into something you live — you have to go into the body. As comforting (and honestly addictive) as it might feel to stay in the mind, rooting your behavior back to your childhood trauma, repeating the mantras and reasoning your way into your self-worth… it’ll only take you so far.
### Because your embodiment doesn’t live in your thoughts — it lives in your cells.\
\ It lives in the way that you carry yourself. The way you hold yourself.
The way your shoulders soften as you exhale the pressure to be anyone else than who you truly are.
The way your gaze softens and your heart opens as you sway through the world.
The way you turn every action into ceremony, every word you speak into prayer. \ \ Not by what you are doing, but by who you are being. -- And being happens in the body.
Here’s some context so it may land a little more deeply for you: our feminine lives in the body, and our masculine lives in the mind. The way to get into our feminine embodiment, our softness, our open-heartedness, and our vulnerability starts with the body — and the mind follows. It begins by making space — soft, spacious room within — to hold every part of you. Even the ones that tremble. Even the ones you’ve learned to silence or send away.
The parts that feel too tender, too much, too messy. The ones you’ve hidden in the corners of your body, hoping no one would notice. Especially those.
Because it’s there, in the quiet ache of what you’ve tried not to feel, that your wholeness waits.
These parts of you don’t need fixing — they need holding. They need breath, warmth, and a body that says, you’re safe here.
This is where embodiment begins. This is where the actual shift happens. Not by becoming someone new — but by gently coming back to your body, softening into what's already there, just a little more each time.
From this space of returning, we open up to the magic we hold within our bodies.
### \ Let this be your invitation — to live from the pulse beneath the story, to start with one breath and to simply ask your body 'what's happening right now?' and be with it.
-
@ fd06f542:8d6d54cd
2025-04-15 02:57:28国内开发者作品展
jumble.social
作品: https://jumble.social/ 其他作品 : Running [ wss://nostr-relay.app ] (free & WoT) 💜⚡️ Building 👨💻: https://github.com/CodyTseng/jumble https://github.com/CodyTseng/nostr-relay-tray https://github.com/CodyTseng/danmakustr https://github.com/CodyTseng/nostr-relay-nestjs https://github.com/CodyTseng/nostr-relay https://github.com/CodyTseng
nostrbook.com
作品: https://nostrbook.com - NostrBridge, 网桥转发 - TaskQ5, 分布式多任务 - NostrHTTP, nostr to http - Postr, 匿名交友,匿名邮局 - nostrclient (Python client) . -nostrbook, (nostrbook.com) 用nostr在线写书 https://www.duozhutuan.com nostrhttp demo https://github.com/duozhutuan/NostrBridge
nostrmo
A nostr dev.
Nostrmo A client support all platform.
Nowser A nostr signing project.
CacheRelay A nostr cache relay peject.
cfrelay A nostr relay base on cloudflare wokers.
A nostr note timing send service. https://sendbox.nostrmo.com/ https://github.com/haorendashu/nostrmo
0xchat
作者: wcat w783@0xchat.com
www.0xchat.com Building for 0xchat
www.0xchat.com Secure Chat built on Nostr App Store: https://apps.apple.com/app/0xchat/id1637607169 TestFlight: https://testflight.apple.com/join/AjdJFBmU Google play: https://play.google.com/store/apps/details?id=com.oxchat.nostr
https://github.com/nostr-zh/awesome-nostr-zh/blob/main/README.md
awesome-nostr-zh
由中文开发者创建的软件、服务、工具和其他资源的集合。
Nostr (Notes and Other Stuff Transmitted by Relays) 是一个简单、开放的协议,用于创建抗审查的全球社交网络。
客户端
- 0xchat - 一个类似于 Telegram/WeChat 的 Nostr 客户端,支持 Android、iOS、macOS、Windows 和 Linux。
#移动端
#聊天
- Flycat - 一个 2000 年代老式风格的网页客户端,支持在 Nostr 上写博客。
#网页端
- Jumble - 一个交互友好的 Nostr 客户端,专注于中继器浏览和发现。
#网页端
- Nostrmo - 一个 Flutter 开发的 Nostr 客户端,支持 Android、iOS、macOS、Windows、Web 和 Linux。
#移动端
#桌面端
中继器
- wss://relay.nostr.moe - Nostr.moe 社区中继 (需要注册)。
#ACG
- wss://nostr-relay.app - 一个用于测试的普通的免费的公共 Nostr 中继器。
中继器实现
- nostr-relay-tray - 一个非开发者也能轻松运行的桌面端 Nostr 中继器,支持 Windows、macOS 和 Linux。
库
- nostr-relay - 一个开发中继器的 TypeScript 框架。
- cashu-dart - 一个用dart语言实现cashu协议的库。
- nostr-dart - 一个用dart语言实现nostr协议的库。
- nostrclient - Python 编写的 Nostr 客户端库。
#Python
#客户端开发
机器人
- 日本語JLPT文法 - 每小时自动发送一条日语文法,包含文法,日文例句及中文翻译。。
工具
- danmakustr - 一款通过 Nostr 实现去中心化的 YouTube 弹幕插件。
#浏览器插件
- nowser - 一个安全的 Nostr 密钥管理和签名应用,支持 iOS 和 Android,支持 NIP-07、NIP-46 和 NIP-55。
#移动端
#签名器
- pigeon - 一个 Nostr 中继器反向代理服务,可以将本地中继器暴露到公共互联网上,已经集成进 nostr-relay-tray。
教程和资源
- 欢迎加入 Nostr, 这是一份快速入门指南
- nostrbook 在线写书平台 - 提供在线写书功能的平台。
#在线写作
#内容创作
贡献指南
欢迎提交 PR 来完善这个列表!请确保您的提交符合以下要求:
- 项目与 Nostr 相关
- 项目由中文开发者开发或中文社区运营
- 保持分类的一致性和清晰性
详细的贡献指南请查看 CONTRIBUTING.md。
许可证
本作品采用 CC0 1.0 通用 许可协议。
- 0xchat - 一个类似于 Telegram/WeChat 的 Nostr 客户端,支持 Android、iOS、macOS、Windows 和 Linux。
-
@ fd06f542:8d6d54cd
2025-04-15 02:38:14排名随机, 列表正在增加中。
Cody Tseng
jumble.social 的作者
https://jumble.social/users/npub1syjmjy0dp62dhccq3g97fr87tngvpvzey08llyt6ul58m2zqpzps9wf6wl
- Running [ wss://nostr-relay.app ] (free & WoT) 💜⚡️
- Building 👨💻:
- https://github.com/CodyTseng/jumble
- https://github.com/CodyTseng/nostr-relay-tray
- https://github.com/CodyTseng/danmakustr
- https://github.com/CodyTseng/nostr-relay-nestjs
- https://github.com/CodyTseng/nostr-relay
- https://github.com/CodyTseng
阿甘
- @agan0
- 0xchat.com
- canidae40@coinos.io
- https://jumble.social/users/npub13zyg3zysfylqc6nwfgj2uvce5rtlck2u50vwtjhpn92wzyusprfsdl2rce
joomaen
- Follows you
- joomaen.com
-
95aebd@wallet.yakihonne.com
-
nobot
- https://joomaen.filegear-sg.me/
- https://jumble.social/users/npub1wlpfd84ymdx2rpvnqht7h2lkq5lazvkaejywrvtchlvn3geulfgqp74qq0
颜值精选官
- wasp@ok0.org
- 专注分享 各类 图片与视频,每日为你带来颜值盛宴,心动不止一点点。欢迎关注,一起发现更多美好!
- https://jumble.social/users/npub1d5ygkef6r0l7w29ek9l9c7hulsvdshms2qh74jp5qpfyad4g6h5s4ap6lz
6svjszwk
- 6svjszwk@ok0.org
- 83vEfErLivtS9to39i73ETeaPkCF5ejQFbExoM5Vc2FDLqSE5Ah6NbqN6JaWPQbMeJh2muDiHPEDjboCVFYkHk4dHitivVi
-
low-time-preference
-
anarcho-capitalism
-
libertarianism
-
bitcoin #monero
- https://jumble.social/users/npub1sxgnpqfyd5vjexj4j5tsgfc826ezyz2ywze3w8jchd0rcshw3k6svjszwk
𝘌𝘷𝘦𝘳𝘺𝘥𝘢𝘺 𝘔𝘰𝘳𝘯𝘪𝘯𝘨 𝘚𝘵𝘢𝘳
- everyday@iris.to
- 虽然现在对某些事情下结论还为时尚早,但是从趋势来看,邪恶抬头已经不可避免。
- 我们要做的就是坚持内心的那一份良知,与邪恶战斗到底。
- 黑暗森林时代,当好小透明。
- bc1q7tuckqhkwf4vgc64rsy3rxy5qy6pmdrgxewcww
- https://jumble.social/users/npub1j2pha2chpr0qsmj2f6w783200upa7dvqnnard7vn9l8tv86m7twqszmnke
nostr_cn_dev
npub1l5r02s4udsr28xypsyx7j9lxchf80ha4z6y6269d0da9frtd2nxsvum9jm@npub.cash
Developed the following products: - NostrBridge, 网桥转发 - TaskQ5, 分布式多任务 - NostrHTTP, nostr to http - Postr, 匿名交友,匿名邮局 - nostrclient (Python client) . -nostrbook, (nostrbook.com) 用nostr在线写书 * https://www.duozhutuan.com nostrhttp demo * https://github.com/duozhutuan/NostrBridge * * https://jumble.social/users/npub1l5r02s4udsr28xypsyx7j9lxchf80ha4z6y6269d0da9frtd2nxsvum9jm *
CXPLAY
- lightning@cxplay.org
- 😉很高兴遇到你, 你可以叫我 CX 或 CXPLAY, 这个名字没有特殊含义, 无需在意.
- ©本账号下所有内容如未经特殊声明均使用 CC BY-NC-SA 4.0 许可协议授权.
- 🌐如果您在 Fediverse 收到本账号的内容则说明您的实例已与 Mostr.pub 或 Momostr.pink Bridge 互联, 您所看到的账号为镜像, 所有账号内容正在跨网传递. 如有必要请检查原始页面.
- 🧑💻正在提供中文本地化(i10n): #Amethyst #Amber #Citrine #Soapbox #Ditto #Alby
- https://cx.ms/
https://jumble.social/users/npub1gd8e0xfkylc7v8c5a6hkpj4gelwwcy99jt90lqjseqjj2t253s2s6ch58h
w
- 0xchat的作者
- 0xchat@getalby.com
- Building for 0xchat
- https://www.0xchat.com/
- https://jumble.social/users/npub10td4yrp6cl9kmjp9x5yd7r8pm96a5j07lk5mtj2kw39qf8frpt8qm9x2wl
Michael
- highman@blink.sv
- Composer Artist | Musician
- 🎹🎼🎤🏸🏝️🐕❤️
- 在這裡可以看到「我看世界」的樣子
- 他是光良
- https://jumble.social/users/npub1kr5vqlelt8l47s2z0l47z4myqg897m04vrnaqks3emwryca3al7sv83ry3
-
@ 866e0139:6a9334e5
2025-04-16 19:57:09Autor: Ulrich Kutschera. Dieser Beitrag wurde mit dem Pareto-Client geschrieben. Sie finden alle Texte der Friedenstaube und weitere Texte zum Thema Frieden hier.**
Vor 200 Jahren - im März 1825 - erklang in London die 1824 in Wien uraufgeführte 9. Symphonie Op. 125-D Moll von Ludwig van Beethoven, womit das geniale Meisterwerk Weltruhm erlangte. Im 4. Satz, nach Schillers "Ode an die Freude" komponiert, singt ein Chor das Europäische Friedensmotto "Alle Menschen werden Brüder".
Als Evolutionsbiologe & Musiker, sowie Mitglied des "European Peace Project" und der "Friedenstaube" habe ich eine Piano-Solo-Kompaktversion von Beethovens "Friedenskomposition" erstellt und professionell aufgenommen. Diese "Joy Phantasy" wird seiher weltweit via Streaming-Platformen, wie Spotify, Amazon Music, YouTube Music usw. verbreitet, siehe:
https://listen.music-hub.com/ujTDrW
Das Musikstück soll mein Motto "Mit Beethoven zum Weltfrieden" zum Ausdruck bringen.
Als Evolutionsforscher werde ich mich noch im Detail zur Frage äußern, ob der Mensch von Natur aus ein "Kriegstier" oder eher friedfertig ist, und wie wir gemeinsam eine "Beethoven'sche" Friedens-Agenda gestalten können.
Ulrich Kutschera ist ein in Deutschland und den USA tätiger Evolutionsbiologe & Musikproduzent.
Webpage: www.evolutionsbiologen.de
LASSEN SIE DER FRIEDENSTAUBE FLÜGEL WACHSEN!
Hier können Sie die Friedenstaube abonnieren und bekommen die Artikel zugesandt. (Vorerst an alle, da wir den Mailversand testen, später ca. drei Mails pro Woche.).
Schon jetzt können Sie uns unterstützen:
- Für 50 CHF/EURO bekommen Sie ein Jahresabo der Friedenstaube.
- Für 120 CHF/EURO bekommen Sie ein Jahresabo und ein T-Shirt/Hoodie mit der Friedenstaube.
- Für 500 CHF/EURO werden Sie Förderer und bekommen ein lebenslanges Abo sowie ein T-Shirt/Hoodie mit der Friedenstaube.
- Ab 1000 CHF werden Sie Genossenschafter der Friedenstaube mit Stimmrecht (und bekommen lebenslanges Abo, T-Shirt/Hoodie).
Für Einzahlungen in CHF (Betreff: Friedenstaube):
Für Einzahlungen in Euro:
Milosz Matuschek
IBAN DE 53710520500000814137
BYLADEM1TST
Sparkasse Traunstein-Trostberg
Betreff: Friedenstaube
Wenn Sie auf anderem Wege beitragen wollen, schreiben Sie die Friedenstaube an: milosz@pareto.space
Sie sind noch nicht auf Nostr and wollen die volle Erfahrung machen (liken, kommentieren etc.)? Zappen können Sie den Autor auch ohne Nostr-Profil! Erstellen Sie sich einen Account auf Start. Weitere Onboarding-Leitfäden gibt es im Pareto-Wiki.
-
@ 3c389c8f:7a2eff7f
2025-04-16 19:05:14Let go of the algorithms and truly discover what it means to explore. Social media used to mean something. Once upon a time, it was a way to stay connected to friends, family, and colleagues. We could share, laugh, and learn. Over time, it has devolved into cheap entertainment at the cost of our privacy. Our relationships have been shoved into a corner in order to make room for "suggested posts" and "for you" content designed to evaluate our attention for advertising purposes. We've lost what it means to truly connect, and we've lost what it means to explore our curiosities.
Enter Nostr. A protocol designed to resist authoritative censorship, just happens to fix a whole lot of other problems, too. By removing the central authority, Nostr offers its users complete control of what we feed our minds. How do we break our algorithm dependency to find better content and better relationships again? We explore and discover:
The Chronological Life.
The existence of time may be debatable but our dependence on our perception of it is not. We live our lives chronologically. Why do our online lives need to be any different? There is no real reason, other than we've just gotten used to being engulfed by whatever the black box wants us to see. When we remove the algorithms, we find that online information flows just as it would in our daily lives. Important events get talked about by many people, over a long period of time. Things of less relevance fade. We see the rhythm of life reflected in our feed. This is an organic human experience transferred to the digital world. We depend on the people we know and the sources we trust to keep us informed about what really matters. We have fun, we move on. Nearly every Nostr social client brings this experience front and center through the traditional follow feed. Many use replies as a way to show you what is worth talking about for more than a hot minute. Its what old social media gave us, then took away. Nostr gives it back. It's not the only way to enjoy Nostr, though, so let's continue.
"The Human Animal Differs From the Lesser Primates in His Passion for Lists"
Who doesn't love lists? (besides maybe to-do lists.) List functionality on Nostr is a powerful way to curate your feeds. You can make lists of artists, vendors, friends, or whatever you want. They can be public or private. You can subscribe to other people's public lists too. Make one to share with your friends. Many clients have list support and management. Amethyst, Nostur, Voyage, and Nostrudel are a few that come to mind. Nostr.band and Listr.lol offer in depth list management. Some clients even support lists for specific notes so that you can curate a feed by topic or aesthetic to share with your friends.
Being John Malcovich.
Everyone has a different view of Nostr. Do you want to see what someone else is seeing? Sign in with any npub to get a different perpective. You might find profiles and content that you didn't know existed before. Some clients integrate variations of this feature right into their apps, so you don't have to log out of your account in order to step through that tiny door.
DV-what? DVM.
Data Vending Machines. These fancy little things are AIs tasked with a simple job: to find content for you. Most of these feeds are free, though some more personalized ones require a small fee. Many DVM services are stand-alone apps, like Vendata and Noogle . These clever Nostr clients will let you do a lot more than just create feeds to browse notes. Explore if you wish. A few social clients have DVMs integrated, too, so if you see "discovery" or similar term on a tab, be sure to check it out.
Relays, Man. Relays.
It's right there in the name. Nostr- notes and other stuff transmitted by RELAY. Specialized relays exist for subjects, news, communities, personal spaces, content creators, cats... there's even a relay where everyone just says "Good Morning" to each other. Find a client that lets you browse a relay's contents, and enjoy the purest form of content discovery on Nostr. Unearthing these relays is getting better and better every day. Right now there are relay browsing capabilities in quite a few clients, like Coracle, Relay Tools, Jumble and Nostur .
The Algo Relay.
Maybe you've been busy and missed a lot. Maybe you are a sane person who rarely uses social media. Hook up with a personalized algorithm relay to catch you up on all the things you've missed. This is skirting the sharp edges of Nostr relay development, so keep in mind that not many implementations yet exist. Algo relay currently aims to bring the feel-good vibe of your chronological feed to an algorithmic feed, freeing up your time but letting you stay up with what 's going on in your social circles.
Trendy Trends.
A few clients, relays, and DVM's have developed various Trending feeds. Catch up on what's popular across a wider view of the Nostr ecosystem. If trends are your thing, be sure to check them out.
Now that you're equipped with the tools to explore Nostr, its time to go discover some great content and find your people. Feed your curiosity.
-
@ fd06f542:8d6d54cd
2025-04-15 01:31:41NIP-15
Nostr Marketplace
draft
optional
Based on Diagon-Alley.
Implemented in NostrMarket and Plebeian Market.
Terms
merchant
- seller of products with NOSTR key-paircustomer
- buyer of products with NOSTR key-pairproduct
- item for sale by themerchant
stall
- list of products controlled bymerchant
(amerchant
can have multiple stalls)marketplace
- clientside software for searchingstalls
and purchasingproducts
Nostr Marketplace Clients
Merchant admin
Where the
merchant
creates, updates and deletesstalls
andproducts
, as well as where they manage sales, payments and communication withcustomers
.The
merchant
admin software can be purely clientside, but forconvenience
and uptime, implementations will likely have a server client listening for NOSTR events.Marketplace
Marketplace
software should be entirely clientside, either as a stand-alone app, or as a purely frontend webpage. Acustomer
subscribes to different merchant NOSTR public keys, and thosemerchants
stalls
andproducts
become listed and searchable. The marketplace client is like any other ecommerce site, with basket and checkout.Marketplaces
may also wish to include acustomer
support area for direct message communication withmerchants
.Merchant
publishing/updating products (event)A merchant can publish these events:
| Kind | | Description | | --------- | ------------------ | --------------------------------------------------------------------------------------------------------------- | |
0
|set_meta
| The merchant description (similar with anynostr
public key). | |30017
|set_stall
| Create or update a stall. | |30018
|set_product
| Create or update a product. | |4
|direct_message
| Communicate with the customer. The messages can be plain-text or JSON. | |5
|delete
| Delete a product or a stall. |Event
30017
: Create or update a stall.Event Content
json { "id": <string, id generated by the merchant. Sequential IDs (`0`, `1`, `2`...) are discouraged>, "name": <string, stall name>, "description": <string (optional), stall description>, "currency": <string, currency used>, "shipping": [ { "id": <string, id of the shipping zone, generated by the merchant>, "name": <string (optional), zone name>, "cost": <float, base cost for shipping. The currency is defined at the stall level>, "regions": [<string, regions included in this zone>] } ] }
Fields that are not self-explanatory: -
shipping
: - an array with possible shipping zones for this stall. - the customer MUST choose exactly one of those shipping zones. - shipping to different zones can have different costs. For some goods (digital for example) the cost can be zero. - theid
is an internal value used by the merchant. This value must be sent back as the customer selection. - each shipping zone contains the base cost for orders made to that shipping zone, but a specific shipping cost per product can also be specified if the shipping cost for that product is higher than what's specified by the base cost.Event Tags
jsonc { "tags": [["d", <string, id of stall]], // other fields... }
- thed
tag is required, its value MUST be the same as the stallid
.Event
30018
: Create or update a productEvent Content
json { "id": <string, id generated by the merchant (sequential ids are discouraged)>, "stall_id": <string, id of the stall to which this product belong to>, "name": <string, product name>, "description": <string (optional), product description>, "images": <[string], array of image URLs, optional>, "currency": <string, currency used>, "price": <float, cost of product>, "quantity": <int or null, available items>, "specs": [ [<string, spec key>, <string, spec value>] ], "shipping": [ { "id": <string, id of the shipping zone (must match one of the zones defined for the stall)>, "cost": <float, extra cost for shipping. The currency is defined at the stall level> } ] }
Fields that are not self-explanatory: -
quantity
can be null in the case of items with unlimited availability, like digital items, or services -specs
: - an optional array of key pair values. It allows for the Customer UI to present product specifications in a structure mode. It also allows comparison between products - eg:[["operating_system", "Android 12.0"], ["screen_size", "6.4 inches"], ["connector_type", "USB Type C"]]
_Open_: better to move `spec` in the `tags` section of the event?
shipping
:- an optional array of extra costs to be used per shipping zone, only for products that require special shipping costs to be added to the base shipping cost defined in the stall
- the
id
should match the id of the shipping zone, as defined in theshipping
field of the stall - to calculate the total cost of shipping for an order, the user will choose a shipping option during checkout, and then the client must consider this costs:
- the
base cost from the stall
for the chosen shipping option - the result of multiplying the product units by the
shipping costs specified in the product
, if any.
- the
Event Tags
jsonc "tags": [ ["d", <string, id of product], ["t", <string (optional), product category], ["t", <string (optional), product category], // other fields... ], ...
- the
d
tag is required, its value MUST be the same as the productid
. - the
t
tag is as searchable tag, it represents different categories that the product can be part of (food
,fruits
). Multiplet
tags can be present.
Checkout events
All checkout events are sent as JSON strings using NIP-04.
The
merchant
and thecustomer
can exchange JSON messages that represent different actions. EachJSON
messageMUST
have atype
field indicating the what the JSON represents. Possible types:| Message Type | Sent By | Description | |--------------|----------|---------------------| | 0 | Customer | New Order | | 1 | Merchant | Payment Request | | 2 | Merchant | Order Status Update |
Step 1:
customer
order (event)The below JSON goes in content of NIP-04.
```json { "id":
, "type": 0, "name": , "address": , "message": , "contact": { "nostr": <32-bytes hex of a pubkey>, "phone": , "email": }, "items": [ { "product_id": , "quantity": } ], "shipping_id": } ```
Open: is
contact.nostr
required?Step 2:
merchant
request payment (event)Sent back from the merchant for payment. Any payment option is valid that the merchant can check.
The below JSON goes in
content
of NIP-04.payment_options
/type
include:url
URL to a payment page, stripe, paypal, btcpayserver, etcbtc
onchain bitcoin addressln
bitcoin lightning invoicelnurl
bitcoin lnurl-pay
json { "id": <string, id of the order>, "type": 1, "message": <string, message to customer, optional>, "payment_options": [ { "type": <string, option type>, "link": <string, url, btc address, ln invoice, etc> }, { "type": <string, option type>, "link": <string, url, btc address, ln invoice, etc> }, { "type": <string, option type>, "link": <string, url, btc address, ln invoice, etc> } ] }
Step 3:
merchant
verify payment/shipped (event)Once payment has been received and processed.
The below JSON goes in
content
of NIP-04.json { "id": <string, id of the order>, "type": 2, "message": <string, message to customer>, "paid": <bool: has received payment>, "shipped": <bool: has been shipped>, }
Customize Marketplace
Create a customized user experience using the
naddr
from NIP-19. The use ofnaddr
enables easy sharing of marketplace events while incorporating a rich set of metadata. This metadata can include relays, merchant profiles, and more. Subsequently, it allows merchants to be grouped into a market, empowering the market creator to configure the marketplace's user interface and user experience, and share that marketplace. This customization can encompass elements such as market name, description, logo, banner, themes, and even color schemes, offering a tailored and unique marketplace experience.Event
30019
: Create or update marketplace UI/UXEvent Content
jsonc { "name": <string (optional), market name>, "about": <string (optional), market description>, "ui": { "picture": <string (optional), market logo image URL>, "banner": <string (optional), market logo banner URL>, "theme": <string (optional), market theme>, "darkMode": <bool, true/false> }, "merchants": [array of pubkeys (optional)], // other fields... }
This event leverages naddr to enable comprehensive customization and sharing of marketplace configurations, fostering a unique and engaging marketplace environment.
Auctions
Event
30020
: Create or update a product sold as an auctionEvent Content:
json { "id": <String, UUID generated by the merchant. Sequential IDs (`0`, `1`, `2`...) are discouraged>, "stall_id": <String, UUID of the stall to which this product belong to>, "name": <String, product name>, "description": <String (optional), product description>, "images": <[String], array of image URLs, optional>, "starting_bid": <int>, "start_date": <int (optional) UNIX timestamp, date the auction started / will start>, "duration": <int, number of seconds the auction will run for, excluding eventual time extensions that might happen>, "specs": [ [<String, spec key>, <String, spec value>] ], "shipping": [ { "id": <String, UUID of the shipping zone. Must match one of the zones defined for the stall>, "cost": <float, extra cost for shipping. The currency is defined at the stall level> } ] }
[!NOTE] Items sold as an auction are very similar in structure to fixed-price items, with some important differences worth noting.
-
The
start_date
can be set to a date in the future if the auction is scheduled to start on that date, or can be omitted if the start date is unknown/hidden. If the start date is not specified, the auction will have to be edited later to set an actual date. -
The auction runs for an initial number of seconds after the
start_date
, specified byduration
.
Event
1021
: Bidjsonc { "content": <int, amount of sats>, "tags": [["e", <event ID of the auction to bid on>]], // other fields... }
Bids are simply events of kind
1021
with acontent
field specifying the amount, in the currency of the auction. Bids must reference an auction.[!NOTE] Auctions can be edited as many times as desired (they are "addressable events") by the author - even after the start_date, but they cannot be edited after they have received the first bid! This is enforced by the fact that bids reference the event ID of the auction (rather than the product UUID), which changes with every new version of the auctioned product. So a bid is always attached to one "version". Editing the auction after a bid would result in the new product losing the bid!
Event
1022
: Bid confirmationEvent Content:
json { "status": <String, "accepted" | "rejected" | "pending" | "winner">, "message": <String (optional)>, "duration_extended": <int (optional), number of seconds> }
Event Tags:
json "tags": [["e" <event ID of the bid being confirmed>], ["e", <event ID of the auction>]],
Bids should be confirmed by the merchant before being considered as valid by other clients. So clients should subscribe to bid confirmation events (kind
1022
) for every auction that they follow, in addition to the actual bids and should check that the pubkey of the bid confirmation matches the pubkey of the merchant (in addition to checking the signature).The
content
field is a JSON which includes at least astatus
.winner
is how the winning bid is replied to after the auction ends and the winning bid is picked by the merchant.The reasons for which a bid can be marked as
rejected
orpending
are up to the merchant's implementation and configuration - they could be anything from basic validation errors (amount too low) to the bidder being blacklisted or to the bidder lacking sufficient trust, which could lead to the bid being marked aspending
until sufficient verification is performed. The difference between the two is thatpending
bids might get approved after additional steps are taken by the bidder, whereasrejected
bids can not be later approved.An additional
message
field can appear in thecontent
JSON to give further context as of why a bid isrejected
orpending
.Another thing that can happen is - if bids happen very close to the end date of the auction - for the merchant to decide to extend the auction duration for a few more minutes. This is done by passing a
duration_extended
field as part of a bid confirmation, which would contain a number of seconds by which the initial duration is extended. So the actual end date of an auction is alwaysstart_date + duration + (SUM(c.duration_extended) FOR c in all confirmations
.Customer support events
Customer support is handled over whatever communication method was specified. If communicating via nostr, NIP-04 is used.
Additional
Standard data models can be found here
-
@ fd06f542:8d6d54cd
2025-04-15 01:27:33NIP-14
Subject tag in Text events
draft
optional
This NIP defines the use of the "subject" tag in text (kind: 1) events. (implemented in more-speech)
json ["subject": <string>]
Browsers often display threaded lists of messages. The contents of the subject tag can be used in such lists, instead of the more ad hoc approach of using the first few words of the message. This is very similar to the way email browsers display lists of incoming emails by subject rather than by contents.
When replying to a message with a subject, clients SHOULD replicate the subject tag. Clients MAY adorn the subject to denote that it is a reply. e.g. by prepending "Re:".
Subjects should generally be shorter than 80 chars. Long subjects will likely be trimmed by clients.
-
@ fd06f542:8d6d54cd
2025-04-15 01:26:59NIP-13
Proof of Work
draft
optional
This NIP defines a way to generate and interpret Proof of Work for nostr notes. Proof of Work (PoW) is a way to add a proof of computational work to a note. This is a bearer proof that all relays and clients can universally validate with a small amount of code. This proof can be used as a means of spam deterrence.
difficulty
is defined to be the number of leading zero bits in theNIP-01
id. For example, an id of000000000e9d97a1ab09fc381030b346cdd7a142ad57e6df0b46dc9bef6c7e2d
has a difficulty of36
with36
leading 0 bits.002f...
is0000 0000 0010 1111...
in binary, which has 10 leading zeroes. Do not forget to count leading zeroes for hex digits <=7
.Mining
To generate PoW for a
NIP-01
note, anonce
tag is used:json {"content": "It's just me mining my own business", "tags": [["nonce", "1", "21"]]}
When mining, the second entry to the nonce tag is updated, and then the id is recalculated (see NIP-01). If the id has the desired number of leading zero bits, the note has been mined. It is recommended to update the
created_at
as well during this process.The third entry to the nonce tag
SHOULD
contain the target difficulty. This allows clients to protect against situations where bulk spammers targeting a lower difficulty get lucky and match a higher difficulty. For example, if you require 40 bits to reply to your thread and see a committed target of 30, you can safely reject it even if the note has 40 bits difficulty. Without a committed target difficulty you could not reject it. Committing to a target difficulty is something all honest miners should be ok with, and clientsMAY
reject a note matching a target difficulty if it is missing a difficulty commitment.Example mined note
json { "id": "000006d8c378af1779d2feebc7603a125d99eca0ccf1085959b307f64e5dd358", "pubkey": "a48380f4cfcc1ad5378294fcac36439770f9c878dd880ffa94bb74ea54a6f243", "created_at": 1651794653, "kind": 1, "tags": [ ["nonce", "776797", "20"] ], "content": "It's just me mining my own business", "sig": "284622fc0a3f4f1303455d5175f7ba962a3300d136085b9566801bc2e0699de0c7e31e44c81fb40ad9049173742e904713c3594a1da0fc5d2382a25c11aba977" }
Validating
Here is some reference C code for calculating the difficulty (aka number of leading zero bits) in a nostr event id:
```c int zero_bits(unsigned char b) { int n = 0;
if (b == 0) return 8; while (b >>= 1) n++; return 7-n;
}
/ find the number of leading zero bits in a hash / int count_leading_zero_bits(unsigned char *hash) { int bits, total, i; for (i = 0, total = 0; i < 32; i++) { bits = zero_bits(hash[i]); total += bits; if (bits != 8) break; } return total; } ```
Here is some JavaScript code for doing the same thing:
```javascript // hex should be a hexadecimal string (with no 0x prefix) function countLeadingZeroes(hex) { let count = 0;
for (let i = 0; i < hex.length; i++) { const nibble = parseInt(hex[i], 16); if (nibble === 0) { count += 4; } else { count += Math.clz32(nibble) - 28; break; } }
return count; } ```
Delegated Proof of Work
Since the
NIP-01
note id does not commit to any signature, PoW can be outsourced to PoW providers, perhaps for a fee. This provides a way for clients to get their messages out to PoW-restricted relays without having to do any work themselves, which is useful for energy-constrained devices like mobile phones. -
@ 35da2266:15e70970
2025-04-16 18:00:26Y4lygZ3LEoXWuJtC8XaOXhzJxACtrNlgVpIZDuEZ4uObp1YL+SaPAIaAaVIUBWvCvzOabX2RxzhQJalv/C3SRCNQmcXGobODPxgz/4BNtSAmmc2UKEHvm1GhWTo6CB0EoOzVS6g97F7Mfas9jsQnwW8qEHUFiy8lSnSeFcGIkAJcUjXzvd8IoZeoF76s0uEFPuQPAtaHUTObCLwHEOj0/YuBkahCFxju9tlU9xlq+tVb0h6eZ1zr+LWW2Riejn4lDDq7D11MvVnTkAFDoW8C+xhU8OT3dX3Vz4XJ7vpKTMplyza1zZVBgD+ALOemLWO9FCEAMmd3x+8HKTZB75rCzxYMNDuIUNxMJFLLwlXu9qk=?iv=4RaKnRhDkvApSsmgJ9TttQ==
-
@ fd06f542:8d6d54cd
2025-04-15 01:26:23 -
@ 000002de:c05780a7
2025-04-16 17:47:30She was a special cat. She was a tiny kitten crossing a country road far from any houses. We thought she was a rat at first. We stopped the car and I tried to find her. She was in a thicket hissing at me. She was always full of spunk. I didn't want another cat. I said we'd find her a home. But she quickly burrowed her way into my heart.
She was very vocal and affectionate. She was playful and loved to sneak up on you. She was just to curious and adventurous for her own good. We knew she'd get herself into trouble eventually but never dreamed it would be so soon.
When you open your heart, you are opening yourself up to being loved but also pain. Its bittersweet but worth it. Rest in peace Lucy. I miss that little girl.
originally posted at https://stacker.news/items/945348
-
@ fd06f542:8d6d54cd
2025-04-15 01:24:54NIP-11
Relay Information Document
draft
optional
Relays may provide server metadata to clients to inform them of capabilities, administrative contacts, and various server attributes. This is made available as a JSON document over HTTP, on the same URI as the relay's websocket.
When a relay receives an HTTP(s) request with an
Accept
header ofapplication/nostr+json
to a URI supporting WebSocket upgrades, they SHOULD return a document with the following structure.json { "name": <string identifying relay>, "description": <string with detailed information>, "banner": <a link to an image (e.g. in .jpg, or .png format)>, "icon": <a link to an icon (e.g. in .jpg, or .png format>, "pubkey": <administrative contact pubkey>, "contact": <administrative alternate contact>, "supported_nips": <a list of NIP numbers supported by the relay>, "software": <string identifying relay software URL>, "version": <string version identifier> }
Any field may be omitted, and clients MUST ignore any additional fields they do not understand. Relays MUST accept CORS requests by sending
Access-Control-Allow-Origin
,Access-Control-Allow-Headers
, andAccess-Control-Allow-Methods
headers.Field Descriptions
Name
A relay may select a
name
for use in client software. This is a string, and SHOULD be less than 30 characters to avoid client truncation.Description
Detailed plain-text information about the relay may be contained in the
description
string. It is recommended that this contain no markup, formatting or line breaks for word wrapping, and simply use double newline characters to separate paragraphs. There are no limitations on length.Banner
To make nostr relay management more user friendly, an effort should be made by relay owners to communicate with non-dev non-technical nostr end users. A banner is a visual representation of the relay. It should aim to visually communicate the brand of the relay, complementing the text
Description
. Here is an example banner mockup as visualized in Damus iOS relay view of the Damus relay.Icon
Icon is a compact visual representation of the relay for use in UI with limited real estate such as a nostr user's relay list view. Below is an example URL pointing to an image to be used as an icon for the relay. Recommended to be squared in shape.
jsonc { "icon": "https://nostr.build/i/53866b44135a27d624e99c6165cabd76ac8f72797209700acb189fce75021f47.jpg", // other fields... }
Pubkey
An administrative contact may be listed with a
pubkey
, in the same format as Nostr events (32-byte hex for asecp256k1
public key). If a contact is listed, this provides clients with a recommended address to send encrypted direct messages (See NIP-17) to a system administrator. Expected uses of this address are to report abuse or illegal content, file bug reports, or request other technical assistance.Relay operators have no obligation to respond to direct messages.
Contact
An alternative contact may be listed under the
contact
field as well, with the same purpose aspubkey
. Use of a Nostr public key and direct message SHOULD be preferred over this. Contents of this field SHOULD be a URI, using schemes such asmailto
orhttps
to provide users with a means of contact.Supported NIPs
As the Nostr protocol evolves, some functionality may only be available by relays that implement a specific
NIP
. This field is an array of the integer identifiers ofNIP
s that are implemented in the relay. Examples would include1
, for"NIP-01"
and9
, for"NIP-09"
. Client-sideNIPs
SHOULD NOT be advertised, and can be ignored by clients.Software
The relay server implementation MAY be provided in the
software
attribute. If present, this MUST be a URL to the project's homepage.Version
The relay MAY choose to publish its software version as a string attribute. The string format is defined by the relay implementation. It is recommended this be a version number or commit identifier.
Extra Fields
Server Limitations
These are limitations imposed by the relay on clients. Your client should expect that requests exceed these practical limitations are rejected or fail immediately.
jsonc { "limitation": { "max_message_length": 16384, "max_subscriptions": 300, "max_limit": 5000, "max_subid_length": 100, "max_event_tags": 100, "max_content_length": 8196, "min_pow_difficulty": 30, "auth_required": true, "payment_required": true, "restricted_writes": true, "created_at_lower_limit": 31536000, "created_at_upper_limit": 3, "default_limit": 500 }, // other fields... }
-
max_message_length
: the maximum number of bytes for incoming JSON that the relay will attempt to decode and act upon. When you send large subscriptions, you will be limited by this value. It also effectively limits the maximum size of any event. Value is calculated from[
to]
after UTF-8 serialization (so some unicode characters will cost 2-3 bytes). It is equal to the maximum size of the WebSocket message frame. -
max_subscriptions
: total number of subscriptions that may be active on a single websocket connection to this relay. Authenticated clients with a (paid) relationship to the relay may have higher limits. -
max_subid_length
: maximum length of subscription id as a string. -
max_limit
: the relay server will clamp each filter'slimit
value to this number. This means the client won't be able to get more than this number of events from a single subscription filter. This clamping is typically done silently by the relay, but with this number, you can know that there are additional results if you narrow your filter's time range or other parameters. -
max_event_tags
: in any event, this is the maximum number of elements in thetags
list. -
max_content_length
: maximum number of characters in thecontent
field of any event. This is a count of unicode characters. After serializing into JSON it may be larger (in bytes), and is still subject to themax_message_length
, if defined. -
min_pow_difficulty
: new events will require at least this difficulty of PoW, based on NIP-13, or they will be rejected by this server. -
auth_required
: this relay requires NIP-42 authentication to happen before a new connection may perform any other action. Even if set to False, authentication may be required for specific actions. -
payment_required
: this relay requires payment before a new connection may perform any action. -
restricted_writes
: this relay requires some kind of condition to be fulfilled to accept events (not necessarily, but includingpayment_required
andmin_pow_difficulty
). This should only be set totrue
when users are expected to know the relay policy before trying to write to it -- like belonging to a special pubkey-based whitelist or writing only events of a specific niche kind or content. Normal anti-spam heuristics, for example, do not qualify. -
created_at_lower_limit
: 'created_at' lower limit -
created_at_upper_limit
: 'created_at' upper limit -
default_limit
: The maximum returned events if you send a filter with the limit set to 0.
Event Retention
There may be a cost associated with storing data forever, so relays may wish to state retention times. The values stated here are defaults for unauthenticated users and visitors. Paid users would likely have other policies.
Retention times are given in seconds, with
null
indicating infinity. If zero is provided, this means the event will not be stored at all, and preferably an error will be provided when those are received.jsonc { "retention": [ {"kinds": [0, 1, [5, 7], [40, 49]], "time": 3600}, {"kinds": [[40000, 49999]], "time": 100}, {"kinds": [[30000, 39999]], "count": 1000}, {"time": 3600, "count": 10000} ], // other fields... }
retention
is a list of specifications: each will apply to either all kinds, or a subset of kinds. Ranges may be specified for the kind field as a tuple of inclusive start and end values. Events of indicated kind (or all) are then limited to acount
and/or time period.It is possible to effectively blacklist Nostr-based protocols that rely on a specific
kind
number, by giving a retention time of zero for thosekind
values. While that is unfortunate, it does allow clients to discover servers that will support their protocol quickly via a single HTTP fetch.There is no need to specify retention times for ephemeral events since they are not retained.
Content Limitations
Some relays may be governed by the arbitrary laws of a nation state. This may limit what content can be stored in clear-text on those relays. All clients are encouraged to use encryption to work around this limitation.
It is not possible to describe the limitations of each country's laws and policies which themselves are typically vague and constantly shifting.
Therefore, this field allows the relay operator to indicate which countries' laws might end up being enforced on them, and then indirectly on their users' content.
Users should be able to avoid relays in countries they don't like, and/or select relays in more favorable zones. Exposing this flexibility is up to the client software.
jsonc { "relay_countries": [ "CA", "US" ], // other fields... }
relay_countries
: a list of two-level ISO country codes (ISO 3166-1 alpha-2) whose laws and policies may affect this relay.EU
may be used for European Union countries. A*
can be used for global relays.
Remember that a relay may be hosted in a country which is not the country of the legal entities who own the relay, so it's very likely a number of countries are involved.
Community Preferences
For public text notes at least, a relay may try to foster a local community. This would encourage users to follow the global feed on that relay, in addition to their usual individual follows. To support this goal, relays MAY specify some of the following values.
jsonc { "language_tags": ["en", "en-419"], "tags": ["sfw-only", "bitcoin-only", "anime"], "posting_policy": "https://example.com/posting-policy.html", // other fields... }
-
language_tags
is an ordered list of IETF language tags indicating the major languages spoken on the relay. A*
can be used for global relays. -
tags
is a list of limitations on the topics to be discussed. For examplesfw-only
indicates that only "Safe For Work" content is encouraged on this relay. This relies on assumptions of what the "work" "community" feels "safe" talking about. In time, a common set of tags may emerge that allow users to find relays that suit their needs, and client software will be able to parse these tags easily. Thebitcoin-only
tag indicates that any altcoin, "crypto" or blockchain comments will be ridiculed without mercy. -
posting_policy
is a link to a human-readable page which specifies the community policies for the relay. In cases wheresfw-only
is True, it's important to link to a page which gets into the specifics of your posting policy.
The
description
field should be used to describe your community goals and values, in brief. Theposting_policy
is for additional detail and legal terms. Use thetags
field to signify limitations on content, or topics to be discussed, which could be machine processed by appropriate client software.Pay-to-Relay
Relays that require payments may want to expose their fee schedules.
jsonc { "payments_url": "https://my-relay/payments", "fees": { "admission": [{ "amount": 1000000, "unit": "msats" }], "subscription": [{ "amount": 5000000, "unit": "msats", "period": 2592000 }], "publication": [{ "kinds": [4], "amount": 100, "unit": "msats" }], }, // other fields... }
Examples
As of 25 March 2025 the following command provided these results:
bash curl -H "Accept: application/nostr+json" https://jellyfish.land | jq
json { "name": "JellyFish", "description": "Stay Immortal!", "banner": "https://image.nostr.build/7fdefea2dec1f1ec25b8ce69362566c13b2b7f13f1726c2e4584f05f64f62496.jpg", "pubkey": "bf2bee5281149c7c350f5d12ae32f514c7864ff10805182f4178538c2c421007", "contact": "hi@dezh.tech", "software": "https://github.com/dezh-tech/immortal", "supported_nips": [ 1, 9, 11, 13, 17, 40, 42, 59, 62, 70 ], "version": "immortal - 0.0.9", "relay_countries": [ "*" ], "language_tags": [ "*" ], "tags": [], "posting_policy": "https://jellyfish.land/tos.txt", "payments_url": "https://jellyfish.land/relay", "icon": "https://image.nostr.build/2547e9ec4b23589e09bc7071e0806c3d4293f76284c58ff331a64bce978aaee8.jpg", "retention": [], "fees": { "subscription": [ { "amount": 3000, "period": 2628003, "unit": "sats" }, { "amount": 8000, "period": 7884009, "unit": "sats" }, { "amount": 15000, "period": 15768018, "unit": "sats" }, { "amount": 28000, "period": 31536036, "unit": "sats" } ] }, "limitation": { "auth_required": false, "max_message_length": 70000, "max_subid_length": 256, "max_subscriptions": 350, "min_pow_difficulty": 0, "payment_required": true, "restricted_writes": true, "max_event_tags": 2000, "max_content_length": 70000, "created_at_lower_limit": 0, "created_at_upper_limit": 2147483647, "default_limit": 500, "max_limit": 5000 } }
-
-
@ 35da2266:15e70970
2025-04-16 22:26:34a7AqjUUHuhLW9JdR23N04knTwbU70SK8oVBIGu6rm/Cg0ZlaM2XWDy78xv0cwYXqIu0RFvO1CtCV79zPlr5D1k4IrSvA+ye3xNSRSL7osJHifqWtyhlcbq+t46UiWxJDEILTkG92YjgoJuHdyEvHeuWSINInCv7fo8bvnZOJTF1YnJQBtmTdXHch59hQ22icI0Abf7nGsh8fElvvIvtiSHboCh9jqyypJsUIBc0wp6TQIoFmKqW+X3JWbIJ0lOlMTmXiqEoZ9qvJB1K0eWLR8pERwXKO3zwIxOEqqOTE2SaecFWgibePwQ3BnYai/F6GcKAnJ0MedBjrbAZWmn+N4wfGyqN62CaTVPWn57D3yFB0EDbC/OwZSRW4rkJPjcawlCBVr2XdLEbOBvzuitavE1kzZQ6l5zqkbhVYcSRhRCtCDEb/zUlMUNtYrB1nYHxibgCN6hnL8CaiAjoOgnVzMcBc6gFGoCJu+hRGTErYJ2RSVPDj9n5BeLEGUO9LNsiPQtXYHP7aNubtOTlFB6icVwVhxi//9A1CCnjPTVD/X1AvM/544c7dtWH3SeRXrVzY?iv=5Zlu0jBwAcvWV1egl6CgaA==
-
@ 35da2266:15e70970
2025-04-16 16:36:173Thc9pM9tFy/utIde/qGIH+K1BoMJjFiwdp0eS6jqRfltsfuphy1p6B/Gex4pgWJCTl2nlJs29ZIwSksqxRZSOGT3HEZpTo/FCDUsKsGkLwxu0nIzzgMz92wVDfUgRtDuPHtiUwLJi9aadqFJO8AZfmA8MHhVe3OBUwBqUTPs4j/XlrQjzgFJzCIt9KvQ5YRPF7ttcTI9JLbrRR5WIPzTk0y/DJqQnayhZ1Gi8Tec08JK5Io8lKnF7oMHpyvbEAYKMm38GJiDfKizz1Jq+WCcWhFela3PJfsbtSOM2GjEofq7ZbsGjv8dzhwaCKx8AWfDTfavWoMk17obrhrYn5yog==?iv=cE6RWgHD7fmiVCOuok9kpg==
-
@ fd06f542:8d6d54cd
2025-04-15 01:24:21NIP-10
Text Notes and Threads
draft
optional
This NIP defines
kind:1
as a simple plaintext note.Abstract
The
.content
property contains some human-readable text.e
tags can be used to define note thread roots and replies. They SHOULD be sorted by the reply stack from root to the direct parent.q
tags MAY be used when citing events in the.content
with NIP-21.json ["q", "<event-id> or <event-address>", "<relay-url>", "<pubkey-if-a-regular-event>"]
Authors of the
e
andq
tags SHOULD be added asp
tags to notify of a new reply or quote.Markup languages such as markdown and HTML SHOULD NOT be used.
Marked "e" tags (PREFERRED)
Kind 1 events with
e
tags are replies to other kind 1 events. Kind 1 replies MUST NOT be used to reply to other kinds, use NIP-22 instead.["e", <event-id>, <relay-url>, <marker>, <pubkey>]
Where:
<event-id>
is the id of the event being referenced.<relay-url>
is the URL of a recommended relay associated with the reference. Clients SHOULD add a valid<relay-url>
field, but may instead leave it as""
.<marker>
is optional and if present is one of"reply"
,"root"
.<pubkey>
is optional, SHOULD be the pubkey of the author of the referenced event
Those marked with
"reply"
denote the id of the reply event being responded to. Those marked with"root"
denote the root id of the reply thread being responded to. For top level replies (those replying directly to the root event), only the"root"
marker should be used.A direct reply to the root of a thread should have a single marked "e" tag of type "root".
This scheme is preferred because it allows events to mention others without confusing them with
<reply-id>
or<root-id>
.<pubkey>
SHOULD be the pubkey of the author of thee
tagged event, this is used in the outbox model to search for that event from the authors write relays where relay hints did not resolve the event.The "p" tag
Used in a text event contains a list of pubkeys used to record who is involved in a reply thread.
When replying to a text event E the reply event's "p" tags should contain all of E's "p" tags as well as the
"pubkey"
of the event being replied to.Example: Given a text event authored by
a1
with "p" tags [p1
,p2
,p3
] then the "p" tags of the reply should be [a1
,p1
,p2
,p3
] in no particular order.Deprecated Positional "e" tags
This scheme is not in common use anymore and is here just to keep backward compatibility with older events on the network.
Positional
e
tags are deprecated because they create ambiguities that are difficult, or impossible to resolve when an event references another but is not a reply.They use simple
e
tags without any marker.["e", <event-id>, <relay-url>]
as per NIP-01.Where:
<event-id>
is the id of the event being referenced.<relay-url>
is the URL of a recommended relay associated with the reference. Many clients treat this field as optional.
The positions of the "e" tags within the event denote specific meanings as follows:
-
No "e" tag:
This event is not a reply to, nor does it refer to, any other event. -
One "e" tag:
["e", <id>]
: The id of the event to which this event is a reply. -
Two "e" tags:
["e", <root-id>]
,["e", <reply-id>]
<root-id>
is the id of the event at the root of the reply chain.<reply-id>
is the id of the article to which this event is a reply. -
Many "e" tags:
["e", <root-id>]
["e", <mention-id>]
, ...,["e", <reply-id>]
There may be any number of<mention-ids>
. These are the ids of events which may, or may not be in the reply chain. They are citing from this event.root-id
andreply-id
are as above.
-
@ fd06f542:8d6d54cd
2025-04-14 02:32:03NIP-09
Event Deletion Request
draft
optional
A special event with kind
5
, meaning "deletion request" is defined as having a list of one or moree
ora
tags, each referencing an event the author is requesting to be deleted. Deletion requests SHOULD include ak
tag for the kind of each event being requested for deletion.The event's
content
field MAY contain a text note describing the reason for the deletion request.For example:
jsonc { "kind": 5, "pubkey": <32-bytes hex-encoded public key of the event creator>, "tags": [ ["e", "dcd59..464a2"], ["e", "968c5..ad7a4"], ["a", "<kind>:<pubkey>:<d-identifier>"], ["k", "1"], ["k", "30023"] ], "content": "these posts were published by accident", // other fields... }
Relays SHOULD delete or stop publishing any referenced events that have an identical
pubkey
as the deletion request. Clients SHOULD hide or otherwise indicate a deletion request status for referenced events.Relays SHOULD continue to publish/share the deletion request events indefinitely, as clients may already have the event that's intended to be deleted. Additionally, clients SHOULD broadcast deletion request events to other relays which don't have it.
When an
a
tag is used, relays SHOULD delete all versions of the replaceable event up to thecreated_at
timestamp of the deletion request event.Client Usage
Clients MAY choose to fully hide any events that are referenced by valid deletion request events. This includes text notes, direct messages, or other yet-to-be defined event kinds. Alternatively, they MAY show the event along with an icon or other indication that the author has "disowned" the event. The
content
field MAY also be used to replace the deleted events' own content, although a user interface should clearly indicate that this is a deletion request reason, not the original content.A client MUST validate that each event
pubkey
referenced in thee
tag of the deletion request is identical to the deletion requestpubkey
, before hiding or deleting any event. Relays can not, in general, perform this validation and should not be treated as authoritative.Clients display the deletion request event itself in any way they choose, e.g., not at all, or with a prominent notice.
Clients MAY choose to inform the user that their request for deletion does not guarantee deletion because it is impossible to delete events from all relays and clients.
Relay Usage
Relays MAY validate that a deletion request event only references events that have the same
pubkey
as the deletion request itself, however this is not required since relays may not have knowledge of all referenced events.Deletion Request of a Deletion Request
Publishing a deletion request event against a deletion request has no effect. Clients and relays are not obliged to support "unrequest deletion" functionality.
-
@ 35da2266:15e70970
2025-04-16 16:29:222XNIX3i+F/eoSNicWbYwlh/ZcuLVCOfvRbjDAoLKDKDDPxGmRl5FZoShLa4iZTve6sXUOlPxG8/70hG/ANcSumK4Xb7hPDhfSOilc+v+QWhWqm6qjEiW7XP52dJsRIek7DhnOR1KNO68WZqXIwVWZzASY9GGCmXCHDyDKOSrrFHC+kSotAtpwXJeYu5d13CdizvBDxAV5wmtsrQhtNur9DMI3ra6q7QQRtNQ/cT5RRqzKE5J6d37KZgR/XbdnGCg53rruvijbO3CxZYz0YV/O56J+NP/Kp/2jROkmFNL5R90S26ezpzRoDH1aZP9z3asCNl9gbDAXbvPH+KMG4wcwcXwgiEOtcTNeT3PjOaxOn4=?iv=vkFiBD9xurO+GQ9r6UR9Kw==
-
@ fd06f542:8d6d54cd
2025-04-14 02:06:32nostrbook 技术框架
源代码在 github.com
git clone https://github.com/nostrbook/nostrbook cd nostrbook npm install npm run dev
- 网站主框架 vite + svelte
- 网站浏览书框架 docsify
网站主框架
svelte 为主,daisyui (tailwindcss) css 。 页面的逻辑结构 都是 svelte搭建的, 采用了 layout 左侧菜单。
菜单代码 在 https://github.com/nostrbook/nostrbook/blob/main/src/lib/SideMenu.svelte 菜单里用了弹框登录,弹框的代码基本是问的 AI。
子页面和 路由器看sveltekit规则编写。
书籍的数据
https://github.com/nostrbook/nostrbook/blob/main/src/lib/bookevent.ts 使用的nostr ndk 库来读写 relay。 书的 tag, 内容就是 标题,封面和作者。
[ ['t',booktag], ['title',content['title']], ];
章节的数据
[ ['t',chaptertag], ['title',title], ['d',filename + "-" + bookid], ['e',bookid], ];
这里面的 d,采用了 文件名 + bookid,所以每一本的章节名的文件名是唯一的。配置文件
src/lib/config.ts,主要配置 服务器的地址 * 图片文件 nip96 服务器 * relays 服务器 * book的tag ,测试和 release不一样。 如果自己部署独有的服务器也可以不一样。这样内容可以垂直。
首页采用了缓冲机制
首页的内容来自 书籍的列表, 用booktag和30023来区分是不是书籍信息。 为了搜索引擎友好,让页面加载就有数据。
采用了 src/hooks.server.ts 预备加载数据,数据会被首页面 src/routes/+page.server.ts 传给 page.svelte去渲染。 这一切都是后台完成的。html页面加载的时候数据都已经渲染完成了。所以对搜索引擎非常友好。搞定了google,seo。
但是为了数据的完整性, 页面起来后会继续读取列表,这时候可能会显示最新的数据。
增加了 sitemap功能
在 hooks.server.ts 文件里 增加了记录访问成功的页面,并且更新到sitemap.xml 文件里面 ```js export const handle: Handle = async ({ event, resolve }) => { event.locals.books = cachedBooks; // 共享数据 const response = await resolve(event); const {url,method} = event.request; console.log(url,response.status) if (response.status == 200){ let url = event.url.toString(); url = replaceHttpToHttps(url); if (!successfulUrls.has(url)){ successfulUrls.add(url); generateSitemap(); } } return response };
```
然后配置 nginx 设置一个sitemap.xml 链接到 nostrbook/static/sitemap.xml文件。
robots.txt
Sitemap: https://nostrbook.com/sitemap.xml
让爬虫 知道 这个sitemap的存在xml This XML file does not appear to have any style information associated with it. The document tree is shown below. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://nostrbook.com/</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/19105641454b483284cf76c42fbdde2ed3f47b1bb2a366a58eaa49630d385027.webp</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/a7f85dfe651aaa0b47d69659266f434479e40558a640a308a8f6769627305a2b/e9801593f2ea4560c55a6a2651788620cfe6c587c17c08f0e8023f06e7ffaf31.webp</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/232dd9c092e023beecb5410052bd48add702765258dcc66f176a56f02b09cf6a.webp</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/1dd58d181d40edb7df942b5b16be3f82e95348a471d5a3620a9585f0af784fee.webp</loc> </url> <url> <loc>https://nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/5ad7189d30c9b49aa61652d98ac7853217b7e445f863be09f9745c49df9f514c.webp</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157?title=nostr-examples</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/readme.md</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7?title=NostrBook%E7%AB%99%E7%82%B9%E6%97%A5%E8%AE%B0</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/readme.md</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/01.md</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/02.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997?title=Nostr%20protocol</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/readme.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/01.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/02.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/04.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/03.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/05.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/06.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/08.md</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/07.md</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34?title=nostr%E8%B5%84%E6%BA%90%E6%94%B6%E9%9B%86</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/readme.md</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/01.md</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/02.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/fb423d08b09b253194c1d7df7f828b3ecce78a72caa8d00f1b172631c0e5e951</loc> </url> <url> <loc>https://www.nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34?title=nostr%E8%B5%84%E6%BA%90%E6%94%B6%E9%9B%86</loc> </url> <url> <loc>https://www.nostrbook.com/</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/createbook</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7</loc> </url> <url> <loc>https://nostrbook.com/about</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34</loc> </url> <url> <loc>https://nostrbook.com/books/fb423d08b09b253194c1d7df7f828b3ecce78a72caa8d00f1b172631c0e5e951</loc> </url> <url> <loc>https://www.nostrbook.com/about</loc> </url> <url> <loc>https://nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/_sidebar.md?format=html</loc> </url> <url> <loc>https://nostrbook.com/books/fb423d08b09b253194c1d7df7f828b3ecce78a72caa8d00f1b172631c0e5e951/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997</loc> </url> <url> <loc>https://www.nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34</loc> </url> <url> <loc>https://www.nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7</loc> </url> <url> <loc>https://www.nostrbook.com/books/fb423d08b09b253194c1d7df7f828b3ecce78a72caa8d00f1b172631c0e5e951/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/384647ec127fe421618b5e0ab460a99a8217d59e59ac7075dcdc70266225ea34/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/c3834c0604b4e5ad66ececd756791a539c585d880864d62b0ef51e3602c482b7/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/a7f85dfe651aaa0b47d69659266f434479e40558a640a308a8f6769627305a2b/e9801593f2ea4560c55a6a2651788620cfe6c587c17c08f0e8023f06e7ffaf31.webp</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/19105641454b483284cf76c42fbdde2ed3f47b1bb2a366a58eaa49630d385027.webp</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/232dd9c092e023beecb5410052bd48add702765258dcc66f176a56f02b09cf6a.webp</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/1dd58d181d40edb7df942b5b16be3f82e95348a471d5a3620a9585f0af784fee.webp</loc> </url> <url> <loc>https://www.nostrbook.com/uploadfiles?imgsrc=https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/5ad7189d30c9b49aa61652d98ac7853217b7e445f863be09f9745c49df9f514c.webp</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/readme.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/_sidebar.md</loc> </url> <url> <loc>https://nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/getstart.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/readme.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/_sidebar.md</loc> </url> <url> <loc>https://www.nostrbook.com/books/9f0c0ef8f03be684fa7bb0de8df20b173aa9057adbb3eb4d30bed6dfc96e7997/04.md</loc> </url> <url> <loc>https://nostrbook.com/books/_sidebar.md/_sidebar.md?format=html</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157?title=nostr-examples</loc> </url> <url> <loc>https://www.nostrbook.com/books/37548c3300238cc2152d8694bb3ff46b9155d26b1b9b0986baaf7e5e90f00157/getstart.md</loc> </url> <url> <loc>https://www.nostrbook.com/writebook</loc> </url> </urlset>
-
@ fd06f542:8d6d54cd
2025-04-12 07:34:06Get started
A step-by-step guide to getting started with Nostr.
这里主要面对开发者,下面会有一些例子。
Understanding keys
Each Nostr account is based on a public/private key pair. A simple way to think about this is that your public key is your username and your private key is your password, with one major caveat. Unlike a password, your private key cannot be reset if lost.
The public key is generally presented as a string with the prefix npub and the private key with the prefix nsec. Make sure you store you private key somewhere safe, like a password manager.
nodejs example
使用 nostr-tools 开始第一个例子
https://github.com/nbd-wtf/nostr-tools
```
npm
npm install --save nostr-tools
jsr
npx jsr add @nostr/tools ```
Generating a private key and a public key
```js import { generateSecretKey, getPublicKey } from 'nostr-tools/pure'
let sk = generateSecretKey() //
sk
is a Uint8Array let pk = getPublicKey(sk) //pk
is a hex string ```To get the secret key in hex format, use ```js import { bytesToHex, hexToBytes } from '@noble/hashes/utils' // already an installed dependency
let skHex = bytesToHex(sk) let backToBytes = hexToBytes(skHex) ```
这样你就得到了你的 nostr账户了,完全是程序生成的。
任何人都可以生成,javascript,python ,rust 等各种语言都可以
git clone https://github.com/duozhutuan/nostrclient
python from nostrclient.key import PrivateKey pkey = PrivateKey() print("Your public key: ",pkey.public_key) print("Your public key bech32: ",pkey.public_key.bech32())
Keeping keys safe
If you are using Nostr on a web browser it is probably a good idea to install an extension like Connect, nos2x or Alby, then input your secret key there (or it will generate a secret key for you). From there you will be able to use all web apps very easily with no worries. For the paranoid, keeping your key on a hardware device is also an option.
If you are on Android, installing Amber is the safest way to use Nostr without having to paste your key directly into apps.
Otherwise it's probably safe to paste your nsec into well-established and security-minded apps such as Damus, so don't worry too much.
Let's do this!
Now that you know what it takes, just pick a client to start using Nostr!
Finding people to follow If you know someone that is on Nostr, start by following them, then look at whom they are following and whom they are interacting with, and sooner rather than later you'll have a bunch of followers and a community for yourself inside Nostr.
Otherwise, you can always take a look at trending posts and people and get people from there.
-
@ 35da2266:15e70970
2025-04-16 16:16:31CeZvXkLOxnAsTOPILfQtMKjpfhXfnZjEHmZlCTVflUOkJVyuw1J1fXO0A7OaQAPBZ8O/6BcGWbrEzEFo65UDCjEBmf1ADKEPDAUjNrvmCnoGlQLuSDH8Ji6JnFFc0fsCpENbbddwk+j2v0GINqlRrlHXL1aNBMj+5EgWIJu+YfS12dFzpfe1fu7in3/jtaH1lY3O347ne9usJdXEVa/admzB3VKZP6GBub6m9lWLmzRuPkgJNTEGhm0cwqZ5IhHEnfhHyY4SRfTwCQ088Z5Vjo2wkFWYizKngl4L1SQa5e9C99c+ujdgm+LkIhVc29TdbRKvRgDgPxN+W0j1TnBoOTdTbQO1nutyFyOO70E7fbt+vxgVRxJ6+M64MjuvfT447R6Rw1JEPkpxwAFWnguBzHwOKz/M0XY7vESX+dgmSKAbvp79SkdEZpVDZCi7/h5RfrmMoPzgfkVGJt4fe0A5zw==?iv=NUi6SfNxUzZIDLzom5oI3w==
-
@ fd06f542:8d6d54cd
2025-04-12 03:16:30What is Nostr?
Nostr is a simple, open protocol that enables global, decentralized, and censorship-resistant social media.
nostr 是 去中心化的 抗审查的社交媒体。
去中心化,其实就是多中心化,这里中心就是relay 服务器。现在的nostr 网络上有很多relay服务器可以存储信息。 * 短文,就是写类似微博,朋友圈什么的。 * 长文,可以写长博客,写书什么的。 * 图片 和 视频 ,nostr社区有专门的 图片和视频服务器很多都是免费的,按照nostr协议上传即可。
Simple
The protocol is based on very simple & flexible event objects (which are passed around as plain JSON) and uses standard elliptic-curve cryptography for keys and signing. The only supported transport is websockets connections from clients to relays. This makes it easy to write clients and relays and promotes software diversity.
nostr的协议非常简单,客户端通过 event 的格式(json)打包通过websocket 和relay服务器交互。
将一个 短文传到 relay服务器,很多relay服务器都 无需任何权限。任何人都可以上传获取读取服务器内容。
协议中是通过加密签名的,因此发布者拥有每个event的所有权,是可以证实的。
Verifiable
Because Nostr accounts are based on public-key cryptography it's easy to verify messages were really sent by the user in question.
nostr的账户是基于密码学生成的,用户无需邮件和手机注册; 也许无需到任何服务器去注册。 这一点 非常的具有吸引力,就像每个人的BTC账户一样。非常的自由,让用户感觉的无比的的快捷。
!> 以上两点是深深吸引 nostr用户的地方。自由,而不伤害第三方。
Nostr: a quick introduction, attempt by fiatjaf
Nostr doesn't have a material existence, it is not a website or an app. Nostr is just a description what kind of messages each computer can send to the others and vice-versa. It's a very simple thing, but the fact that such description exists allows different apps to connect to different servers automatically, without people having to talk behind the scenes or sign contracts or anything like that.
When you use a Nostr client that is what happens, your client will connect to a bunch of servers, called relays, and all these relays will speak the same "language" so your client will be able to publish notes to them all and also download notes from other people.
That's basically what Nostr is: this communication layer between the client you run on your phone or desktop computer and the relay that someone else is running on some server somewhere. There is no central authority dictating who can connect to whom or even anyone who knows for sure where each note is stored.
If you think about it, Nostr is very much like the internet itself: there are millions of websites out there, and basically anyone can run a new one, and there are websites that allow you to store and publish your stuff on them.
The added benefit of Nostr is that this unified "language" that all Nostr clients speak allow them to switch very easily and cleanly between relays. So if one relay decides to ban someone that person can switch to publishing to others relays and their audience will quickly follow them there. Likewise, it becomes much easier for relays to impose any restrictions they want on their users: no relay has to uphold a moral ground of "absolute free speech": each relay can decide to delete notes or ban users for no reason, or even only store notes from a preselected set of people and no one will be entitled to complain about that.
There are some bad things about this design: on Nostr there are no guarantees that relays will have the notes you want to read or that they will store the notes you're sending to them. We can't just assume all relays will have everything — much to the contrary, as Nostr grows more relays will exist and people will tend to publishing to a small set of all the relays, so depending on the decisions each client takes when publishing and when fetching notes, users may see a different set of replies to a note, for example, and be confused.
Another problem with the idea of publishing to multiple servers is that they may be run by all sorts of malicious people that may edit your notes. Since no one wants to see garbage published under their name, Nostr fixes that by requiring notes to have a cryptographic signature. This signature is attached to the note and verified by everybody at all times, which ensures the notes weren't tampered (if any part of the note is changed even by a single character that would cause the signature to become invalid and then the note would be dropped). The fix is perfect, except for the fact that it introduces the requirement that each user must now hold this 63-character code that starts with "nsec1", which they must not reveal to anyone. Although annoying, this requirement brings another benefit: that users can automatically have the same identity in many different contexts and even use their Nostr identity to login to non-Nostr websites easily without having to rely on any third-party.
To conclude: Nostr is like the internet (or the internet of some decades ago): a little chaotic, but very open. It is better than the internet because it is structured and actions can be automated, but, like in the internet itself, nothing is guaranteed to work at all times and users many have to do some manual work from time to time to fix things. Plus, there is the cryptographic key stuff, which is painful, but cool.
诞生blog
https://fiatjaf.com/nostr.html
The simplest open protocol that is able to create a censorship-resistant global "social" network once and for all.
It doesn't rely on any trusted central server, hence it is resilient; it is based on cryptographic keys and signatures, so it is tamperproof; it does not rely on P2P techniques, therefore it works. ...
-
@ fd06f542:8d6d54cd
2025-04-12 02:13:35 -
@ 35da2266:15e70970
2025-04-16 16:16:31y/NRckVQs+cgsxN7+BTzUyD5rOcazRSXLfZwUIPLyDngDcDNLlbXkY4WPlSjZjMO8zKPR4gZSyq8NleqCqtO/4Xe/co965H2g2UUouA+xVzNCVc4lP5rR0+w0oJV6Va54MF13V0q8A3m+V19cJyePxU8zYgfYYnPUa2gMFZQzX7JTY+wPJPFORvaXiU9PV+tlfwU2eWbjDZ9mQ3nT0V0nSGIRLJR8ph9ob06/S+hHhMeeYBgQj5D3KCsm7sZ7bjZDZ6tUUZdHUBmCSeNtjJnLumXhEJB6ynV6Gtge15eZPMVjWgrk0Le+gYDSjT3LN8Bei/QIpS1Fl1MnlkMkq2OT2ZnLBvn9sQaBOa2VIMMuRI=?iv=HIac74wGlvFNlvg0LwmnCQ==
-
@ fd06f542:8d6d54cd
2025-04-12 01:32:38使用nostrbook.com网站
登录和创建用户:
登录按钮 ,可以粘贴 已有的 nsec....账号,完成登录。
注册:
可以点击红标位置 生成你的账户。 “确定” 完成注册。
创建书籍
封面的上传
创建书籍,可以用 微信截图 后直接 ctrl+v. 粘贴即可。
或者点击浏览 本地图片文件。
标题和作者
正常填写就可以。 书的作者和上传文件人没有一一绑定。
写书
创建完成后就可以写书了,写书入口在 登录处 “我的书籍” 。点进去会出现你创建的书籍。选择一本就可以写书了。
列出你创建的所有的书籍
点击图标,就可以进入开始写作了。例如《nostrbook站点日记》
如图所示有4个部分
- (1)关闭按钮,点击就退出编辑,这时候他会提示你保存,如果不需要保存退出,点击 “不保存退出”
- (2)
大纲
是编写 你书籍的大纲,这个参考 docsify文档 下面会有例子。时间排列
是 你所有为本书写的章节。但是有些章节你可能废弃了,或者暂时不想展示,都会存在 时间排列里面,就是按照你编写的时间倒序排列的。草稿
是你暂时存储的内容,没有上传到网络,存在你本地浏览器的缓存里面。 - (3)这个部分看到的就是你的章节列表,当让你第一次来的这个地方是空的。
新增章节
下一次就会有内容了。 - (4)文件名,是我们存储章节的唯一标识。
readme.md
和_sidebar.md
是系统默认必须有的。因为docsify技术默认需要这2个。
如何编写大纲
如果你是第一次开始,大纲的界面是这样的。
- 点击
增加大纲
- 点击
查看样例
- 修改系统生成的例子,此时 readme.md是必须的readme 对应的名字你可以自己修改
- 点击提交 就可以完成大纲了。
第二次、点击
更新大纲
按钮- [首页](/readme.md) - [国人开发者](/01.md) - [中文用户列表](/02.md)
大纲例子,“[]” 内是标题,“()”内是 文件名; 标题是是显示在文章的右侧; 文件名的作用是匹配 ‘新增章节’ 里面的markdown的相匹配关联的。
如何编写一个章节,例如:readme.md
* 点击
新增章节
* 填写标题 * 填写内容 * 关键是 填写文件名,需要和大纲里的名字对应 * 提交?> 如果你写的 章节 并没有在大纲里标识名字 ,用户在浏览的时候,左侧的章节并不会出现。
-
@ 35da2266:15e70970
2025-04-16 16:07:08nCDzwaoZ+Yr7YEMAEJU1JNf+EOiqeF+mnkSIrLMKQnNuKxjr7ivBIBLyGD7ygYMX0qUXl55yRb26nceb/wrdwusCpTvxPmDNEFLt+UUhXQbuTc91D7vC43m/7DnAXNqM2Hv8nP+aTY9gUmSh+nN+qsqn1sVbWUngBbLK1AfszRPrYqyNBBZUwATg6pYvjF6/JEKIbdafE6AAFienSz0aXTJRlmcIr1s1CL7e+7y33ZjXrHL7iQOdgSSXmvS3h7z8BYrBs0aA1T0Rxxs+HXKVTApqlMh8yoG42Ly0sGN54fvmXWBmX5/bytgALRFuYfP2rrvVfBnoYG2zEyAwp2BUSQ==?iv=J6gP01G0/pS7v1VTyU3cNA==
-
@ 35da2266:15e70970
2025-04-16 16:06:33PGZDGv2lVzc+yrDD/s3Y6LeYcZofe/a6o3Te3LQ/Nieawr9oYL9Bg23/WhOi0fK0jsxN2iKbJHr+OQ9U6mjW2f+qBfHbFkWyDCOSDRGBTfG053AJF3588fIr6Mle+05aN1iF3/TF48NGycwihHRbJIedbPDeO9CnsMaZxG7sKPyM2MmeKhZC2ztBxFctQM1Pbx59cqitP7jPbTDSUBQUa191ii39mDS86JO3W3hSbKaWExMlqhmkqN8ag9YRwhZIpoRkv0sf3fNL65XE9r9dMHa8QW1siovya1mJlsdXv76mQl36jPtiySpZ4Kik+mv6NjxogTOqAvIk8crQYq0SSluK7GKsBKZeYKCJ+QAuwy2ro2c36kbRyOBd9KSjAnJ0XupzkA9fO9+xIu/boCmuusdoeD6qN01Ow2+cXDyIVCU=?iv=nHARCUqW2krqPwQwtxzOQg==
-
@ fd06f542:8d6d54cd
2025-04-12 01:21:03{"coverurl":"https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/19105641454b483284cf76c42fbdde2ed3f47b1bb2a366a58eaa49630d385027.webp","title":"nostr-examples","author":"nostr-dev"}
-
@ fd06f542:8d6d54cd
2025-04-11 11:15:10Warning
unrecommended
: deprecated in favor of NIP-27NIP-08
Handling Mentions
final
unrecommended
optional
This document standardizes the treatment given by clients of inline mentions of other events and pubkeys inside the content of
text_note
s.Clients that want to allow tagged mentions they MUST show an autocomplete component or something analogous to that whenever the user starts typing a special key (for example, "@") or presses some button to include a mention etc -- or these clients can come up with other ways to unambiguously differentiate between mentions and normal text.
Once a mention is identified, for example, the pubkey
27866e9d854c78ae625b867eefdfa9580434bc3e675be08d2acb526610d96fbe
, the client MUST add that pubkey to the.tags
with the tagp
, then replace its textual reference (inside.content
) with the notation#[index]
in which "index" is equal to the 0-based index of the related tag in the tags array.The same process applies for mentioning event IDs.
A client that receives a
text_note
event with such#[index]
mentions in its.content
CAN do a search-and-replace using the actual contents from the.tags
array with the actual pubkey or event ID that is mentioned, doing any desired context augmentation (for example, linking to the pubkey or showing a preview of the mentioned event contents) it wants in the process.Where
#[index]
has anindex
that is outside the range of the tags array or points to a tag that is not ane
orp
tag or a tag otherwise declared to support this notation, the client MUST NOT perform such replacement or augmentation, but instead display it as normal text. -
@ 872982aa:8fb54cfe
2025-04-11 03:30:48{"coverurl":"https://cdn.nostrcheck.me/872982aa37b864973a389d465bc6ed5045a78586496d104e05f39b8d8fb54cfe/e6d4161955877a472f69b7ed27230e8677da2a3f3fb8ae0b472816852111cb38.webp","title":"设计艺术和配色","author":"彩色盒子"}
-
@ 872982aa:8fb54cfe
2025-04-11 03:20:33{"coverurl":"https://cdn.nostrcheck.me/872982aa37b864973a389d465bc6ed5045a78586496d104e05f39b8d8fb54cfe/2d173d2aabda99d75f054da0ac0bf04e67c58b09af84ae0765dcf904516da75d.webp","title":"Nostr protocol4","author":"fiatjaf"}
-
@ 35da2266:15e70970
2025-04-16 15:59:328zCLHqy6gpR5iLeNR3mdTKnSrYZgla4uRUhdH6vSWjLx/Avcee+FcVf8ryzHsS35GSwNP2KEuhunbUh8fkBXe5Hcc1MZEh1u9f8mj2nR/jSUN3VuEJwAUbpHwF5AeSgD95zpMgg5h+d9zKlP4EkJtQoG8kHPVeBdxTEDEx5l+t8JR0uMX7/hinldeEvzvqgdIGOn1Pvd2UfA+quvsYfQhSK2cLZljK4gJfYOUeByZJaCLuC/7Nxhq25x7ECszE5wxm6NO4DNwqnZp36U2nQuyOhn+TucqmtBGdVEYU3myQdtUQlZIkhDt8CKMqDJyLyFdJZxFEERn8pAGnF3kQefaw==?iv=FiYK+T/Iv+lfjcNjgQu8Tw==
-
@ 35da2266:15e70970
2025-04-16 15:58:13mc1AJSRgKkEDGBkMlujx9femkprQTWxp/vwXYI4tYmW6c3ggutSW/yU9lxYPcF9WzhdT4Ngz3J8IT9Y/ICYAG3E7hgRu6to9Bo222qjRD7omrOqNa3i3C5VHRvjwIe3+FqzBL3Rmp6sgOholphtIKSoF7w3DsTTPDhM2Fc2MpMaRIZDKMl+vtiHw+sie4GHhgIiLTzckRdZnIjHJpcPGZjbxTbiKseXW7zGEfNraWJJi3d3vTB70kbDAqo8qf8CHXc1BLdCdey0wPzymIz/caW+J97QwsObuRg3kHfHN+ksBgkVgl8xsG7hXUXlhNITMCnVkmM51Pcmoje/VYvluGbuf1WxQPxNljqdqel3sKVUsFBm99wOvo2aertu6XcOq6V4sTXSU93rVvTiw67aXVS6+pt3TN9I9S0xd+lkrOiA=?iv=7ZyEqqg/ftWwpwJWd3AUTA==
-
@ 872982aa:8fb54cfe
2025-04-11 02:37:15{"coverurl":"https://cdn.nostrcheck.me/872982aa37b864973a389d465bc6ed5045a78586496d104e05f39b8d8fb54cfe/1c39bd6f09aca6e9f20f7399809a547950069d06a68b78f565fbfab4b14ec93c.webp","title":"竹林的声音2","author":"花花的作者"}
-
@ 35da2266:15e70970
2025-04-16 15:57:15j14/L0xa5HHwRX/L/sosXorJfiUPziK08Vb3hPjCkREZWm//16AH2Ki7iamkzvuHn2vhK2R4LArQ4oMr3kcaemT1IXqMjxbICwrCPirW2OQaA08RFTofiG/9n7czdT5TMjAG6YGpjvd65N25GZoIQNVy5NnAueJFqIy3TxesZai62jNoiN1aCdVsig7IZZDpHZc7bgZHxvGx2BHg/vME1rRZfWTcR9767Yw6cusuyS5h1ymPz1Oqj3/dGvwIHtoBsbAHrEurEbkesg090y2i0rPxblpUWBbH3AltS3XmX9nQGZEHPc4qF1nqVwp2o9jxjtSDBEOYnNjIiKDj7yo+2yBKVrv700PMQ8WZXhPjZEGEJ6crkTdWHpjOY2PebDDY2yAkELRv9r+JDAprsCoWLyjIJ3vZykrmeEVB6FUvvSo=?iv=PHgLeDh4EwhHHs/PqAor1g==
-
@ a7f85dfe:27305a2b
2025-04-11 00:41:45 -
@ a7f85dfe:27305a2b
2025-04-11 00:38:511.更改bios,usb启动
根据自己电脑的要求进入bios,选择优先usb启动。
2.安装系统
傻瓜式,安装proxmox。网络设置部分,建议直接插线联网,系统会根据现有网络分配IP网关信息,方便服务器开始运行时可其他电脑可以通过IP地址访问。
3.挂载硬盘
安装成功后,通过其他电脑访问服务器IP,进入图形管理界面。可以看到这时将系统盘分为local 跟local-lvm。其他硬盘得先挂载才能进行pve管理。
1.列出可用硬盘及目录地址,如果硬盘有多个分区,需要删除分区的话
fdisk -l
fdisk /dev/sda #你硬盘的地址 m #查看文档 d # 列出分区号码,选择删除的分区 n #创建分区 p #创建主分区 w #写入分区
2. 格式化分区系统mkfs -t ext4 /dev/sda1
- 挂载硬盘
mkdir /mnt/data mount -t ext4 /dev/sda1 /mnt/data
4.开机自动挂载
lsblk #查看硬盘和分区
sudo blkid # 查看硬盘的uuid
sudo vi /etc/fstab #打开fstab文件
添加如下一行UUID=你的硬盘ID /mnt/data ext4 defaults 0 2
测试挂载sudo mount -a #如果没有显示错误信息就是挂载正确
- 挂载硬盘
-
@ 872982aa:8fb54cfe
2025-04-09 05:41:40茶业
-
@ 35da2266:15e70970
2025-04-16 15:57:14TUehB0O6U9Dt7TPlBwhZ4DBrhN8Jv4S9e2DaH32+PLneJ2IEN3bOx49zQjI0vixgNyU/cAct0gT8Fj0tObo/+1UvrrlL7fqYRMN88RQzIjiRjjsSAaZK5CLuvT1H117QeOhA8Nl7ueE6K9wcaa7K8g5mPsev5ZazN+H8GOKtPDZTikpOQ3Dlb19Ft6divgQFIbfwlknCYydePAQjzSbukRMd+N97mKMC+Hp5q2wtnbXbmmPBWDwZbyTQeemgx5CuV7UAUXZy9AGf9Hsf08iQ00ZSp+F6w1InKgLFlfVje1vXT8jxMxj1s20B19LPMtY1DP9q7rzFU4RDdPbsATEgnIJorB6YxLH+tS+TIMSYuSZTGhjswT22IzeMYobFhNxE?iv=9wkQuyoj/lU8r/HvX2/B4Q==
-
@ 872982aa:8fb54cfe
2025-04-09 05:40:27432143214321412
-
@ 872982aa:8fb54cfe
2025-04-09 03:47:17 -
@ f7f4e308:b44d67f4
2025-04-09 02:12:18https://sns-video-hw.xhscdn.com/stream/1/110/258/01e7ec7be81a85850103700195f3c4ba45_258.mp4
-
@ 35da2266:15e70970
2025-04-16 15:51:33fLQ7sl0CpLUCDLrdbs5mfK02IRQPSy/sMGxtNdzQUTR5XWweRwPwpI/bPzaVGM6Um0+RklOg+2pNY5wxcmKH3mQNqXBcs34ZCg9P5Y+fzpcp37iQNFPmrQOQZFkPiQZB+IOvu1632JR6tFcq4F8dUA+Kplw9k0efS28r0Owth5rZdpjHyUFG57yHTYjkGUwTyD+70UtREL0aoimupqvA5yU5iRIGyfBwM9jXiT73MrknmmajV2k+O3kJmoSMiB9+G55+3TbatSv6/nIFfuCN1LJu3x43dP0QJ+Dr0Fi/QVtiemjHuqwKBoetpbnCTOdA2WnWnSUkx0/LdoXRjDc4+vzL4mpD9WlQzhkKFxqcScZZ8/GyNDv63YY7NCsYK0Bx6NR1kB5xZnuCeB6lNZFLfCVLyfdE6NTVO0EYtT9t6vhm1/Vp6FwiPjj+qQRw9EH1jl3zuLl2rGaz3MR3LzIAfw==?iv=wM0eiWnHd1VN7H0BIkOdKw==
-
@ 5188521b:008eb518
2025-04-08 13:33:42Ecology
When my father died, an entire ecosystem system of beneficiaries withered. Moussa Ag El Khir funded scholarships and community projects, paying thousands of Dinars monthly to stop the oasis town of In Salah from burning up. The few families we knew operating outside the oil-field economy would be forced to flee to the Mediterranean coast, along with just about every other Berber.
It wasn’t unexpected. My father had cystic fibrosis for all sixty-one years of his life. So far, that’s the only legacy he’s passed on to his children. My brothers are just carriers, but me, his precious daughter ended up like him in more ways than one.
We sat there in the lawyer’s office in Algiers, my brothers and I, staring at the ledger which contained payment for his life’s work.
“And he only left one word in his will?” asked Ibrahim for the third time. Ecology.
The lawyer said Moussa was very clear. He chose each of the keys himself. The contents of the ledger would belong to whoever could decode his life — those who understood the real meaning. Then he cut all communications and walked into the Sahara. The Tuareg caravan on the road to Akabli found his body a week later, reddened by sand burn.
Earth
We made an agreement that day. To share each word we discovered. We could break the code together. Of course, Ibrahim and Hama didn’t share anything. We barely speak. That’s what happens when one child follows their father into science, and her two brothers move to France the minute they get rich enough to buy a wife. I bet they spent longer looking into legal loopholes to get their hands on my father’s assets than they did trying to identify the keys.
That day was the start of my second life, and I went from research assistant at a regional university to private-key detective. 2048 words and few clues where to start. Although I was 27, I was virtually a grandmother according to the In Salah wives. But of course, I could never be a grandmother, or even a mother. Every night, I scoured photos in the family archive. An initial sweep of his digital footprint returned no out-of-place instances of any keywords.
It took me a year to find the GPS tag he’d added to one photo — an eighteen-year-old daughter standing next to a father proud of his first infinite solar prototype. The panel has long-since been torn out by the oil corp, but the base is still there. I drove the three kilometres from the town limit and shone the high beams at the spot. When I got out, the air was cool but still thick with sand. A few more steps through sinking dunes, and I saw it. He’d scratched a little globe into the blistered metal, and for a moment, my mucus-laden lungs tasted clear air.
Trigger
The next word took three years. Friends, contacts, professors, biographers — visits to anyone with whom he might have left a clue. But it was in the In Salah hospital, where, upon a routine CF checkup with Jerome Devailier, a French doctor, ‘trigger’ appeared. The government might stack everything against the desert peoples, but they hadn’t taken away healthcare. I’d been living off the kindness of neighbours while finishing my thesis on the very solar technology my father developed. How could he have known the ‘buyer’ was just a tendril of the very oil company he sought to defeat.
Dr Devalier went through the list of carcinogens and allergens to avoid with my new drugs. Over forty triggers which could be my downfall. If I was lucky, I’d live as long as my father did.
By then, my research stipend was long gone. I existed on toughened bread and soup, which always carried the taste of the scorched city air. Yet, I stayed. The public library, disconnected from the grid by the oil corp, was where I finished my manuscript. They would fight its publication. Since father’s money no longer flowed into the town, many had deserted me. There were those who said he killed an entire people by selling his solar patent to the wrong buyers. Others in In Salah worshipped his name, but eventually, they all trudged north to the cities. My brothers sold the family home from under me, forcing me to follow.
When I returned from the hospital, I dug out my father’s medical documents. On every page, the word ‘trigger’ was underlined. That was the moment I knew my life’s work would be unlocking the ledger, not publishing studies on long-dead solar panel technology. That battle was lost.
They
All we need is a simple document, but here, it is the administrators’ job to send people away. Physical copies are only issued in extreme circumstances. Citizens’ Registry screens played endless repetitions of how to apply for digital documents. The shrill voices of family members desperate for the original copy of a pirated document drowned the TV messaging. Women removed headscarves and revealed thick black hair; teenagers paced. The atmosphere thickened with sweat. And hours passed. Each appointment required a reset of digital protocol, biometric tests, and identity cards from legal descendents. Through counterfeit identities, our Dinars leak into the hands of criminals, but still the government denies the need for bitcoin. They just print more money. They is the word my father used for the government that fought his patent so hard.
After a four-hour wait, I discovered that the physical death certificate included an ‘identifying mark’ on the deceased’s body. The ink was fresh — etched into the shoulder blade of a man who wished to turn his back on the government that ignored its people. The tattoo read aqqalan, the Tamasheq word for they.
Scheme
It took two trips to his cluttered Marseille office to convince him I was serious. Two visas, two flights, and the small amount from the sale of the family house. But few detectives wanted to work for a promise.
The ledger could not legally be owned in Algeria, and Laurent Mercier was the only serious professional who entertained a percentage of what was on there. The solar tech patent and documents from my father were enough to start Laurent on the trail. ‘Preliminary,’ he said, until I had the ledger in my possession.
“Flying is not easy with my condition,” I said.
He lowered his sunglasses. “Working is not easy without money.”
Contact with my brother through the lawyer in Algiers was achingly slow, but eventually they agreed to give me possession. What was 33% of nothing anyway? Years had gone by.
So, when I sat for the second time, in the sweaty office in Marseille, I gave Laurent the ledger, and he handed me a surprise. In all his business affairs, my father used little English, but the word ‘scheme’ appeared in all three company names he incorporated in the last three years of his life. We had our fifth word, and I finally had someone on my side.
Make
Some days, I could barely walk to the public library. I became lethargic and mostly sat in the cool dark of my room in the shelter. The government refused to provide housing outside of Algiers, but a Tuareg organisation from Mali opened a shelter in In Salah. Bulging eyes and faded clothes stared back in the mirror each day. How long had it been since I’d been to a wedding, or celebrated a friend’s child? Occupants came and went, and all that was left was a barren room and one meal per day.
As the sun punished the city with every ray of Allah’s untapped gift, streets grew thick with dust, and the local government fell, seat by seat, to oil execs. The only transport running was to and from the oil fields, which belched the remnants of the land into the sky. And still they worked. Still they sat on my father’s patent and refused to supply the world with efficient solar power.
With little else to cling onto, I harboured thoughts of how I could spend the ledger money. Fixing the town and replanting lost gardens. Bringing people back. That all took a back seat to decoding the message my father was sending. Laurent and I began to believe that the keys he chose formed some sort of instruction for his legacy.
Ten years to the day after his death, I was in the public library, looking for clues in an English history book. On my exit, the librarian stopped me.
“We have a gift for you, Kana.”
I waited while he fetched a package.
“Your father instructed me to give this to you. But not before this date.”
My hands tore open the package. More books, technical manuals, and hand-written notes. Amongst the papers was a tasselled leather bookmark embossed with the four letters that comprised one of the seven missing words. Make.
Citizen
It’s hard for a father in Algeria to admit to his daughter that she is his spirit — the heir to his life’s work. Of course he felt terrible guilt after our mother’s passing. That was when the letters started.
Moussa wrote to himself really, trying to come to terms with bringing a protégé into the world with a bright scientific mind and lungs that would snap her life expectancy. We communicated by letter for the last few years of his life — sharing the breakthroughs of his findings and what it might mean for our decaying oasis town. Analogue writing was the only real privacy, he said. His letters always ran to the same length, as if they were one lesson divided into equal chunks. We even exchanged letters during his last hospitalisation in Algiers. Those words were the only real strength I gained.
It was Laurent who analysed the letters with a new text scanning tool. For me, my father’s last letters were advice, regret, pain, and love, but to Laurent, they were simply a puzzle to solve to get one step closer.
Our letters gave Laurent the idea to communicate via physical mail. The process was painful, with letters sent from outlying towns before being shipped across the Alboran Sea and up into France. Muatin was one name my father called me. Like him, I dreamed of helping many through science. This was one of the few Arabic words in the French letters he wrote. It was also the only keyword included in any of the letters. Citizen.
When
Years of quiet followed. In Salah became unlivable after they co-opted the city reservoir for cooling drilling rigs. Each study that proved the field was still viable funnelled funds away from the locals who clung on. Resettlement benefits went up, and all but the semi-nomadic Tuaregs left. I followed. My health could not take much more desert. In the cooler coastal plains, I recovered strength, and subsidies for new medications helped me survive on a meagre teaching salary.
With no further clues, my Marseillais detective lost interest. His last letter, sent years ago, stated with unusual brevity that he was resigning the case. No payment was due.
I had lost my health, my father, his work, my money, our house, the town, and I spent each week delivering science and English classes to teenagers. They had no more hope for our country than I had. Algerians had already lost the Sahara. A one-degree temperature shift each decade of my life had shrunk Africa and sent its peoples northwards.
My father’s word puzzle occupied my thoughts. The combinations and permutations of letters and characters had millions of possible meanings but only one correct answer. Yet simple linguistic logic provided the next word. The headteacher was a linguist — a profession long lost to the higher-powered text analysers and language AI. He spoke little English but asked about the categorisations of grammatical terms in the 2048 key words.
“Why do you ask?”
“Because,” he said, “for a sentence of twelve words, at least one conjunction is necessary to form a second clause.”
He was right. I had been focussing on lists and complex codes to build my father’s motto. When I got home, I furiously searched my list of terms for conjunctions. I found only one. ‘When.’
Can
The permutations were still huge. Even eliminating some of the more conceptual words did not help. Millions of sentences existed in my dead father’s mind. Millions of meanings, all lost to the need for more energy to fund the world’s great thirst for energy. Still, the panels in most of the ‘dead middle’ (as the space between the tropics became known) melted at over 50 degrees.
I was back in Paris for CF treatment. As a young woman, I would have been pleased to make fifty years. But the realities of daily visits and the sickness brought on by medication stung. I wanted things to end, even when I discovered the next key.
It had been years since I had dreamed of the freedoms my father’s fortune could bring. Parts of Asia held out against bitcoin, but the cost of countries doing business off-network had become prohibitive. Eventually, the fossil conglomerates would give in to the need for solar mining and the provision of universal energy.
It was in a Parisian hospital bed that I discovered ‘can.’ My wardmate, a rough labourer from Oran, found a biography in the hospital library that made me sit up straight. ‘Can’ was repeated in almost every description of my father in his one-time business partner’s book. And it was this Arabian ‘businessman,’ Abdulkarim Rahman, who brokered the deal that robbed the world of infinite solar power. Each page mocked my father as believing only physical impossibilities are impossible. He branded him the ‘can man.’
Drastic
During my recuperation, I spent the final two weeks of my visa stay in Marseille. My days passed with endless algorithm tweaks to reject or accept word orders for the elusive twelve-word sentence my father once wrote.
Food lost its taste, and friends and colleagues in academia had scattered. In-person meetings were often contained to the night hours, but Marseille was not a place to go out after dark. The latest protests had gotten violent, and the government looked likely to topple. My people had always been resilient, but when the option to move and operate a caravan was removed by General Hafiz, part of my spirit died. I resolved to spend my final years in In Salah, however uncomfortable they would be.
My final port of call before returning was Laurent’s office. The eTaxi cast me out into the dusty street, and I wheezed as I climbed the three flights of stairs to his tiny door on Rue Marché. We hadn’t spoken in years, but I was surprised to find a different name about the door. Pascale Dupont, Investigateur.
The assistant I remembered was quite the opposite to Laurent — slow and methodical, short and heavy set.
“Madame,” he said. “I have difficult news.”
Their business had always straddled the law, but I never imagined an ex-officer of the law could be convicted of treason.
“A closed-door trial,” said Pascale. Then he handed over an air-gapped 3D storage file. “Laurent knew you would come for this.”
My mind cast forward to the reams of information he must have built on my father. The patents and technical diagrams he illegally acquired and other clues. I instantly recognised the brand of storage file as a keyword. Drastic.
“How can I thank him?”
“He is dead, madame.” Pascale hung his head. “He survived prison for only two weeks.”
Must
My final years brought me home. In Salah had gained fame for its one group of Tuaregs who refused to leave. The Lakzis owned a house in a desperate condition, not dissimilar to my failing body. By the age of fifty-two, I could no longer walk, but they welcomed me. I pooled my disability allowance and some money I’d gained from selling my father’s watch. We waited for the world to mourn the death of a once great city. We would keep it alive by refusing to move, by refusing to permit its rebranding as an ‘industrial area.’ Now the oil fields were finally drying up, they wanted to dig under the town.
We had managed to eliminate half of the remaining words. Just under 1,000 possible selections for the final two words, but little idea of an order.
The problem was that I was the only English speaker among them, and it took great energy to attempt to teach the meaning of the words and possible grammatical constructions for my father’s sentence.
But soon, patterns began to emerge. Fragments of word pairings and groups. ‘Trigger drastic scheme’ appeared again and again in the permutations. ‘They can’ and ‘When they can’ gave a tantalising glimpse. We ranked sentences in terms of likelihood to form the full key and categorised them by the most likely remaining words. Due to the need for a modal verb, ‘must’ scored highest by our calculations.
In this race to unlock the ledger before In Salah’s destruction, we nosed ahead.
Yet the day of that discovery was my final day in the desert. An air ambulance transported my feeble body to Algiers, and I would never return.
They messaged me — so close. They would unlock the ledger with the final word after my operation. The bitcoin could undo the wrongs of the past, and my father’s sentence would live on.
End
The phrase which began the global revolution first appeared on the wall of a much-disputed oil refinery in the desert outside In Salah, Algeria.
When they can make ecology end, citizen earth must trigger drastic scheme
Soon, the graffiti marked government buildings in Algiers. Activists took to the streets. Governments crumbled and currencies collapsed. Climate groups received massive donations said to come from ‘the one,’ a ledger with a huge stack written off by financiers the world over. The codebreaker credited with unlocking the ledger was unable to witness the transfer of 10,000 coins to the Global Climate Fund due to her death, aged 52, from a congenital condition.
The words of Moussa Ag El Khir now mark each of the millions of panels, which line the ‘dead middle.’ They contribute over 80% of the Earth’s power supply.
To mark the fiftieth anniversary of his death, the World Climate Forum will be held in the town of his birth, In Salah, Algeria. This story, compiled from the diaries of his daughter, Kana Ult El Khir, will be read as the opening address of the conference.
This story was originally published in 21 Futures: Tales From the Timechain
To continue the story of the real-world treasure (sats) use the address (it's real).\ Who knows, maybe some zaps will find their way into the wallet...
-
@ 35da2266:15e70970
2025-04-16 15:51:33Ngy+oKzkZs+Hbzr/q9lUhH/OpUBObnxmcw5vqp3DKzisog34iKD3VXjNfre/vgSNPboT0nl74LPS+32eE3ZN6Ya42vHBEXJWMZjJhbmDeRRJB9E9EGDLmbhBRDgn2B3l4Pd1D2UejSlCA6zoZqHdNYBgWu8oLTxjxlXpdMN7N9SgaDXVoUMWopikYkShmMm/Ew3opqjGe8xUOaLV5yq+tdhRXzDI2cUiMJ86jatkjbBYZw75eAlbyGdLkYpztchoCXmeOSLXXnVwj5L+LcpOan+X6lhowU3k+7hghO1hPNbCAE+1T+qWGqhhYHB0oSZtcKGP39BT7wMe0qKip/wUv1TXUxANQNuSkSvW91Gnyjk=?iv=OWl0vYVGEjPE/s+v1IT5+Q==
-
@ a7f85dfe:27305a2b
2025-04-07 23:56:34在收到二手mini pc之前,先制作USB起动器。
首先,官网下载最新安装器的iso文件,下载地址:
https://www.proxmox.com/en/downloads
第二步,linux系统下使用dd命令制作USB起动器
查找usb路径
lsblk
dd命令直接烧录 ``` sudo dd if=/path/to/iso_file.iso of=/dev/sdX bs=4M status=progress```
-
@ a7f85dfe:27305a2b
2025-04-07 23:26:25{"coverurl":"https://cdn.nostrcheck.me/a7f85dfe651aaa0b47d69659266f434479e40558a640a308a8f6769627305a2b/e9801593f2ea4560c55a6a2651788620cfe6c587c17c08f0e8023f06e7ffaf31.webp","title":"proxmox安装记录","author":"npub15lu"}
-
@ 35da2266:15e70970
2025-04-16 15:49:276CERHvRggi+N/haEqvjRl1f2QmHuKsSOtMlVzyutIzM77kJ27+NImC4ZU5GBn9IP9tgPpcWttjvyxqjIfdCFyTNomNpcJ4k4be3Ew0OlJgiHxK8/c4I5ZWawW+lh+/LFiDf9SoZq8g+wGZIyvEfccLU5IpVMC2RIgJ1tRKdXZqqUHhqdFVRFK/Y5rCQhaeQDz01g44Aw7wGfhB+GHV2Ih2mUwMQ+Jc2qw34hJvXzbAnNzOYiwkhk8C3DVEXoK7IQyrjvNJHYnMRgn4DOqhYlrxRfOdHagAigxHh9kpL75WvA7iJphnVMDnPgHu668BlohZt6teQVYhRK3N9eRiVxMw==?iv=mXiSGiC9fBUY0V4OXKDW2Q==
-
@ 35da2266:15e70970
2025-04-16 15:45:414+NEaRzZaN8Nmn07sFW71gWnkuByNYp6jApMAPL3mbb0Zu50N/TtwLNHEgBAbyi6MFaUEvDe3OTg4HBKGI3SFPA56Tdf2aQLssfXgKhvg05Kl8RMou6/XQRcy5joy2UEf6l3HjgnlRQGPGovUMG+QJR0pzvzqWvCagLa02CM9sKZE0xb0U/4TjgeBa93gYp3sOTMDUaKWqts5marAfubcWpxdb8jmb7+7/GDPapsrA/qMsRuzud0xaSafcOFnl5/JpdoHA4hnqNkby/Tbyy+SoqO3OZM6lePKWT1jPB/oOemQPLSNMwiNM0PLZ4shf5KCuY6pXfUmLQbxVRb0zA5PA==?iv=Q9ygslLGWYBIZ1q707RTog==
-
@ ec9bd746:df11a9d0
2025-04-06 08:06:08🌍 Time Window:
🕘 When: Every even week on Sunday at 9:00 PM CET
🗺️ Where: https://cornychat.com/eurocornStart: 21:00 CET (Prague, UTC+1)
End: approx. 02:00 CET (Prague, UTC+1, next day)
Duration: usually 5+ hours.| Region | Local Time Window | Convenience Level | |-----------------------------------------------------|--------------------------------------------|---------------------------------------------------------| | Europe (CET, Prague) 🇨🇿🇩🇪 | 21:00–02:00 CET | ✅ Very Good; evening & night | | East Coast North America (EST) 🇺🇸🇨🇦 | 15:00–20:00 EST | ✅ Very Good; afternoon & early evening | | West Coast North America (PST) 🇺🇸🇨🇦 | 12:00–17:00 PST | ✅ Very Good; midday & afternoon | | Central America (CST) 🇲🇽🇨🇷🇬🇹 | 14:00–19:00 CST | ✅ Very Good; afternoon & evening | | South America West (Peru/Colombia PET/COT) 🇵🇪🇨🇴 | 15:00–20:00 PET/COT | ✅ Very Good; afternoon & evening | | South America East (Brazil/Argentina/Chile, BRT/ART/CLST) 🇧🇷🇦🇷🇨🇱 | 17:00–22:00 BRT/ART/CLST | ✅ Very Good; early evening | | United Kingdom/Ireland (GMT) 🇬🇧🇮🇪 | 20:00–01:00 GMT | ✅ Very Good; evening hours (midnight convenient) | | Eastern Europe (EET) 🇷🇴🇬🇷🇺🇦 | 22:00–03:00 EET | ✅ Good; late evening & early night (slightly late) | | Africa (South Africa, SAST) 🇿🇦 | 22:00–03:00 SAST | ✅ Good; late evening & overnight (late-night common) | | New Zealand (NZDT) 🇳🇿 | 09:00–14:00 NZDT (next day) | ✅ Good; weekday morning & afternoon | | Australia (AEDT, Sydney) 🇦🇺 | 07:00–12:00 AEDT (next day) | ✅ Good; weekday morning to noon | | East Africa (Kenya, EAT) 🇰🇪 | 23:00–04:00 EAT | ⚠️ Slightly late (night hours; late night common) | | Russia (Moscow, MSK) 🇷🇺 | 23:00–04:00 MSK | ⚠️ Slightly late (join at start is fine, very late night) | | Middle East (UAE, GST) 🇦🇪🇴🇲 | 00:00–05:00 GST (next day) | ⚠️ Late night start (midnight & early morning, but shorter attendance plausible)| | Japan/Korea (JST/KST) 🇯🇵🇰🇷 | 05:00–10:00 JST/KST (next day) | ⚠️ Early; convenient joining from ~07:00 onwards possible | | China (Beijing, CST) 🇨🇳 | 04:00–09:00 CST (next day) | ❌ Challenging; very early morning start (better ~07:00 onwards) | | India (IST) 🇮🇳 | 01:30–06:30 IST (next day) | ❌ Very challenging; overnight timing typically difficult|
-
@ 35da2266:15e70970
2025-04-16 15:39:374mCJrk2S5E3nqTr7OJAAgESXXglTH88jIQcAu3ZfvVvzSpBD+sTp+7mQuyJIwjSNnV8EFgYulfiZqnq+f2hbLLGIJurAmAq8zhWDu0oOMiYdstQ0RHTvt8/KR9T2obWip1h1nBc8ZxypSO8DhkThl1hvgpigqk78P8lsAaWNqevH0HsluXh+cNa1SIcFJQJgjkxetKKt6Z8lH3TdjPpqIUgnQjlZ0euQsJvmMz26d9hEdhxtREJsTajjBPcjxYZafQH9J1NgwtruwKfDbFq1rs3pT5MzMhGOeDdt+mUlfTRvUw179WSp670VilFajpNUtH1bJHShtaGrfaqV5638tw==?iv=dXRDC2yh14qMbZKqoqK6kg==
-
@ fd06f542:8d6d54cd
2025-04-02 08:04:17{"coverurl":"https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/1dd58d181d40edb7df942b5b16be3f82e95348a471d5a3620a9585f0af784fee.webp","title":"nostr资源收集","author":"nostrbook"}
-
@ fd06f542:8d6d54cd
2025-04-02 02:55:14 -
@ 502ab02a:a2860397
2025-04-16 15:07:23ต้องขอบคุณระบบ facebook ที่มีระบบการจัดการในการเก็บข้อมูล "แย่มาก" ทำให้การพยายาม search มาแปะรวมกันมันยาก เลยเขียนใหม่เลยแล้วกัน จะได้เอาไปเก็บในทุ่งม่วงด้วยครับ บริบทที่เราจะคุยกันคือ องค์ประกอบของ seed oil เอาแค่ว่ามันมีอะไรแล้วจะกลายเป็นอะไร ส่วนการทอด กับ กระบวนการ AGEs คงจะเขียนถึงต่างหาก เพื่อนๆที่เพิ่งรู้จักเฮีย มาใหม่ หรืออะไรก็แล้วแต่ เริ่มต้นจากการอ่านย้อนทำความรู้จักกันก่อน ก่อนที่จะทะลุถาม ถาม ถาม เข้าใจว่า สุจิปุลิ มันมี ปุจฉา แต่มันไม่ใช่ตัว main โอเคนะ เราคุยเรื่องนี้กันมา 8-9 ปีแล้ว ฝั่งคีโตนี่ถกเรื่อง seed oil จนก้าวข้ามกันไปนานแล้ว อย่าถามหาเลยว่าอะไรดี none of above อะครับ แล้วน้ำมันดีแต่ปรุงอาหารเลว มันก็เลวได้ จะดีก็ฟงหวิน จะเลวก็ฟงหวิน เฮียว่า... ถ้าเดินเข้าซูเปอร์แล้วมองไปที่ชั้นขายน้ำมัน คนส่วนใหญ่น่าจะเลือกหยิบน้ำมันพืชที่ขวดใส ๆ ฉลากบอกว่า “ช่วยลดคอเลสเตอรอล” โดยที่ไม่ได้สงสัยอะไร เพราะภาพลักษณ์มันดูสะอาด ใส เบา สุขภาพดี และยังบอกอีกว่ามีไฟโตสเตอรอลสูง ฟังแล้วเหมือนมันคือฮีโร่ที่เกิดมาเพื่อปกป้องหัวใจเรา แต่เฮียอยากชวนให้ตั้งคำถามนิดนึงว่า… ไฟโตสเตอรอลมันคืออะไร แล้วมันจำเป็นกับร่างกายจริงไหม? คำตอบคือ ไฟโตสเตอรอลมันเป็นสารจากพืชที่โครงสร้างคล้ายคอเลสเตอรอลของเรา แต่ร่างกายไม่สามารถใช้มันได้เลย มันไม่ได้กลายเป็นฮอร์โมน ไม่ได้ช่วยซ่อมผนังเซลล์ ไม่ได้เป็นวัตถุดิบสร้างวิตามิน D แถมเวลามันเข้าไปในร่างกาย มันยังไปแย่งตัวดูดซึมคอเลสเตอรอลดี ๆ ที่เราควรจะได้อีก เหมือนเรากำลังจะกินไข่แดงอุ่น ๆ ที่มีคอเลสเตอรอลดีเต็มไปหมด แต่ไฟโตสเตอรอลดันมานั่งจองที่ก่อน แล้วก็ไม่ยอมให้ไข่เข้าไปนั่งในระบบเรา
ทีนี้บางคนอาจบอกว่า “เอ้า! ดีสิ ลดคอเลสเตอรอลได้” เฮียอยากบอกว่า… ลดไปแบบนั้น มันลดของดีที่ร่างกายต้องใช้ไปด้วย เพราะคอเลสเตอรอลไม่ใช่ผู้ร้ายนะ มันคือสารตั้งต้นของฮอร์โมนเพศ ฮอร์โมนความเครียด วิตามิน D และผนังเซลล์แทบทุกเซลล์ในร่างกาย และที่สำคัญ… คนที่มีคอเลสเตอรอลต่ำเกินไป มักมีภาวะซึมเศร้า ระบบภูมิคุ้มกันตก และมีปัญหาเกี่ยวกับฮอร์โมนแบบไม่รู้ตัวด้วยซ้ำ
น้ำมันพืชพวกนี้... โดยเฉพาะที่โชว์ว่ามีไฟโตสเตอรอลสูง มักจะมาจากเมล็ดพืชราคาถูก ต้องผ่านกระบวนการอุตสาหกรรมหลายขั้น ตั้งแต่บีบ กลั่น ฟอกสี กำจัดกลิ่น แล้วก็ใส่สารป้องกันเหม็นหืน หรือบางแบรนด์ก็ต้องเติมวิตามินอีสังเคราะห์เข้าไป เพราะน้ำมันมันอ่อนแอขนาดโดนอากาศแป๊บเดียวก็เหม็น ทำไมต้องเติม? เพราะถ้าไม่เติม มันจะเหม็นหืนไวมาก ทั้งจากแสง ความร้อน และออกซิเจน ทำให้ขายไม่ออก คนไม่อยากใช้
และเฮียจะเล่าให้ฟังว่า ไอ้ไฟโตสเตอรอลที่โฆษณาว่าช่วยลดคอเลสเตอรอลนั้น ต่อให้จะเห็นผลจริง ๆ ก็ต้องบริโภควันละเป็นลิตรนะ... ใช่ ลิตร ไม่ใช่ช้อนโต๊ะ!
ซึ่งก่อนที่คอเลสเตอรอลในเลือดจะลด ตับของเรานี่แหละจะพังก่อน เพราะต้องขับกรองทั้งไฟโตสเตอรอลและอนุมูลอิสระจากน้ำมันพืชออกไปให้ได้ แต่โฆษณาไม่ได้เล่าแบบนั้นไง...
เพราะอะไรที่ดูดีจากโรงงาน มักไม่ได้ดีต่อร่างกายเท่าอาหารที่ออกมาจากธรรมชาติ นี่แหละเฮียถึงอยากเริ่มซีรีส์นี้ขึ้นมา “น้ำมันพืชขวดใส ในความเห็นของฉัน” เฮียจะพาไปดูทีละขวด ตั้งแต่น้ำมันรำข้าว น้ำมันถั่วเหลือง น้ำมันข้าวโพด น้ำมันดอกทานตะวัน จนถึงน้ำมันเบลนด์ที่รวมกันมั่ว ๆ แล้วเขียนไว้ว่า “ดีต่อใจ” แต่อาจไม่ดีต่อ “ตับ ฮอร์โมน” เท่าไหร่นัก
ใครที่เคยเข้าใจว่าน้ำมันพืชคือของดี อาจต้องกลับมาทบทวนใหม่อีกครั้งว่าข้อมูลจากอีกมุมนึง สมควรแก่การพิจารณาไหม แล้วเดี๋ยวตอนหน้า เฮียจะเล่าให้อ่าน ว่า “น้ำมันรำข้าว” ที่หลายคนเข้าใจว่าดีต่อสุขภาพ จริง ๆ แล้วดีจริงไหม
-
@ ba36d0f7:cd802cba
2025-04-16 16:45:071. The creative (but fleeting) pleasure of tactics
Chess tactics are like candy between meals - instant delight, but not true nourishment. Choosing whether to attack a bishop or a knight feels like picking between vanilla and chocolate ice cream: sprinkles or none, cherry on top or not...
-
They’re freedom within boundaries: the board has limits, but imagination doesn’t.
-
They mirror your style: quick strikes like an espresso? Or slow grinds like green tea?
2. Two tactics, two joys
-
Simple (an exposed king): everyday wins (like finding cash in your pocket).
-
Complex (3+ move combos): earned triumphs (like a project you’ve sweat over).
3. The Buddha’s warning: "Don’t Confuse the Sugar Rush for the Meal"
Buddhism teaches that clinging to pleasure (kāma-tanha) breeds suffering. In chess and life:
-
Tactics are desserts: sweet, but not the feast.
- Example: Beating a blunder is like winning the lottery; outplaying strategically is like building wealth.
-
The balance: Revel in that dazzling queen sacrifice - but don’t bet your game on it. Like savoring cake, not devouring the whole bakery.
4. How to play (and Live) this wisdom
✅ Ask yourself:
-
Is this move sound - or just seductive? (Like craving junk food vs. needing sustenance).
-
Am I here to win, or to wow? (Ego checkmates you faster than any opponent).
Final Move: The middle path on 64 squares
Buddhism invites joy without attachment. On the board:
-
Tactics = spice: they dazzle, but strategy feeds growth.
-
Strategy = the harvest: the patience that crowns kings.
♟️ So - do you chase the fireworks, or cultivate the long game?
Online Resources
Chess tactics - chess.com https://www.chess.com/terms/chess-tactics
Tactic examples - chess.com https://www.chess.com/article/view/chess-tactics
Tactics - lichess.org https://lichess.org/study/topic/Tactics/hot
somachess #buddhism #philosophy #chessphilosophy #chess #elsalvador #btc #apaneca #chesselsalvador
-
-
@ fd06f542:8d6d54cd
2025-04-02 01:15:20NIP-07
window.nostr
capability for web browsersdraft
optional
The
window.nostr
object may be made available by web browsers or extensions and websites or web-apps may make use of it after checking its availability.That object must define the following methods:
async window.nostr.getPublicKey(): string // returns a public key as hex async window.nostr.signEvent(event: { created_at: number, kind: number, tags: string[][], content: string }): Event // takes an event object, adds `id`, `pubkey` and `sig` and returns it
Aside from these two basic above, the following functions can also be implemented optionally:
async window.nostr.nip04.encrypt(pubkey, plaintext): string // returns ciphertext and iv as specified in nip-04 (deprecated) async window.nostr.nip04.decrypt(pubkey, ciphertext): string // takes ciphertext and iv as specified in nip-04 (deprecated) async window.nostr.nip44.encrypt(pubkey, plaintext): string // returns ciphertext as specified in nip-44 async window.nostr.nip44.decrypt(pubkey, ciphertext): string // takes ciphertext as specified in nip-44
Recommendation to Extension Authors
To make sure that the
window.nostr
is available to nostr clients on page load, the authors who create Chromium and Firefox extensions should load their scripts by specifying"run_at": "document_end"
in the extension's manifest.Implementation
See https://github.com/aljazceru/awesome-nostr#nip-07-browser-extensions.
-
@ fd06f542:8d6d54cd
2025-04-01 02:04:45NIP-06
Basic key derivation from mnemonic seed phrase
draft
optional
BIP39 is used to generate mnemonic seed words and derive a binary seed from them.
BIP32 is used to derive the path
m/44'/1237'/<account>'/0/0
(according to the Nostr entry on SLIP44).A basic client can simply use an
account
of0
to derive a single key. For more advanced use-cases you can incrementaccount
, allowing generation of practically infinite keys from the 5-level path with hardened derivation.Other types of clients can still get fancy and use other derivation paths for their own other purposes.
Test vectors
mnemonic: leader monkey parrot ring guide accident before fence cannon height naive bean\ private key (hex): 7f7ff03d123792d6ac594bfa67bf6d0c0ab55b6b1fdb6249303fe861f1ccba9a\ nsec: nsec10allq0gjx7fddtzef0ax00mdps9t2kmtrldkyjfs8l5xruwvh2dq0lhhkp\ public key (hex): 17162c921dc4d2518f9a101db33695df1afb56ab82f5ff3e5da6eec3ca5cd917\ npub: npub1zutzeysacnf9rru6zqwmxd54mud0k44tst6l70ja5mhv8jjumytsd2x7nu
mnemonic: what bleak badge arrange retreat wolf trade produce cricket blur garlic valid proud rude strong choose busy staff weather area salt hollow arm fade\ private key (hex): c15d739894c81a2fcfd3a2df85a0d2c0dbc47a280d092799f144d73d7ae78add\ nsec: nsec1c9wh8xy5eqdzln7n5t0ctgxjcrdug73gp5yj0x03gntn67h83twssdfhel\ public key (hex): d41b22899549e1f3d335a31002cfd382174006e166d3e658e3a5eecdb6463573\ npub: npub16sdj9zv4f8sl85e45vgq9n7nsgt5qphpvmf7vk8r5hhvmdjxx4es8rq74h
-
@ ba36d0f7:cd802cba
2025-04-16 16:39:581. El placer creativo (pero efímero) de las tácticas
Las tácticas en ajedrez son como las golosinas entre comidas: satisfacción inmediata, pero no sustento real. Escoger entre atacar a un alfil o un caballo puede ser como elegir entre helado de vainilla o chocolate - con chispas o sin chispas, cereza o sin cereza....
-
Son libertad dentro de las reglas: el tablero es finito, pero la creatividad no.
-
Reflejan tu estilo: ¿ataques rápidos como un espresso? ¿O finales lentos como un té verde?
2. Dos tipos de tácticas, dos tipos de placeres
-
Sencillas (como un rey descubierto): placeres cotidianos (como un golpe de buena suerte).
-
Complejas (combinaciones de 3+ jugadas): placeres que exigen planificación (como cumplir metas).
3. La advertencia budista: "No confundas el postre con la cena"
El Buddha enseñó que aferrarse a los placeres (kāma-tanha) genera sufrimiento. En ajedrez y en la vida:
-
Las tácticas son golosinas: te dan ventaja, pero no son estrategia.
- Ejemplo: Ganar por un descuido del rival es como heredar dinero; ganar por planificación es como construir un negocio.
-
El equilibrio: Disfruta ese sacrificio de dama espectacular… pero no bases tu juego en ellos. Como saborear un pastel ocasional sin volverse adicto al azúcar.
4. Cómo aplicar esto en el tablero (y en la vida)
✅ Pregúntate siempre:
-
¿Esta táctica es sólida o solo emocionante? (Como diferenciar antojo de hambre real).
-
¿Estoy jugando para ganar… o para impresionar? (El ego es peor enemigo que el rival).
Conclusión: El camino medio (ajedrecístico)
El budismo no pide renunciar a los placeres, sino disfrutarlos sin apego. En el ajedrez:
-
Tácticas = especias: dan sabor, pero no son el plato principal.
-
Estrategia = nutrición: lo que realmente te hace mejor jugador.
♟️ ¿Y tú? ¿Eres de los que prefieren un ataque brillante (aunque riesgoso) o una victoria lenta pero segura?
Recursos en linea
Tácticas - chess.com https://www.chess.com/es/article/view/tacticas-ajedrez
Problemas de ajedrez - chess.com https://www.chess.com/es/puzzles
Tácticas - lichess.org https://lichess.org/study/qgLXlnIF/udsuAudN
ajedrez #somachess #chess #chesselsalvador #budismo #budhism #filosofia #philosophy #apaneca #rutadelasflores #article #longform #articulo
-
-
@ fd06f542:8d6d54cd
2025-03-31 10:00:34NIP-05
Mapping Nostr keys to DNS-based internet identifiers
final
optional
On events of kind
0
(user metadata
) one can specify the key"nip05"
with an internet identifier (an email-like address) as the value. Although there is a link to a very liberal "internet identifier" specification above, NIP-05 assumes the<local-part>
part will be restricted to the charactersa-z0-9-_.
, case-insensitive.Upon seeing that, the client splits the identifier into
<local-part>
and<domain>
and use these values to make a GET request tohttps://<domain>/.well-known/nostr.json?name=<local-part>
.The result should be a JSON document object with a key
"names"
that should then be a mapping of names to hex formatted public keys. If the public key for the given<name>
matches thepubkey
from theuser metadata
event, the client then concludes that the given pubkey can indeed be referenced by its identifier.Example
If a client sees an event like this:
jsonc { "pubkey": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9", "kind": 0, "content": "{\"name\": \"bob\", \"nip05\": \"bob@example.com\"}" // other fields... }
It will make a GET request to
https://example.com/.well-known/nostr.json?name=bob
and get back a response that will look likejson { "names": { "bob": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9" } }
or with the recommended
"relays"
attribute:json { "names": { "bob": "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9" }, "relays": { "b0635d6a9851d3aed0cd6c495b282167acf761729078d975fc341b22650b07b9": [ "wss://relay.example.com", "wss://relay2.example.com" ] } }
If the pubkey matches the one given in
"names"
(as in the example above) that means the association is right and the"nip05"
identifier is valid and can be displayed.The recommended
"relays"
attribute may contain an object with public keys as properties and arrays of relay URLs as values. When present, that can be used to help clients learn in which relays the specific user may be found. Web servers which serve/.well-known/nostr.json
files dynamically based on the query string SHOULD also serve the relays data for any name they serve in the same reply when that is available.Finding users from their NIP-05 identifier
A client may implement support for finding users' public keys from internet identifiers, the flow is the same as above, but reversed: first the client fetches the well-known URL and from there it gets the public key of the user, then it tries to fetch the kind
0
event for that user and check if it has a matching"nip05"
.Notes
Identification, not verification
The NIP-05 is not intended to verify a user, but only to identify them, for the purpose of facilitating the exchange of a contact or their search.
Exceptions are people who own (e.g., a company) or are connected (e.g., a project) to a well-known domain, who can exploit NIP-05 as an attestation of their relationship with it, and thus to the organization behind it, thereby gaining an element of trust.User discovery implementation suggestion
A client can use this to allow users to search other profiles. If a client has a search box or something like that, a user may be able to type "bob@example.com" there and the client would recognize that and do the proper queries to obtain a pubkey and suggest that to the user.
Clients must always follow public keys, not NIP-05 addresses
For example, if after finding that
bob@bob.com
has the public keyabc...def
, the user clicks a button to follow that profile, the client must keep a primary reference toabc...def
, notbob@bob.com
. If, for any reason, the addresshttps://bob.com/.well-known/nostr.json?name=bob
starts returning the public key1d2...e3f
at any time in the future, the client must not replaceabc...def
in his list of followed profiles for the user (but it should stop displaying "bob@bob.com" for that user, as that will have become an invalid"nip05"
property).Public keys must be in hex format
Keys must be returned in hex format. Keys in NIP-19
npub
format are only meant to be used for display in client UIs, not in this NIP.Showing just the domain as an identifier
Clients may treat the identifier
_@domain
as the "root" identifier, and choose to display it as just the<domain>
. For example, if Bob ownsbob.com
, he may not want an identifier likebob@bob.com
as that is redundant. Instead, Bob can use the identifier_@bob.com
and expect Nostr clients to show and treat that as justbob.com
for all purposes.Reasoning for the
/.well-known/nostr.json?name=<local-part>
formatBy adding the
<local-part>
as a query string instead of as part of the path, the protocol can support both dynamic servers that can generate JSON on-demand and static servers with a JSON file in it that may contain multiple names.Allowing access from JavaScript apps
JavaScript Nostr apps may be restricted by browser CORS policies that prevent them from accessing
/.well-known/nostr.json
on the user's domain. When CORS prevents JS from loading a resource, the JS program sees it as a network failure identical to the resource not existing, so it is not possible for a pure-JS app to tell the user for certain that the failure was caused by a CORS issue. JS Nostr apps that see network failures requesting/.well-known/nostr.json
files may want to recommend to users that they check the CORS policy of their servers, e.g.:bash $ curl -sI https://example.com/.well-known/nostr.json?name=bob | grep -i ^Access-Control Access-Control-Allow-Origin: *
Users should ensure that their
/.well-known/nostr.json
is served with the HTTP headerAccess-Control-Allow-Origin: *
to ensure it can be validated by pure JS apps running in modern browsers.Security Constraints
The
/.well-known/nostr.json
endpoint MUST NOT return any HTTP redirects.Fetchers MUST ignore any HTTP redirects given by the
/.well-known/nostr.json
endpoint. -
@ fbf0e434:e1be6a39
2025-04-16 14:44:01Hackathon 总结
SheHacks+ 9 活动由 Women in Technology Society (WITS+) 于2025年1月10日举办。此次Hackathon 旨在提升科技行业的多元化领导力,通过邀请全国的女性和非二元人士参与。
活动共注册了47个项目,聚焦于创造一个支持性的环境,充分激发参赛者的技术能力。与WITS+的使命一致,通过技能开发、经验学习和行业联系来赋能科技领域的女性。遵循MLH行为准则,这次 Hackathon 提倡包容性,接纳了各种背景的参与者,增强了其多元化参与者的创新潜力。47个项目的成果突显了Hackathon 在激发技术进步和社区参与方面的成功。
Hackathon 获奖者
最佳硬件Hack奖 获奖者
- SpaceInAccessibility: 将AI和硬件结合,实现对聋哑宇航员的实时ASL翻译,利用手势识别和触觉传感器激活来实现太空中的无缝交流。
最佳初学者Hack奖 获奖者
- Dance it, Post it!: 使用MediaPipe和OpenCV通过网络摄像头追踪舞蹈动作,结合React前端和Python后端实现实时分析和反馈。
SheHacks+ 获奖者
- Overall 第一名: SpaceInAccessibility
- Overall 第二名: pantrypixie: 通过扫描收据和跟踪过期日期来解决食物浪费问题,利用Python和AI提供食谱建议及数字储藏界面。
- Overall 第三名: SqWiTs Game: 使用YOLOv5和Databricks来应对手机成瘾,提供游戏化界面以管理分心。
Passport奖 获奖者
(未指定)
Warp最佳开发者工具奖 获奖者
- Synapse: 通过AI将自然语言翻译为命令行指令,实现跨平台集成和安全特性,提高命令行的可访问性。
Hacker奥运奖 获奖者
- Overall 第一名: StarCheck: 结合任务清单管理和太空探险主题的互动平台,使用游戏化界面提升任务效果。
- Overall 第二名: dire: 一个用于管理待办事项清单和习惯追踪的网页应用,具备互动奖励,保持专注和清晰。
- Overall 第三名: Space Cruise+: 提供太空任务管理系统,具有本地存储功能,支持具体任务清单。
最佳GenAI应用奖 获奖者
- DevSpeak: 利用AI翻译技术术语为易懂语言的Chrome扩展,促进技术团队和非技术团队之间的沟通。
使用Cloudflare构建最佳AI应用奖 获奖者
(未指定)
用Databricks开源构建最佳AI项目奖 获奖者
首次黑客奖最具创新力AI项目 获奖者
- SyllaBud: 利用OpenAI语言处理帮助学生管理课程,通过将教学大纲组织到一个中央计划表中,简化学术任务。
附加信息
查看所有项目于 https://dorahacks.io/hackathon/shehacks-9/buidl。
关于组织者
WITS+
西方科技女性+ (WITS+) 是西安大略大学中关注科技的女性和非二元学生的领先组织。该组织因促进包容性和成长而著称,已建立了推动技术创新和学习的成功项目和活动的传统。组织强调合作和赋能,为会员提供与行业相关的见解和发展机会。致力于提升科技领域的多样性,WITS+ 不断努力为未来的科技领袖创造一个欢迎的空间。更多信息请访问 wits-uwo.ca。
-
@ fd06f542:8d6d54cd
2025-03-31 02:07:43什么是nostrbook?
nostrbook 是基于nostr 社区技术存储在 nostr relay server上的长文(30023)文章。 查看浏览,采用的是 docsify 技术。
整个网站技术不会占用部署服务器太多的存储空间,可以实现轻量级部署。
任何人可以部署服务器,或者本地部署 查看本站所有的书籍。
nostrbook 可以服务哪些人?
nostrbook未来如何发展?
- 可能会增加 blog功能,有些时候你就想随心写点日志,那么用blog功能也可以。
- 点赞互动、留言功能。
-
@ fd06f542:8d6d54cd
2025-03-31 01:55:18什么是nostrbook?
nostrbook 是基于nostr 社区技术存储在 nostr relay server上的长文(30023)文章。 查看浏览,采用的是 docsify 技术。整个网站技术无须部署服务器占用太多的存储空间。 可以实现轻量级部署。
-
@ fd06f542:8d6d54cd
2025-03-31 01:45:36{"coverurl":"https://cdn.nostrcheck.me/fd06f542bc6c06a39881810de917e6c5d277dfb51689a568ad7b7a548d6d54cd/232dd9c092e023beecb5410052bd48add702765258dcc66f176a56f02b09cf6a.webp","title":"NostrBook站点日记","author":"nostrbook"}
-
@ fbf0e434:e1be6a39
2025-04-16 14:43:47Hackathon 概要
渥太华大学官方黑客松 uOttaHack 7,在 286 名参与者提交 138 个项目的热烈支持下圆满收官。本次赛事评审标准聚焦创新力、技术复杂度、实用性及展示效果,确保参赛项目为现实问题提供独特且富有创意的解决方案。活动鼓励跨背景、跨技能水平的学生协作开发,致力于打造兼具影响力的技术成果,成为连接技术理想与落地实践的桥梁。
赛事特别注重学习交流与社交网络搭建,为编程新手与资深开发者提供了平等对话、协同创新的平台,深度践行渥太华大学推动科技领域创新合作的使命。现场涌现的优秀项目充分展现了参与者的创造力与技术功底,不仅为个人成长积累实战经验,更为未来技术突破埋下创新种子。
Hackathon 获奖者
uOttaHack 7 在 16 个类别中展示了各种创新项目,颁发了 23 个子奖以表彰 853 名参与者的成就。以下部分提供了获奖团队及其值得注意的贡献的概述。
uOttaHack 综合挑战奖获奖者
- KellerApp: 通过使用互动工具将英语翻译为 BSL,促进听障人群与听力正常人群之间的交流。
- MemoryMate: 一种智能眼镜设备,受到 AI 辅助,帮助痴呆症患者通过伴侣 app 回忆互动。
- Sweatris: 一款通过身体动作控制的交互式俄罗斯方块游戏,将身体健康与游戏结合。
Solace 奖获奖者
- uOttaType: 利用 Solace 事件代理,通过 AI 驱动的功能(如实时转录和聊天)增强文档协作。
QNX 奖获奖者
- QNX - Traffic Lights: 一个在 Raspberry Pi 4 上部署的实时交通灯系统,使用 QNX 8.0,结合行人功能和开源项目。
Survey Monkey 奖获奖者
- Opinionated Orangutans: 使用 OpenAI 的 API 创建个性化调查,针对用户数据和浏览习惯量身定制。
- Survey Monkey Chatbot: 通过 GROQ AI 推动的对话收集调查数据,结合情感分析。
- Cartbuddy: 使用 SurveyMonkey 的 API 提升零售反馈和参与度,结合 AI 驱动的功能。
NAV CANADA 奖获奖者
DeepCode 奖获奖者
- SecureVision: 威胁分析系统,通过丰富的 API 增强原始安全数据,以获取高级网络安全洞察。
Starknet 奖获奖者
- Dice-Roll OnChain: 基于区块链的 C++ 游戏在 Starknet 上适应,让游戏玩法通过链上验证透明化。
- Playtopia: Build Your Game, Earn Real $$$: 允许用户通过技能游戏赚钱。
- Focusify | Distributed Mental Health Focus App: 通过去中心化技术支持的游戏机制,促进学生的专注力。
Gadget 奖获奖者
Groq 奖获奖者
- SilentGuard: 提供由 AI 和特定激活短语的模拟电话呼叫支持的手机 app,提供低调的紧急援助。
MLH 奖获奖者
- SecureVision
- AgentSingularity: 使用由 LLM 驱动的 UI 部署定制化代理,从网络抓取文档中创建功能。
- KellerApp
- Talent Forge: 促进不使用金钱交易的技能交换,结合 AI 完善简历分析。
- SilentGuard
- Act2Learn: 通过角色扮演场景和个性化反馈利用 OpenAI API 增强学习。
Tail'ed 奖获奖者
- HealthSync-360: 一个整合 Groq AI 的健康追踪应用,计划扩展到主要的健身平台。
有关所有参赛项目的详细信息,请访问 uOttaHack 7 Projects。
关于主办方
uOttaHack
uOttaHack 专注于促进科技和区块链领域的创新与技能发展。以组织 Hackathon 著称,它汇集学生、专业人士和行业专家,通过合作解决现实世界的挑战。凭借在主办鼓励创造性问题解决活动方面的专业知识,uOttaHack 建立了培养技术人才和促进社交网络的声誉。目前关注点包括促进技术进步和支持对科技界有潜在影响的项目。
-
@ fd06f542:8d6d54cd
2025-03-30 02:16:24Warning
unrecommended
: deprecated in favor of NIP-17NIP-04
Encrypted Direct Message
final
unrecommended
optional
A special event with kind
4
, meaning "encrypted direct message". It is supposed to have the following attributes:content
MUST be equal to the base64-encoded, aes-256-cbc encrypted string of anything a user wants to write, encrypted using a shared cipher generated by combining the recipient's public-key with the sender's private-key; this appended by the base64-encoded initialization vector as if it was a querystring parameter named "iv". The format is the following:"content": "<encrypted_text>?iv=<initialization_vector>"
.tags
MUST contain an entry identifying the receiver of the message (such that relays may naturally forward this event to them), in the form["p", "<pubkey, as a hex string>"]
.tags
MAY contain an entry identifying the previous message in a conversation or a message we are explicitly replying to (such that contextual, more organized conversations may happen), in the form["e", "<event_id>"]
.Note: By default in the libsecp256k1 ECDH implementation, the secret is the SHA256 hash of the shared point (both X and Y coordinates). In Nostr, only the X coordinate of the shared point is used as the secret and it is NOT hashed. If using libsecp256k1, a custom function that copies the X coordinate must be passed as the
hashfp
argument insecp256k1_ecdh
. See here.Code sample for generating such an event in JavaScript:
```js import crypto from 'crypto' import * as secp from '@noble/secp256k1'
let sharedPoint = secp.getSharedSecret(ourPrivateKey, '02' + theirPublicKey) let sharedX = sharedPoint.slice(1, 33)
let iv = crypto.randomFillSync(new Uint8Array(16)) var cipher = crypto.createCipheriv( 'aes-256-cbc', Buffer.from(sharedX), iv ) let encryptedMessage = cipher.update(text, 'utf8', 'base64') encryptedMessage += cipher.final('base64') let ivBase64 = Buffer.from(iv.buffer).toString('base64')
let event = { pubkey: ourPubKey, created_at: Math.floor(Date.now() / 1000), kind: 4, tags: [['p', theirPublicKey]], content: encryptedMessage + '?iv=' + ivBase64 } ```
Security Warning
This standard does not go anywhere near what is considered the state-of-the-art in encrypted communication between peers, and it leaks metadata in the events, therefore it must not be used for anything you really need to keep secret, and only with relays that use
AUTH
to restrict who can fetch yourkind:4
events.Client Implementation Warning
Clients should not search and replace public key or note references from the
.content
. If processed like a regular text note (where@npub...
is replaced with#[0]
with a["p", "..."]
tag) the tags are leaked and the mentioned user will receive the message in their inbox. -
@ f5369849:f34119a0
2025-04-16 14:38:13Hackathon Summary
uOttaHack 7, the official hackathon of the University of Ottawa, welcomed a total of 286 participants and 138 project submissions. Spanning the weekend from January 17th to 19th, 2025, the event's details can be found at uOttaHack 7.
Participants concentrated on innovation, technical complexity, practicality, and presentation. These criteria ensured that projects offered unique and creative solutions to real-world problems. The hackathon fostered collaboration, welcoming students from various backgrounds and skill levels to engage in software development and create impactful technologies.
Emphasizing learning and networking, the hackathon provided a platform for both novice and experienced developers to connect and develop skills together. The event aligned with the University of Ottawa's mission to promote innovation and collaboration within the tech community. Noteworthy projects highlighted the creativity and technical skills of participants, contributing to both individual development and potential technological advancements.
Hackathon Winners
uOttaHack 7 featured a variety of innovative projects across 16 categories, awarding 23 sub-prizes to recognize the achievements of 853 participants. The subsequent sections provide an overview of the winning teams and their noteworthy contributions.
uOttaHack General Challenge Prize Winners
- KellerApp: Facilitates communication between hearing and Deaf individuals by translating English to BSL using interactive tools.
- MemoryMate: A smart glasses device assisted by AI, aiding individuals with dementia in recalling interactions through a companion app.
- Sweatris: An interactive Tetris game controlled by body movements, integrating physical fitness with gaming.
Solace Prize Winner
- uOttaType: Enhances document collaboration with AI-driven features, including real-time transcription and chat, using Solace Event Brokers.
QNX Prize Winner
- QNX - Traffic Lights: A real-time traffic light system deployed on Raspberry Pi 4 using QNX 8.0, incorporating pedestrian features and open-source projects.
Survey Monkey Prize Winners
- Opinionated Orangutans: Creates personalized surveys using OpenAI's APIs, tailored to user data and browsing habits.
- Survey Monkey Chatbot: Collects survey data via conversations powered by GROQ AI, incorporating sentiment analysis.
- Cartbuddy: Utilizes SurveyMonkey's APIs to enhance retail feedback and engagement with AI-driven features.
NAV CANADA Prize Winner
DeepCode Prize Winner
- SecureVision: A threat analysis system enhancing raw security data with rich APIs for advanced cybersecurity insights.
Starknet Prize Winners
- Dice-Roll OnChain: Blockchain-based C++ game adaptation on Starknet enabling transparent gameplay through on-chain validation.
- Playtopia: Build Your Game, Earn Real $$$: Allows users to earn money through skill-based games.
- Focusify | Distributed Mental Health Focus App: Promotes focus among students via game mechanics powered by decentralized technology.
Gadget Prize Winners
- cuNext: Improves Carleton Central’s user experience with a redesigned interface using Gadget.
- Skej: Generates schedules powered by AI, simplifying course enrollment with features like professor ratings and voice commands.
Groq Prize Winner
- SilentGuard: Provides discreet emergency assistance via a mobile app featuring AI and simulated phone calls with specific activation phrases.
MLH Prize Winners
- SecureVision
- AgentSingularity: Deploys customizable agents using a UI powered by LLM, enabling function creation from web-scraped documentation.
- KellerApp
- Talent Forge: Facilitates skill exchange without monetary transactions, integrating AI for resume analysis.
- SilentGuard
- Act2Learn: Enhances learning through role-playing scenarios and personalized feedback, utilizing OpenAI API.
Tail'ed Prize Winner
- HealthSync-360: A health tracking application integrating Groq AI, with expansion plans involving major fitness platforms.
For details on all participating projects, visit uOttaHack 7 Projects.
About the Organizer
uOttaHack
uOttaHack is a hackathon organizer and communituy focused on fostering innovation and skill development in the technology and blockchain sectors. With expertise in hosting events that encourage creative problem-solving, uOttaHack has built a reputation for nurturing technical talent and facilitating networking opportunities. Its current focus includes promoting technological advancements and supporting projects with potential impacts on the tech landscape.
-
@ fd06f542:8d6d54cd
2025-03-30 02:11:00NIP-03
OpenTimestamps Attestations for Events
draft
optional
This NIP defines an event with
kind:1040
that can contain an OpenTimestamps proof for any other event:json { "kind": 1040 "tags": [ ["e", <event-id>, <relay-url>], ["alt", "opentimestamps attestation"] ], "content": <base64-encoded OTS file data> }
- The OpenTimestamps proof MUST prove the referenced
e
event id as its digest. - The
content
MUST be the full content of an.ots
file containing at least one Bitcoin attestation. This file SHOULD contain a single Bitcoin attestation (as not more than one valid attestation is necessary and less bytes is better than more) and no reference to "pending" attestations since they are useless in this context.
Example OpenTimestamps proof verification flow
```bash ~> nak req -i e71c6ea722987debdb60f81f9ea4f604b5ac0664120dd64fb9d23abc4ec7c323 wss://nostr-pub.wellorder.net | jq -r .content | ots verify
using an esplora server at https://blockstream.info/api - sequence ending on block 810391 is valid timestamp validated at block [810391] ```
- The OpenTimestamps proof MUST prove the referenced
-
@ f5369849:f34119a0
2025-04-16 14:38:11Hackathon Summary
The SheHacks+ 9 hackathon recently concluded, engaging 98 registered developers primarily focused on enhancing diverse leadership within technology. Organized by the Women in Technology Society (WITS+), this event approved 47 projects, showcasing innovation and creativity among participants, including primarily women and non-binary individuals. SheHacks+ 9 fostered a supportive environment, welcoming participants from various backgrounds and levels of expertise.
Participants developed a range of technological solutions addressing real-world problems, leveraging technology for societal benefit. This event aligned with WITS+'s mission by promoting diverse leadership in the tech sector. Participants enhanced their skills, gained valuable experiences, and formed industry connections. The hackathon underscored the importance of a supportive community in driving technological innovation and fostering growth among underrepresented groups in the industry.
Overall, the 9th edition of SheHacks+ demonstrated significant participation and notable outcomes, positively contributing to the representation and inclusion of women and non-binary individuals in technology. Throughout the event, participants adhered to the MLH code of conduct.
Hackathon Winners
Best Hardware Hack Prize Winners
- SpaceInAccessibility - Utilizes AI and computer vision for real-time ASL translation, assisting deaf astronauts with communication in space.
Best Beginner Hack Prize Winners
- Dance it, Post it! - A webcam-based application that tracks dance movements and analyzes body positions in real-time.
Best SheHacks+ Overall Prize Winners
- SpaceInAccessibility (First Place)
- pantrypixie (Second Place) - Reduces food waste by scanning receipts, tracking expiry dates, and suggesting recipes.
- SqWiTs Game (Third Place) - An interactive app inspired by Squid Game designed to reduce phone addiction, punishing distractions and encouraging study focus.
Best Developer Tool by Warp Prize Winners
- Synapse - A CLI assistant that translates natural language to terminal commands, enhancing safety and usability.
Best SheHacks+ Hacker Olympics Overall Prize Winners
- StarCheck (First Place) - A gamified web platform with a space theme for productivity checklists and task tracking.
- dire (Second Place) - Combines to-do lists, calendar scheduling, and habit tracking to boost productivity through urgency and rewards.
- Space Cruise+ (Third Place) - A task management application using local storage to organize space exploration tasks.
Best Use of GenAI Prize Winners
- DevSpeak - A Chrome extension employing Voiceflow and React to translate complex technical language into simpler terms.
Best AI Project with Databricks Open Source Prize Winners
Most Innovative Hack Using AI by First-Time Hacker Prize Winners
- SyllaBud - Uses AI to amalgamate and organize students’ syllabi and deadlines into an efficient schedule.
For further details on all projects, please visit SheHacks 9 Projects.
About the Organizer
Western Women+ in Technology (WITS+)
Western Women+ in Technology (WITS+) is dedicated to empowering women and non-binary individuals in the technology industry. The organization focuses on enhancing diversity and inclusion within tech communities through mentorship programs, workshops, and networking events. WITS+ has launched initiatives aimed at reducing gender disparities in technical fields, significantly impacting the tech landscape in the Western region. Currently, WITS+ is focused on expanding its reach and supporting more women and non-binary individuals to foster innovation and collaboration in technology.
-
@ fd06f542:8d6d54cd
2025-03-30 02:10:24NIP-03
OpenTimestamps Attestations for Events
draft
optional
This NIP defines an event with
kind:1040
that can contain an OpenTimestamps proof for any other event:json { "kind": 1040 "tags": [ ["e", <event-id>, <relay-url>], ["alt", "opentimestamps attestation"] ], "content": <base64-encoded OTS file data> }
- The OpenTimestamps proof MUST prove the referenced
e
event id as its digest. - The
content
MUST be the full content of an.ots
file containing at least one Bitcoin attestation. This file SHOULD contain a single Bitcoin attestation (as not more than one valid attestation is necessary and less bytes is better than more) and no reference to "pending" attestations since they are useless in this context.
Example OpenTimestamps proof verification flow
```bash ~> nak req -i e71c6ea722987debdb60f81f9ea4f604b5ac0664120dd64fb9d23abc4ec7c323 wss://nostr-pub.wellorder.net | jq -r .content | ots verify
using an esplora server at https://blockstream.info/api - sequence ending on block 810391 is valid timestamp validated at block [810391] ```
- The OpenTimestamps proof MUST prove the referenced
-
@ f5369849:f34119a0
2025-04-16 14:35:54Hackathon Summary
The UofTHacks 12 hackathon recently recently came to a close, marking a notable event in Canada's tech community as the one of the first fully student-run hackathons in the country. This year, the hackathon gathered 339 registered developers who submitted 131 approved projects. The 36-hour in-person event emphasized the collaboration of developers, designers, and entrepreneurs, transforming ideas into tangible projects.
Prize tracks and bounties highlighted the event, awarding prizes to the top three teams. The winning team received Meta Quest 3S VR Headsets, encouraging participation through practical incentives. Corporate sponsors such as Tech@RBC, Ubisoft, 1Password, and Google DeepMind, along with academic partners, supported this initiative, fostering a robust networking environment.
Although the summary did not delve into specific projects, the event's impact was evident through high participation levels and substantial sponsorship. This underscores a supportive community for tech enthusiasts. Participants can stay updated on future events through UofTHacks' social media channels.
Hackathon Winners
The following summaries outline the technical innovations and accomplishments of projects recognized at UofTHacks 12. Organized by category, these winning projects showcase creativity and effective problem-solving across various domains.
General Prize Winners
- Persona: AI-driven language-learning tool utilizing computer vision, neural networks, and 3D animation for real-time personalized tutoring.
- Twirl: AI transforms textual prompts into 3D models, simplifying 3D printing for non-experts.
- Phish-Eye Lens: Web app offering puzzle-based simulations of hacker experiences for educational purposes.
Ig Nobel Prize-Inspired Award Winners
- MomTellMeTo.Study: Integration of personalized academic scheduling with motivational reminders inspired by maternal encouragement.
Best "University of Toronto" Hack Prize Winners
- YouLingo: Converts YouTube videos into personalized language lessons to enhance language acquisition.
Best Beginner Hack Prize Winners
- One Million Notes: Platform for sharing and connecting global experiences through notes.
- bluequest - Campus Exploration App: Gamifies campus exploration using experience points and achievements.
Best Security Hack Prize Winners
- Off the Hook: Interactive game educating users about phishing through victim and hacker perspectives.
Young, Smart, & Financially Savvy Prize Winners
- RBveal: Educates students on cybersecurity threats with AI-driven phishing simulation.
- FlowShield: Fraud detection platform for merchants using advanced transaction data analysis.
Best Domain Name from GoDaddy Registry Prize Winners
- SnapQuest: Offers location-specific photography prompts to inspire capturing and sharing local scenes.
Best Use of Midnight Prize Winners
- Scribble: AR app linking geotagged content to locations, ensuring privacy with zk-proof technology.
Best Use of Terraform Prize Winners
- FlowShield: Notable for its use of Terraform technologies.
Best AI Project with Databricks Open Source Prize Winners
- Pitch, Please: Live pitch simulator providing AI-generated feedback, enhancing hackathon pitches.
Best Use of Generative AI Prize Winners
- Twirl: Recognized for its use of generative AI technologies.
Best Developer Tool Prize Winners
- CodeView: Tool that analyzes handwritten code images to generate comments, quality ratings, and translates pseudocode to Python.
For a comprehensive project list and details, visit UofTHacks BUIDL.
About the Organizer
UofTHacks
UofTHacks is committed to promoting technological innovation and collaboration at the University of Toronto. Specializing in hackathons, it unites students and professionals to address real-world problems through creative coding and development. Recognized for its expertise in technology and blockchain, UofTHacks has successfully hosted numerous events that emphasize emerging trends and advanced technical solutions. The organization aims to expand its reach and enhance participants' skills in advanced technologies, empowering the next generation of developers and tech enthusiasts.
-
@ db11b320:05c5f7af
2025-03-29 19:04:19magnet:?xt=urn:btih:9BAC9A3F98803AEA1EB28A0B60A562D7E3779710