Events: add campfire 'idealni-kryptoportfolio'

This commit is contained in:
tree 2022-05-21 17:25:50 +02:00
rodič 6460f79d9f
revize 02f6a4937e
4 změnil soubory, kde provedl 9469 přidání a 9320 odebrání

Zobrazit soubor

@ -698,6 +698,8 @@
- pujčky
- liquidity mining
- historie
description: |
Na prednáške budem hovoriť hlavne o projektoch ktoré bežia na Ethereu poprípade EVM forkoch ako je napríklad Polygon, Binance Smart Chain, Fantom atď. Prednášku som rozdelil na 4 hlavné časti: 1. Stablekoiny 2. Decentralizované burzy 3. Lending protokoli 4. Bridge / Mosty. Po alebo pred prednáškou budem tatkiež robiť workshop kde Vám ukážem ako to v skutočnosti funguju a ako sa s DeFi pracuje. Vy sami si teda budete môcť vyskúšať čo znamená byť DeFi liquidity providerom, investorom, farmárom, poprípade ako sa pripraviť na airdropy budúcich zaujímavých projektov.
- id: defi-pro-zacatecniky
type: talk
@ -1839,6 +1841,7 @@
type: campfire
name: Je krypto letadlo?
track: zaklady
difficulty: beginner
speakers: [ vladimir-pinker ]
duration: 30
tags:
@ -1848,19 +1851,12 @@
type: campfire
name: Žijeme bez fiatu
track: zaklady
difficulty: advanced
speakers: [ vladimir-pinker ]
duration: 60
tags:
- finanční nezávislost
- id: students-for-liberty-campfire
type: campfire
name: Students for liberty CZ campfire [TBD]
track: spolecnost
speakers: []
duration: 60
tags: []
- id: digitalni-identita-v-metaverse
type: campfire
name: Digitální identita v metaverse
@ -1879,6 +1875,7 @@
name: Skovo.cz - ukázka [TBD]
track: zaklady
speakers: [ jiri-skrivan ]
difficulty: beginner
duration: 30
tags:
- seed
@ -1891,6 +1888,7 @@
name: KodaDot nfts and chill
track: nft
duration: 60
difficulty: advanced
speakers:
- damsky
- matej-yangwao
@ -1923,6 +1921,7 @@
name: KryptoVláďa Q&A
speakers: [ vladimir-pinker ]
track: defi
difficulty: beginner
duration: 60
fixed:
time: '1/19:00-20:00'
@ -1936,6 +1935,7 @@
speakers: []
track: nft
duration: 30
difficulty: beginner
fixed:
date: '2022-06-04'
tags:
@ -1958,6 +1958,7 @@
duration: 30
fixed:
stage: campfire-indoor
difficulty: beginner
tags:
- video
- bezpečnost
@ -1976,6 +1977,7 @@
speakers: [ edvard-meliksetyan ]
track: nft
duration: 15
difficulty: advanced
description: |
With the rapidly growing interest in the industry of crypto assets, blockchain and NFTs, the amount of scammers in the industry is growing just as fast and their techniques are getting more and more sophisticated. What are the common red flags? Is it possible to tell a cryptoscam? And how? Explained by Edvard Meliksetyan, NFT gaming expert from Altlift.
@ -1991,6 +1993,7 @@
speakers: [ juraj-bednar ]
track: spolecnost
duration: 45
difficulty: advanced
description: |
Ak podnikáte (v inej oblasti ako priamo v kryptomenách) a používate alebo by ste chceli používať kryptomeny vo svojom podnikaní, poďte sa porozprávať o tom ako využívate Bitcoin. Akceptovanie, mzdy v krypte, Bitcoin na súvahe, firemné krypto fondy, čo robiť v bear markete, príbehy o tom ako vám Bitcoin zachránil prdel alebo zlomil krk.
tags:
@ -2005,6 +2008,7 @@
- dan-vorechovsky
- jan-ruzicka
track: btc
difficulty: beginner
duration: 60
description: |
Dva odborníci na Čínu a ekonomové, Dan Vořechovský a Jan Růžička, s vámi chtějí probrat situaci na asijských trzích. Jaké jsou rozdíly v asijském fintechu oproti situaci u nás? V čem jsou v Asii napřed? Jaká je budoucnost, jaká jsou místní specifika? Přijďte podebatovat, čínsky umět nemusíte. :)
@ -2022,6 +2026,7 @@
- jana-galvis
track: spolecnost
duration: 60
difficulty: beginner
description: |
Jana Galvis z Liberálního institutu je expertka nejenom na Kolumbii, ale také na lidská práva a zastoupení žen. Co může liberál/ka dělat pro větší zastoupení žen v oborech, kde dominují muži, jako jsou IT a krypto? Aneb jde to i bez kvót. Pojďme o tom podebatovat.
@ -2038,6 +2043,7 @@
- martin-vlach
track: defi
duration: 30
difficulty: expert
description: |
Zmapování protokolů umožňujících nákup a prodej opcí (options) na EVM blockchainech a Solaně, zhodnocení jejich použitelnosti, trendy a prostor k vývoji. Kdy přeroste objem opčních obchodů spotové tak jako v TradFi, oblíbenost a perspektivy opčních vaultů, order-book vs. AMM design opčních DExů, ...
tags:
@ -2053,6 +2059,7 @@
- tree
track: btc
duration: 30
difficulty: expert
description: |
Jedni se radují z nízkých transakčních poplatků v Bitcoin síti, druzí se hrozí že jsou přiliš levné. Co se stane, až odměna těžařům za vytěžený blok (block reward) klesne na minimum nebo až tisknutí nových satů přestane úplně? Pokud tyto odměny nezastoupí poplatky, tak se bezpečnost Bitcoinu bude postupně snižovat. Budou lidé ochotni platit za bitcoinovou transakci tisíce dolarů? Proč se o to zajímat už teď? Co s tím má společného Lightning Network? A není to jenom FUD? - pojďme společně a věcně pohovořit o možných scénářích následujícího vývoje.
@ -2077,6 +2084,25 @@
- anonymizace
- finanční svoboda
- id: idealni-kryptoportfolio
type: campfire
name: Ideální kryptoportfolio
track: defi
speakers:
- ondrej-bajer
- m0xt
duration: 30
difficulty: advanced
description: |
Každý rozumný investor by měl zvážit investování do indexů nebo-li ETF, a ne se snažit stát se investorem přes noc a porazit trhy. Existuje několik obecných doporučení, jejichž aplikace by přinesla kýžené výsledky. Ne každý však tuto skutečnost akceptuje a spousta lidí stejně investuje peníze bez patřičných investičních dovedností. První rada, na kterou byste měli myslet, je vytvořit si portfolio.
tags:
- portfolio
- investice
- indexy
fixed:
date: '2022-06-04'
# Ostatní
# ==========================

Rozdílový obsah nebyl zobrazen, protože je příliš veliký Načíst rozdílové porovnání

Zobrazit soubor

@ -335,7 +335,7 @@
orgs: Spoluzakladatel konference [ChainCamp](https://chaincamp.cz/)
country: cz
available:
- from: '2022-06-04T12:00:00'
- from: '2022-06-04T14:00:00'
to: '2022-06-04T23:59:59'
desc: |
Spoluzakladatel konference [ChainCamp](https://chaincamp.cz/), Cypherpunk v učení, knihomol, autor článků o Bitcoinu. Zabývá se Rakouskou školou ekonomie, filozofií, novými technologiemi a nadevše věří v decentralizaci.

Zobrazit soubor

@ -53,6 +53,7 @@ class UTXOPlanner {
this.unscheduled = [];
this.priorityLevel = 10;
this.tries = {};
this.slotDuration = 30 * 60 * 1000;
// normalize stages
for (const stage of this.stages) {
@ -65,9 +66,17 @@ class UTXOPlanner {
const rev = this.events.find((e) => e.rightAfter === ev.id);
ev.rightAfterEvent = rev ? rev.id : null;
let haveAvailability = null
for (const spId of ev.speakers) {
const sp = specs.speakers.find((s) => s.id === spId);
if (sp.available) {
haveAvailability = true
}
}
ev.priority = haveAfter.length > 0
? 10
: (ev.after || ev.rightAfter ? 5 : 0);
: (haveAvailability ? 5 : 0);
}
}
@ -102,8 +111,10 @@ class UTXOPlanner {
}
findConflicts(stage, period) {
const evs = this.schedule.filter((s) => s.stage === stage.id);
for (const si of evs) {
for (const si of this.schedule) {
if (si.stage !== stage.id) {
continue
}
if (
si.period.start.getTime() < period.end.getTime() &&
si.period.end.getTime() > period.start.getTime()
@ -123,35 +134,40 @@ class UTXOPlanner {
};
}
findSlotInStage(ev, stage, fixedDate = null, randomize = true) {
const slotDuration = 30 * 60 * 1000;
const stageEvents = this.schedule.filter((s) => s.stage === stage.id);
const skipSegments = Math.floor(Math.random() * stage.timesFull.length) - 1;
let segmentCount = 0;
findSlotInStages(ev, stages, fixedDate = null, randomize = true) {
const segments = stage.timesFull.filter((s) => {
return !fixedDate ||
(fixedDate && format(s.start, "yyyy-MM-dd") === fixedDate);
});
for (const stage of shuffle(stages)) {
const segments = stage.timesFull.filter((s) => {
return !fixedDate ||
(fixedDate && format(s.start, "yyyy-MM-dd") === fixedDate);
});
for (const segment of (randomize ? shuffle(segments) : segments)) {
segmentCount++;
if (segmentCount >= skipSegments) {
let ctime = segment.start;
while (ctime.getTime() < segment.end.getTime()) {
const evPeriod = this.eventPeriod(ev, ctime);
for (const segment of (randomize ? shuffle(segments) : segments)) {
let slotInSegment = (segment.end.getTime() - segment.start.getTime())/this.slotDuration
let slots = []
for (let i = 0; i < slotInSegment; i++) {
slots.push(new Date(segment.start.getTime() + (this.slotDuration * i)));
}
const slotDir = Math.floor(Math.random() * 2)
slots = slotDir === 1 ? slots.reverse() : slots
for (const slot of slots) {
//console.log(slot, ctime)
const evPeriod = this.eventPeriod(ev, slot);
if (evPeriod.end.getTime() <= segment.end.getTime()) {
const conflicts = this.findConflicts(stage, evPeriod);
//console.log(evPeriod, conflicts)
if (conflicts === 0) {
if (this.eventSlotValidator(ev, evPeriod, stage)) {
return evPeriod;
return [ stage, evPeriod ];
}
}
}
ctime = new Date(ctime.getTime() + slotDuration);
}
}
}
return [ null, null ]
}
isPeriodOverlap(x, y) {
@ -233,8 +249,10 @@ class UTXOPlanner {
const events = priorityEvents.length > 0 ? priorityEvents : this.events;
//const events = this.events
const rand = Math.floor(Math.random() * events.length);
const ev = events[rand];
//const rand = Math.floor(Math.random() * events.length);
//const ev = events[rand];
const ev = events[0];
if (!this.tries[ev.id]) {
this.tries[ev.id] = 0;
@ -243,43 +261,43 @@ class UTXOPlanner {
if (this.tries[ev.id] > 30) {
this.events.splice(this.events.indexOf(ev), 1);
this.unscheduled.push(ev.id);
//console.log(ev.id)
//console.log('Max tries reached', ev.id)
return null;
}
const availStages = this.stages.filter((st) => st.types.includes(ev.type))
.map((s) => s.id);
if (availStages.length === 0) {
this.events.splice(this.events.indexOf(ev), 1);
this.unscheduled.push(ev.id);
return null;
}
let stage = null;
let stages = availStages;
if (ev.fixed && ev.fixed.stage) {
if (!availStages.includes(ev.fixed.stage)) {
if (!availStages.find(s => s.id === ev.fixed.stage)) {
return null;
}
stage = this.stages.find((s) => s.id === ev.fixed.stage);
} else {
const randStage = Math.floor(Math.random() * availStages.length);
stage = this.stages.find((s) => s.id === availStages[randStage]);
stages = availStages.filter((s) => s.id === ev.fixed.stage)
}
const slot = this.findSlotInStage(
const [stage, slot] = this.findSlotInStages(
ev,
stage,
stages,
ev.fixed && ev.fixed.date ? ev.fixed.date : null,
);
//console.log(stage,slot)
if (slot) {
//console.log(format(slot.start, 'dd HH:mm'), stage.id, ev.id, ev.priority)
this.addEvent(ev, { stage: stage.id, period: slot });
if (ev.rightAfterEvent) {
const rev = this.events.find((e) => e.id === ev.rightAfterEvent);
//console.log(ev.rightAfterEvent)
const rslot = this.findSlotInStage(
const [_, rslot] = this.findSlotInStages(
rev,
stage,
[stage],
ev.fixed && ev.fixed.date ? ev.fixed.date : null,
false,
);
@ -290,6 +308,10 @@ class UTXOPlanner {
return null;
}
}
} else {
///console.log('unscheduled', ev.id)
this.unscheduled.push(ev)
return
}
const diff = (new Date()).getTime() - this.startTime.getTime();
@ -404,10 +426,19 @@ class UTXOPlanner {
}
}
function infoStats (startTime, numResults) {
const duration = ((new Date()).getTime() - startTime.getTime())
const perSecond = Math.round((numResults/(duration/1000)) * 100)/100
const timePerItem = Math.round((duration/numResults) * 100)/100
return `Duration: ${duration/1000}s, ${perSecond} solutions/s, ${timePerItem/1000}s per item`
}
async function main() {
const limit = null;
let i = 0;
const numResults = Deno.args[0] || 10;
const startTime = new Date()
console.log("Planning started ..");
console.log(`Looking for ${numResults} results`);
@ -433,6 +464,8 @@ async function main() {
}
if (plans.length >= numResults) {
console.log("---------------------\n" + infoStats(startTime, plans.length))
const outputFn = "./dist/22/schedule-candidates.json";
console.log(`Writing result: ${outputFn}`);
const filtered = plans.sort((x, y) =>
@ -443,7 +476,7 @@ async function main() {
}
if (i % 1000 === 0) {
console.log(`${i}/${limit} - solutions: ${plans.length}`);
console.log(`${i}/${limit} - solutions: ${plans.length}, ${infoStats(startTime, plans.length)}`);
}
i++;
}