What are the next changes that we might see in the near future coming to Bitcoin? Improvement in the signature algorithms and scripts leading to better privacy and size optimizations
The Titanium OpenGL Module (Ti.OpenGL) opens the door to sophisticated graphics development for the Titanium programmer by exposing the entire OpenGL ES 1 and ES 2 graphics API to the Ti Javascript environment. The Ti.OpenGL view extends Ti.UI.View with a graphics rendering canvas that is easily managed within the Titanium view hierarchy. In addition, the module provides a databuffer object to hold large datasets and mitigate any inefficiency that arises from modeling datasets in Javascript.
This talk demonstrates the pragmatics of building sophisticated graphics displays using Ti.OpenGL in both ES 1 and ES 2. It will reveal several reusable design abstractions that take advantage of features of the Javascript environment. Among the topics to be covered are:
- OpenGL basic setup and animation
- Use of databuffers for attribute and index arrays
- Connecting databuffers and vertex buffer objects (vbo’s)
- Using external resources (textures, shaders, etc.)
The document discusses using GCC's auto-vectorizer to optimize loops. It provides flags and options for enabling vectorization, checking which loops were vectorized, and tips for writing vectorizable code. Examples are given of vectorized NEON code for improved performance. The Linaro Toolchain group works on vectorization and related optimizations, and examples from users can help with vectorization efforts.
Random speed program in CPP
This program is calculating the random speed explicitly and implementing the concept of matrix.
programminghomeworkhelp.com is the leading online solution provider for C++ Programming assignments. If you are struggling with your scoring in C++ Programming Assignments, Homework or Projects then email your requirements at info@programminghomeworkhelp.com and we will ensure excellent grades. Email your C++ assignment to info@programminghomeworkhelp.com and distress yourself from the complex C++ Programming Assignments.
The document summarizes the state of Feel++, an open source C++ finite element library. Recent developments include improvements to the programming environment, numerics, language, and coupling capabilities. Projects using Feel++ were presented at conferences. Upcoming events include a workshop on Feel++ and reduced order modeling. Work continues on certification reduced basis methods and non-conforming discretization techniques for parallel computing.
This MATLAB code analyzes a coin image to identify and count coins. It loads and preprocesses the image, finds coin boundaries, labels separate coins, measures the area of each coin region, and annotates the image with the value (5 cents or 10 cents) and running total based on coin area.
This document provides an overview of using the Vim text editor and its many features for coding. It covers Vim basics like modes, windows, buffers and tabs. It then details various commands and plugins for navigation, searching/replacing, diffing, tags management, autocomplete, syntax checking, key remapping, colorschemes, and working with the Linux shell. The document emphasizes that Vim can serve as a full-fledged IDE and recommends plugins to enhance its functionality for directory viewing, highlighting, autocompletion, and more. It provides references for further learning Vim's grammar and shortcuts.
This C++ program demonstrates the difference between prefix and postfix increment and decrement operators. It declares an integer variable num, initializes it to 9, and uses num++ and ++num in different statements. It outputs the value of num after each operation and the values stored in another variable store. The program illustrates that prefix and postfix operators can produce different results depending on when the increment/decrement occurs.
The rule of three (also known as the Law of The Big Three or The Big Three) is a rule of thumb in C++ that claims that if a class defines one of the following it should probably explicitly define all three: Copy constructor, Copy assignment operator, Destructor
The Titanium OpenGL Module (Ti.OpenGL) opens the door to sophisticated graphics development for the Titanium programmer by exposing the entire OpenGL ES 1 and ES 2 graphics API to the Ti Javascript environment. The Ti.OpenGL view extends Ti.UI.View with a graphics rendering canvas that is easily managed within the Titanium view hierarchy. In addition, the module provides a databuffer object to hold large datasets and mitigate any inefficiency that arises from modeling datasets in Javascript.
This talk demonstrates the pragmatics of building sophisticated graphics displays using Ti.OpenGL in both ES 1 and ES 2. It will reveal several reusable design abstractions that take advantage of features of the Javascript environment. Among the topics to be covered are:
- OpenGL basic setup and animation
- Use of databuffers for attribute and index arrays
- Connecting databuffers and vertex buffer objects (vbo’s)
- Using external resources (textures, shaders, etc.)
The document discusses using GCC's auto-vectorizer to optimize loops. It provides flags and options for enabling vectorization, checking which loops were vectorized, and tips for writing vectorizable code. Examples are given of vectorized NEON code for improved performance. The Linaro Toolchain group works on vectorization and related optimizations, and examples from users can help with vectorization efforts.
Random speed program in CPP
This program is calculating the random speed explicitly and implementing the concept of matrix.
programminghomeworkhelp.com is the leading online solution provider for C++ Programming assignments. If you are struggling with your scoring in C++ Programming Assignments, Homework or Projects then email your requirements at info@programminghomeworkhelp.com and we will ensure excellent grades. Email your C++ assignment to info@programminghomeworkhelp.com and distress yourself from the complex C++ Programming Assignments.
The document summarizes the state of Feel++, an open source C++ finite element library. Recent developments include improvements to the programming environment, numerics, language, and coupling capabilities. Projects using Feel++ were presented at conferences. Upcoming events include a workshop on Feel++ and reduced order modeling. Work continues on certification reduced basis methods and non-conforming discretization techniques for parallel computing.
This MATLAB code analyzes a coin image to identify and count coins. It loads and preprocesses the image, finds coin boundaries, labels separate coins, measures the area of each coin region, and annotates the image with the value (5 cents or 10 cents) and running total based on coin area.
This document provides an overview of using the Vim text editor and its many features for coding. It covers Vim basics like modes, windows, buffers and tabs. It then details various commands and plugins for navigation, searching/replacing, diffing, tags management, autocomplete, syntax checking, key remapping, colorschemes, and working with the Linux shell. The document emphasizes that Vim can serve as a full-fledged IDE and recommends plugins to enhance its functionality for directory viewing, highlighting, autocompletion, and more. It provides references for further learning Vim's grammar and shortcuts.
This C++ program demonstrates the difference between prefix and postfix increment and decrement operators. It declares an integer variable num, initializes it to 9, and uses num++ and ++num in different statements. It outputs the value of num after each operation and the values stored in another variable store. The program illustrates that prefix and postfix operators can produce different results depending on when the increment/decrement occurs.
The rule of three (also known as the Law of The Big Three or The Big Three) is a rule of thumb in C++ that claims that if a class defines one of the following it should probably explicitly define all three: Copy constructor, Copy assignment operator, Destructor
Solidity is a programming language for writing smart contracts on the Ethereum blockchain. It aims to make writing correct contracts easier by having syntax similar to JavaScript to leverage existing developer skills, expressing concepts clearly through classes for reuse, and making testing and formal proofing of contracts simpler. Solidity also includes features like an inbuilt documentation system and storage constructs to facilitate contract development and ensure contracts behave as intended.
Large Scale Vandalism Detection in Knowledge Bases: PyData Berlin 2017Alexey Grigorev
This document summarizes Alexey Grigorev's approach to detecting large scale vandalism in knowledge bases like Wikidata for the WSDM Cup 2017 competition on vandalism detection. The competition task was to predict whether a Wikidata revision should be rolled back or not based on features from the revision. Grigorev's best performing model used a linear SVM on a hashed one-hot encoding of combined features from the revision including user, title, and comment features. This approach achieved an AUC of around 0.96 on the competition test set.
This document discusses NEON intrinsics and how to use them to optimize code for ARM processors that support SIMD instructions. It provides an overview of NEON, describes the data types and some common instructions, and gives examples of using intrinsics for tasks like color space conversion. Performance tests show intrinsics code can be 5-7 times faster than plain C and on par with hand-written assembly. Guidelines are provided for writing efficient NEON intrinsics code.
Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"OdessaJS Conf
This document introduces MetaSync, a library for asynchronous programming in JavaScript. It discusses current asynchronous patterns like callbacks, promises, and async/await and their limitations. MetaSync aims to address these issues through function composition for asynchronous I/O, specific asynchronous abstractions, and a short, expressive syntax. It allows composing asynchronous functions sequentially or in parallel and includes tools like collectors, throttling, and queues to manage asynchronous data and operations.
VB6 allows for the declaration and use of different variable data types, including integer, byte, long, decimal, single, double, string, date, and object. Variables must be declared with a valid name and data type before being assigned and used. Constants are similar to variables but their values do not change. Arithmetic, logical, and other operations can be performed. Assignment statements are used to assign values to variables. Comments can be added to explain code. The immediate window allows for testing values at runtime. Input boxes and message boxes can be used to get input and display output.
The document summarizes the WSDM Cup 2017 competition on vandalism detection in Wikidata revisions. The goal is to predict whether a Wikidata revision should be reverted or not. The competition provides a Wikidata dump with 72 million revisions from 2012-2016 to train and validate models, and tests on unseen future data. Key challenges include class imbalance with positives being 0.0025% of revisions, and a 4GB memory limit for models on their evaluation platform. The document discusses the provided data features and different models tried, with the best performing model being an SVM trained on hashed bag-of-words features of revision metadata and text.
This document appears to be an exam paper for a Programming in C course. It contains instructions for candidates regarding the structure and timing of the exam. It has two sections - Section A contains 10 short answer questions, and Section B contains 4 long answer questions.
The questions cover various fundamental concepts in C programming such as tokens, data types, functions, pointers, file handling, loops, control structures, sorting and structures. For example, one question asks to explain the difference between while and do-while loops with an example, and another asks to write a program to sort an array using bubble sort.
The document provides details on the total number of pages, questions, maximum marks and subjects codes for the exam paper.
This document discusses password cracking methods, including storing passwords, hashing versus encryption, common hashing algorithms, and rainbow table attacks. It introduces password cracking and describes storing passwords in plaintext or hashed/encrypted formats. It also explains how rainbow table attacks work by pre-computing hash values into a lookup table to crack password hashes more efficiently than brute force methods.
This document outlines coroutines as a way to run multiple tasks with a single CPU by allowing tasks to yield control back and forth. It discusses processes, threads, and events, and then introduces coroutines as a way to run tasks concurrently without threads. It presents three C coroutine library approaches - protothreads using switch/case, state threads using longjmp/setjmp, and coroutines using ucontext. It provides an example of a protothread implementation and references for further reading.
1. The document uses PROC IML to perform linear regression on data in the komstat.regresi dataset. It fits a regression model, calculates residuals, and saves the residuals and predicted values to a new dataset for plotting.
2. The document defines two variables x and y with values, then calls a user-defined function square() that squares its argument. It runs square(), passing the first value of x and y.
3. The document uses a do-until loop to iteratively calculate an approximation of π. It initializes variables, calculates a new value at each iteration, and continues until the difference between iterations is less than a threshold. It then prints the final approximation.
Payment channels allow for off-chain transactions between two parties to enable trustless, high-volume, low-cost micropayments on the Bitcoin blockchain. The key aspects are: (1) a multi-signature wallet is set up and funded, (2) off-chain balance updates occur via time-locked transactions, (3) the final on-chain transaction closes the channel by broadcasting the final signed state. Hashed Timelock Contracts (HTLCs) extend this to enable payments across multiple channels by using hash preimages and timelocks to guarantee delivery or refunds. Bidirectional channels allow payments in both directions through commitment transactions signed by both parties.
Fantastic caches and where to find themAlexey Tokar
"Magical caches are terrorizing engineers. When engineers are afraid, they debug. Contain this, or it’ll mean refactoring." (c)
The story of how an internal Hibernate cache can consume 99% of 30GiB of your application memory with just the addition of a single line of code. The way it was discovered and root cause analysis to prevent it in the future will be the topic of the talk.
The document contains code for two methods in a CMap2View class:
1. OnLButtonDown handles left mouse button clicks by getting a device context, setting the map mode and viewport, selecting a blue pen, and drawing coordinate axes and labels.
2. OnRButtonDown handles right mouse clicks by getting a device context, setting the map mode and viewport, selecting a red pen, and drawing diagonal lines across the viewport.
This document discusses Coq GC (garbage collection). It provides an overview of Coq and how it can be used to formally prove properties of a garbage collector. It presents the definition of a Mem record to represent memory state and definitions for MarkPhase and Safety properties. It also discusses implementing mark phase in OCaml and proving it is correct using Coq.
This document contains slides from a lecture on getting started with C++ programming. It discusses the basics of C++ including classes, scope, input/output, and memory management. The slides provide examples of defining classes with public, private, and protected components. It also demonstrates defining classes in a single file versus splitting the class definition and implementation across multiple files.
This C++ code defines a doubly linked list data structure. It includes a node class with data, previous, and next pointers. The doubly linked list class contains functions to add nodes to the beginning or end of the list, add a node after a specified location, delete a node, display all nodes, count the total nodes, and destroy the list. The main function contains a menu to test the doubly linked list functions by adding, deleting, displaying, and counting nodes.
This C++ program accepts a 3x3 matrix from the user as input, prints out the original matrix, and then prints the transpose of that matrix - with the rows and columns swapped. The user is prompted to enter 9 integers to populate a 2D array representing the 3x3 matrix. Two nested for loops print out the original matrix and then the program uses the same nested loop structure with the rows and columns swapped to print the transpose of the input matrix.
CUDA First Programs: Computer Architecture CSE448 : UAA Alaska : NotesSubhajit Sahu
The document provides examples of simple CUDA programs for adding vectors and 2D arrays using kernel functions. It begins with a "Hello World" CUDA program and explains how to compile and run it. It then shows a CUDA program that adds two numbers in a kernel function using thread indexing. Next, it presents a CUDA program for adding two vectors with one thread per element. Finally, it demonstrates how to map a 2D array to linear memory and write a kernel to add 2D arrays using block indexing.
Qt is a cross-platform application development framework for building graphical user interfaces. It includes libraries for core functionality, GUI components, and XML handling. The main tools that come with Qt are the Meta Object Compiler (moc) for C++ extensions, Qt Designer for visually creating GUIs, Qt Linguist for internationalization, qmake for automating builds, and Qt Creator as an integrated development environment. Qt uses a scene graph with group, property, and shape nodes to render 3D graphics with Coin3D and the SoQt library providing a bridge to 2D Qt interfaces. Example code sets up a root node containing a cube shape, creates an examiner viewer to display the scene graph, and runs the main
Building a Big Data Machine Learning PlatformCliff Click
This document discusses H2O, an open-source platform for doing parallel distributed machine learning. H2O can be accessed via REST and JSON, R, Python, and Java. It provides algorithms like generalized linear models, random forests, and deep learning. Sparkling Water allows moving data between Spark RDDs and H2O frames. Simple data-parallel coding in H2O uses MapReduce-style programming. This allows writing distributed algorithms easily in Java or Scala with good performance.
This document provides an overview and introduction to GlobalISel, including:
- What GlobalISel is and how it differs from SelectionDAG
- The key stages in the GlobalISel compilation flow
- Examples of basic arithmetic instruction selection and type legalization in GlobalISel
- Tips for building GlobalISel support in a backend, such as handling constants and register selection
Solidity is a programming language for writing smart contracts on the Ethereum blockchain. It aims to make writing correct contracts easier by having syntax similar to JavaScript to leverage existing developer skills, expressing concepts clearly through classes for reuse, and making testing and formal proofing of contracts simpler. Solidity also includes features like an inbuilt documentation system and storage constructs to facilitate contract development and ensure contracts behave as intended.
Large Scale Vandalism Detection in Knowledge Bases: PyData Berlin 2017Alexey Grigorev
This document summarizes Alexey Grigorev's approach to detecting large scale vandalism in knowledge bases like Wikidata for the WSDM Cup 2017 competition on vandalism detection. The competition task was to predict whether a Wikidata revision should be rolled back or not based on features from the revision. Grigorev's best performing model used a linear SVM on a hashed one-hot encoding of combined features from the revision including user, title, and comment features. This approach achieved an AUC of around 0.96 on the competition test set.
This document discusses NEON intrinsics and how to use them to optimize code for ARM processors that support SIMD instructions. It provides an overview of NEON, describes the data types and some common instructions, and gives examples of using intrinsics for tasks like color space conversion. Performance tests show intrinsics code can be 5-7 times faster than plain C and on par with hand-written assembly. Guidelines are provided for writing efficient NEON intrinsics code.
Timur Shemsedinov "Пишу на колбеках, а что... (Асинхронное программирование)"OdessaJS Conf
This document introduces MetaSync, a library for asynchronous programming in JavaScript. It discusses current asynchronous patterns like callbacks, promises, and async/await and their limitations. MetaSync aims to address these issues through function composition for asynchronous I/O, specific asynchronous abstractions, and a short, expressive syntax. It allows composing asynchronous functions sequentially or in parallel and includes tools like collectors, throttling, and queues to manage asynchronous data and operations.
VB6 allows for the declaration and use of different variable data types, including integer, byte, long, decimal, single, double, string, date, and object. Variables must be declared with a valid name and data type before being assigned and used. Constants are similar to variables but their values do not change. Arithmetic, logical, and other operations can be performed. Assignment statements are used to assign values to variables. Comments can be added to explain code. The immediate window allows for testing values at runtime. Input boxes and message boxes can be used to get input and display output.
The document summarizes the WSDM Cup 2017 competition on vandalism detection in Wikidata revisions. The goal is to predict whether a Wikidata revision should be reverted or not. The competition provides a Wikidata dump with 72 million revisions from 2012-2016 to train and validate models, and tests on unseen future data. Key challenges include class imbalance with positives being 0.0025% of revisions, and a 4GB memory limit for models on their evaluation platform. The document discusses the provided data features and different models tried, with the best performing model being an SVM trained on hashed bag-of-words features of revision metadata and text.
This document appears to be an exam paper for a Programming in C course. It contains instructions for candidates regarding the structure and timing of the exam. It has two sections - Section A contains 10 short answer questions, and Section B contains 4 long answer questions.
The questions cover various fundamental concepts in C programming such as tokens, data types, functions, pointers, file handling, loops, control structures, sorting and structures. For example, one question asks to explain the difference between while and do-while loops with an example, and another asks to write a program to sort an array using bubble sort.
The document provides details on the total number of pages, questions, maximum marks and subjects codes for the exam paper.
This document discusses password cracking methods, including storing passwords, hashing versus encryption, common hashing algorithms, and rainbow table attacks. It introduces password cracking and describes storing passwords in plaintext or hashed/encrypted formats. It also explains how rainbow table attacks work by pre-computing hash values into a lookup table to crack password hashes more efficiently than brute force methods.
This document outlines coroutines as a way to run multiple tasks with a single CPU by allowing tasks to yield control back and forth. It discusses processes, threads, and events, and then introduces coroutines as a way to run tasks concurrently without threads. It presents three C coroutine library approaches - protothreads using switch/case, state threads using longjmp/setjmp, and coroutines using ucontext. It provides an example of a protothread implementation and references for further reading.
1. The document uses PROC IML to perform linear regression on data in the komstat.regresi dataset. It fits a regression model, calculates residuals, and saves the residuals and predicted values to a new dataset for plotting.
2. The document defines two variables x and y with values, then calls a user-defined function square() that squares its argument. It runs square(), passing the first value of x and y.
3. The document uses a do-until loop to iteratively calculate an approximation of π. It initializes variables, calculates a new value at each iteration, and continues until the difference between iterations is less than a threshold. It then prints the final approximation.
Payment channels allow for off-chain transactions between two parties to enable trustless, high-volume, low-cost micropayments on the Bitcoin blockchain. The key aspects are: (1) a multi-signature wallet is set up and funded, (2) off-chain balance updates occur via time-locked transactions, (3) the final on-chain transaction closes the channel by broadcasting the final signed state. Hashed Timelock Contracts (HTLCs) extend this to enable payments across multiple channels by using hash preimages and timelocks to guarantee delivery or refunds. Bidirectional channels allow payments in both directions through commitment transactions signed by both parties.
Fantastic caches and where to find themAlexey Tokar
"Magical caches are terrorizing engineers. When engineers are afraid, they debug. Contain this, or it’ll mean refactoring." (c)
The story of how an internal Hibernate cache can consume 99% of 30GiB of your application memory with just the addition of a single line of code. The way it was discovered and root cause analysis to prevent it in the future will be the topic of the talk.
The document contains code for two methods in a CMap2View class:
1. OnLButtonDown handles left mouse button clicks by getting a device context, setting the map mode and viewport, selecting a blue pen, and drawing coordinate axes and labels.
2. OnRButtonDown handles right mouse clicks by getting a device context, setting the map mode and viewport, selecting a red pen, and drawing diagonal lines across the viewport.
This document discusses Coq GC (garbage collection). It provides an overview of Coq and how it can be used to formally prove properties of a garbage collector. It presents the definition of a Mem record to represent memory state and definitions for MarkPhase and Safety properties. It also discusses implementing mark phase in OCaml and proving it is correct using Coq.
This document contains slides from a lecture on getting started with C++ programming. It discusses the basics of C++ including classes, scope, input/output, and memory management. The slides provide examples of defining classes with public, private, and protected components. It also demonstrates defining classes in a single file versus splitting the class definition and implementation across multiple files.
This C++ code defines a doubly linked list data structure. It includes a node class with data, previous, and next pointers. The doubly linked list class contains functions to add nodes to the beginning or end of the list, add a node after a specified location, delete a node, display all nodes, count the total nodes, and destroy the list. The main function contains a menu to test the doubly linked list functions by adding, deleting, displaying, and counting nodes.
This C++ program accepts a 3x3 matrix from the user as input, prints out the original matrix, and then prints the transpose of that matrix - with the rows and columns swapped. The user is prompted to enter 9 integers to populate a 2D array representing the 3x3 matrix. Two nested for loops print out the original matrix and then the program uses the same nested loop structure with the rows and columns swapped to print the transpose of the input matrix.
CUDA First Programs: Computer Architecture CSE448 : UAA Alaska : NotesSubhajit Sahu
The document provides examples of simple CUDA programs for adding vectors and 2D arrays using kernel functions. It begins with a "Hello World" CUDA program and explains how to compile and run it. It then shows a CUDA program that adds two numbers in a kernel function using thread indexing. Next, it presents a CUDA program for adding two vectors with one thread per element. Finally, it demonstrates how to map a 2D array to linear memory and write a kernel to add 2D arrays using block indexing.
Qt is a cross-platform application development framework for building graphical user interfaces. It includes libraries for core functionality, GUI components, and XML handling. The main tools that come with Qt are the Meta Object Compiler (moc) for C++ extensions, Qt Designer for visually creating GUIs, Qt Linguist for internationalization, qmake for automating builds, and Qt Creator as an integrated development environment. Qt uses a scene graph with group, property, and shape nodes to render 3D graphics with Coin3D and the SoQt library providing a bridge to 2D Qt interfaces. Example code sets up a root node containing a cube shape, creates an examiner viewer to display the scene graph, and runs the main
Building a Big Data Machine Learning PlatformCliff Click
This document discusses H2O, an open-source platform for doing parallel distributed machine learning. H2O can be accessed via REST and JSON, R, Python, and Java. It provides algorithms like generalized linear models, random forests, and deep learning. Sparkling Water allows moving data between Spark RDDs and H2O frames. Simple data-parallel coding in H2O uses MapReduce-style programming. This allows writing distributed algorithms easily in Java or Scala with good performance.
This document provides an overview and introduction to GlobalISel, including:
- What GlobalISel is and how it differs from SelectionDAG
- The key stages in the GlobalISel compilation flow
- Examples of basic arithmetic instruction selection and type legalization in GlobalISel
- Tips for building GlobalISel support in a backend, such as handling constants and register selection
- Powered by the open source machine learning software H2O.ai. Contributors welcome at: https://github.com/h2oai
- To view videos on H2O open source machine learning software, go to: https://www.youtube.com/user/0xdata
spaGO: A self-contained ML & NLP library in GOMatteo Grella
Introduction to spaGO, a beautiful and maintainable machine learning library written in Go designed to support relevant neural network architectures in natural language processing tasks.
Github: https://github.com/nlpodyssey/spago
An Open Discussion of RISC-V BitManip, trends, and comparisons _ ClaireRISC-V International
Join RISC-V BitManip industry leader Claire Xenia Wolf and Dr. James Cuff for an open and lively discussion with an interactive Q&A on RISC-V and BitManip including trends and comparisons with the existing architecture landscape including x86 and ARM and what specifically makes RISC-V unique.
Crossing Abstraction Barriers When Debugging In Dynamic LanguagesBastian Kruck
Programmers use abstractions to reduce implementation effort and focus on domain-specifics. The resulting application often runs in a convenient guest runtime that is provided by an increasingly complex ecosystem of libraries, VMs, JIT-compilers, operating systems, and native machine architectures.
While abstractions are designed to hide complexity, experience tells us that “All non-trivial abstractions, to some degree, are leaky.”1. Leaky abstractions are problematic, for example, when the use of under-documented or unspecified behavior of a library or virtual machine causes a failure in domain-specific code. Users may need to understand whether the virtual machine is just under-documented but working as intended or faulty. At that point, the artificially created barrier that protects language users from domain-independent complexity becomes an obstacle. We call this crossing the abstraction barrier.
Prior research has investigated how symbolic debuggers can work across language barriers. However, this resulted in dedicated workflows and UIs that differ substantially from traditional symbolic debugging. Users need to remember these rather elaborate workflows, and the learning effort is often larger than the perceived benefit of answering the given debugging questions. As a result, the value of these tools may not be immediately recognized and developers will only consider learning them after having spent much time with conventional debugging methods.
We propose an interaction model that generalizes the conventional symbolic debugger so that the known workflow can be kept and users can opt-in to cross-abstraction debugging when necessary. By replacing the traditional list view on the active call chain with a tree model and adding perspective selection, we obtain an unobtrusive, minimal user interface that still offers powerful cross-language debugging features.
This document discusses parallel programming using GPUs and MICs in Python, R, and MATLAB. It begins with background on Moore's law and the end of processor speed increases, leading to a focus on parallelism. It then covers different parallel architectures like SMP, MPI, and GPGPU and tools to program them in the three scripting languages. Specific libraries and functions are discussed, like OpenMP, CUDA, pyCUDA, rgpu, and GPU arrays in MATLAB. Examples and performance comparisons demonstrate using the GPU for linear algebra and statistical operations in R. Overall issues around parallelism, Amdahl's law, and hierarchical hardware and software architectures are covered.
In this deck from the GPU Technology Conference, Christian Trott from Sandia National Laboratories presents: The Kokkos C++ Performance Portability EcoSystem.
"The Kokkos C++ Performance Portability EcoSystem is a production-level solution for writing modern C++ applications in a hardware-agnostic way. The ecosystem is part of the U.S. Department of Energy's Exascale Project, a national effort to prepare the HPC community for the next generation of supercomputing platforms. We'll give an overview of what the Kokkos EcoSystem provides, including its programming model, math kernels library, tools, and training resources. We'll provide success stories for Kokkos adoption in large production applications on the leading supercomputing platforms in the U.S. We'll focus particularly on early results from two of the world's most powerful supercomputers, Summit and Sierra, both powered by NVIDIA Tesla V100 GPUs. We will also describe how the Kokkos EcoSystem anticipates the next generation of architectures and share early experiences of using NVSHMEM incorporated into Kokkos."
Watch the video: https://wp.me/p3RLHQ-kjh
Learn more: https://github.com/kokkos
and
https://www.nvidia.com/en-us/gtc/
Sign up for our insideHPC Newsletter: http://insidehpc.com/newsletter
This document provides an overview of Go programming concepts including slices, maps, structs, make, and new. It includes links to interactive code examples demonstrating how to use slices to store and access elements, maps to associate keys with values, and structs to group related data. The key differences between make and new are explained, where make is used to initialize slices, maps, and channels, and new returns a pointer to a newly allocated zero value.
In this slide, I introduce how I implement RSA256 algorithm with verilog and verify with verilator.
The project use C++ to build the C-model and SystemC model.
To help build the model, we create a C++ class vint to simulate the behavior of Verilog. It supports normal Verilog operation with more strict rules.
The systemC model can be directly translated into Verilog, so the intention of Verilog design is quite clear and concise.
To simplify the simulation, we limit our module to be one input port and one output port. The port uses the valid/ready protocol to control the data flow, which can be modeled as sc_fifo in systemC.
With these abstraction, we can easily implement unit test for all of our modules, and make sure they act as what we want.
----
Please access the source code at:
https://github.com/yodalee/rsa256
MySQL/MariaDB Parallel Replication: inventory, use-case and limitationsJean-François Gagné
- The document discusses various parallel replication technologies in MySQL/MariaDB including schema-based parallel replication in MySQL 5.6, group commit-based approaches in MariaDB 10.0 and MySQL 5.7, and optimistic parallel replication in MariaDB 10.1.
- It provides an overview of how each approach tags and dispatches transactions to worker threads on slaves and their limitations regarding transaction ordering and gaps.
- Examples from Booking.com show how parallel replication can scale to thousands of servers but also hit issues like long transactions blocking progress.
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)Андрей Новиков
PostgreSQL has become the most popular RDBMS in the Ruby ecosystem in the last decade. It has a great set of built-in features, including a variety of versatile data types, both common and very specific.
But when we load data from the database to our application code, we're working with Ruby data types: classes from the standard library, Rails, or other gems. So while they can seem to be the same as their PostgreSQL counterparts, they are not absolutely identical, and sometimes that could lead to surprising behavior.
In this talk, I would like to explore the power of data types in PostgreSQL and Ruby and how to work with them properly to use both Ruby and PostgreSQL on 100% of their power!
Since 5.7.2, MySQL implements parallel replication in the same schema, also known as LOGICAL_CLOCK (DATABASE based parallel replication is also implemented in 5.6 but this is not covered in this talk). In early 5.7 versions, parallel replication was based on group commit (like MariaDB) and 5.7.6 changed that to intervals.
Intervals are more complicated but they are also more powerful. In this talk, I will explain in detail how they work and why intervals are better than group commit. I will also cover how to optimize parallel replication in MySQL 5.7 and what improvements are coming in MySQL 8.0.
This document describes designing a customized hash function for processing market data in high-frequency trading systems. It discusses sources of latency, software and hardware optimization techniques, and implementing a data structure using a hash table with symbols as keys. The implementation initializes the hash table by loading symbols in descending order of expected activity and resolving collisions. It also describes expanding the table to add new symbols and finding an optimal hash table size to minimize collisions and costs.
H2O Design and Infrastructure with Matt DowleSri Ambati
This document provides an overview of H2O, an open source machine learning platform that allows for distributed, in-memory analytics of large datasets. It discusses how H2O works, including how it uses a map-reduce style to parallelize machine learning algorithms across multiple nodes. The document demonstrates starting an 8-node H2O cluster on Amazon EC2 and importing a 23GB dataset in under a minute, significantly faster than with other tools. It also summarizes how H2O's distributed fork-join framework executes tasks across nodes and shares data through its distributed data structures.
This document discusses how Qemu works to translate guest binaries to run on the host machine. It first generates an intermediate representation called TCG-IR from the guest binary code. It then translates the TCG-IR into native host machine code. To achieve high performance, it chains translated blocks together by patching jump targets. Key techniques include just-in-time compilation, translation block finding, block chaining, and helper functions to emulate unsupported guest instructions.
“Technical Intro to Blockhain” by Yurijs Pimenovs from Paybis at CryptoCurren...Dace Barone
He will give an introduction talk about Blockchain technology technical aspects like cryptography, protocols, APIs and scripting with focus on explaining how Bitcoin and other blockchain works and what they consist of.
Yurijs is a Chief Technical Officer at Paybis, blogger at coinside.ru , blockchain enthusiast since 2011.
This document discusses trends in computing and data architectures. It notes that hardware is becoming more virtualized through containers and functions, bringing code closer to storage. Meanwhile, data structures are becoming more distributed through databases, distributed databases, and distributed ledgers. Computing scopes are decreasing while storage scopes are increasing. This is because data is inert but code can be more tightly controlled at smaller scopes. The document also discusses challenges of integrating microservices with data, including consistency, and notes the importance of people and processes ("metadata") alongside technology.
Blockchains provide a fertile ground for storing and managing big data in a decentralized manner. Some examples of using blockchains for big data include Numer.ai for storing machine learning data shapes, IPFS and FileCoin for distributed storage, and BigchainDB as a distributed database with blockchain characteristics. Blockchains allow users to store and control their own data while granting view rights to interested and trusted parties, making it even GDPR compliant by keeping users as the data controllers.
The document discusses the Lightning Network, which aims to scale bitcoin transactions by enabling instant, low-cost payments through off-chain payment channels. It describes key concepts like payment channels, routing payments across multiple nodes, and implementations. The Lightning Network allows for near-instant micropayments, smart contracts, and cross-chain atomic swaps by using timelocks and hashed timelock contracts to securely transfer bitcoin off the main blockchain.
Smart contracts can be deployed and executed on the Ethereum blockchain using web3.js. Web3.js is a JavaScript API that allows interaction with Ethereum clients like Geth to deploy contracts, call contract functions, and get information from the blockchain. Contracts are written in languages like Solidity and deployed through transactions that store the compiled code at an address. Once deployed, the contract code and data resides on the blockchain and can be interacted with through web3.js by calling functions or accessing public variables.
Smart contracts are computer protocols that facilitate, verify, or enforce the negotiation or performance of a contract. On Ethereum, a smart contract is code and data that resides at a specific address on the blockchain. The Ethereum Virtual Machine is the runtime for smart contracts, which can call other contracts, have storage to store data, and can remove themselves from the blockchain. Smart contracts are defined through transactions and deployed to the blockchain, then users can interact with them through their ABI interface. Developers use languages like Solidity to code smart contracts and tools like Truffle to test contracts locally before deployment.
This document provides an overview of Bitcoin and blockchain technology. It describes how Bitcoin was created in 2008, functioning as a transmission protocol, distributed ledger, and stored value account without the need for settlement. Transactions are recorded on a blockchain, with a new block added every 10 minutes. The blockchain records transaction hashes in blocks linked by cryptographic hashes. Analyzing Bitcoin transaction data can provide useful statistics about usage trends, price movements, and detect spam attacks.
MCOMMAD discusses blending advertising and mobile commerce (m-commerce). It provides an overview of NETOPIA, the largest SMS aggregator and payment gateway in Romania, and their mobilPay mobile wallet. The document notes that while mobile advertising currently makes up around 5% of global ad spend, mobile purchases account for 35-40% of all purchases. It introduces the mobilPay wallet as not just a payment tool but a marketing platform, allowing clear tracking of transactions resulting from marketing actions. Features mentioned include Push2Pay notifications, offline in-store functionality, and QR/BLE/NFC codes to enable online and offline interactions.
MongoDB and Redis are popular NoSQL alternatives to SQL databases. MongoDB is a document-oriented database that does not require a predefined schema and allows embedding documents. It supports features like sharding, replication, and indexing. Redis is an in-memory key-value store that persists data to disk. It supports data structures like strings, hashes, lists and sets. Both databases are commonly used for caching, queues, and other use cases where flexibility and performance are important.
The document discusses the lambda architecture, which is designed to handle large volumes of data and queries over that data. It describes the three main layers - batch, speed, and serving layers - that make up the lambda architecture. The batch layer handles batch processing and generates a master dataset. The speed layer handles real-time queries and compensates for latency in the batch layer. The serving layer indexes and exposes views of the data to support ad-hoc queries.
This document discusses the history and current state of Bitcoin and blockchain technology. It provides an overview of Bitcoin's origins with Satoshi Nakamoto's 2008 whitepaper, the genesis block from 2009 referencing the financial crisis, and prior related work. Benefits of Bitcoin include anonymity, transparency, security, and speed of value transfer. Use cases mentioned include escrow, smart contracts, issuing securities, and digital notaries. Challenges integrating with traditional finance are noted. The document concludes with background on the author's payments company in Romania.
Presentation for the first Bucharest Big data meetupFelix Crisan
RT Analytics provides real-time analytics and insights for their mobile payment and SMS aggregation businesses in Romania. They use a data streaming platform with Storm for scalable stream processing, RabbitMQ for queuing transaction data, and Redis for fast in-memory storage. This allows them to aggregate transaction details in real-time by merchant, status, error, currency and time interval. The setup provides operational insights, transaction monitoring, and business dashboards to gain better understanding of queries, insights, and predictions to improve their services.
This document discusses using Jupyter notebooks, Pandas, and Spark for analytics pipelines on both small and large datasets. It summarizes the challenges of working with different data volumes and timeframes. For small mobile transaction data, notebooks with Pandas and R are used, while larger retail data is analyzed with Spark ML and scikit-learn in notebooks running in Docker containers. Future work includes applying Spark to additional domains and building forecasting and streaming capabilities.
This document discusses the history and potential of blockchain technology. It traces the origins of TCP/IP and Bitcoin, comparing Bitcoin to TCP/IP for the internet. Blockchain is described as a transmission protocol, distributed ledger, and stored value account. The document outlines increasing corporate investment and experimentation in blockchain applications across banking, exchanges, infrastructure, and other areas. It argues that blockchain will fundamentally change the financial industry in the same way TCP/IP transformed communication, and that "blockchain is the TCP/IP of money."
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
3. Elliptic curves refresher (or intro, as the case might be)
● It all starts with a prime number, e.g.
p=2256
- 232
- 29
- 28
- 27
- 26
- 24
- 1
● And a regular looking equation, such as
y2
= x3
+ 7
● And a point G (x,y - calculated from
x=79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798)
● ECDSA sig (r,s) => s = r-1
(H(m)+ka)
4. Operations
● P=kG
● One can add points on the curve P+R=Q
● One can multiply points with scalars
R=xP (can be seen as R=P+P+....+P - x
times)
● Most important: aG+bG=(a+b)G
(translates to: sum of pubkeys has priv
key the sum of privkeys)
7. Warning!
● The previous graphs are valid for real
numbers and we’re actually working in Zp
which results in a graph that looks
more like a scatterplot
8. Real numbers vs prime field
Img Src https://www.maximintegrated.com/en/app-notes/index.mvp/id/5767
9. Schnorr
● Signature (k priv key P=kG, m message
to sign, r - random, R=rG)
s = r - h(m||R)k then signature for m
is (r,s)
● Verification
sG = rG - h(m||R)k => S = R - h(m||R)P
10. Aggregation
● The immediate benefit of Schnorr sig is
that they can be aggregated and batch
verified => reduction in tx size +
faster transaction (maybe even block)
validation time
● BIP-SCHNORR (no official # yet)
11. Other advantages
● Provable secure in ECDLP random-oracle
model (ECDSA is _not proven_)
● Non-Maleable (in ECDSA 3rd party can
alter sig for P and m into another sig
for P and m)
● O(1) - due to aggregation
● Batch verification
12. Scripts
● Any script can be represented as a tree
○ To be more specific: even as a binary tree
○ We’re talking about stack-based Bitcoin-like scripts
○ Polish notation anyone?
● This means that one can make a
commitment to a script by Merkle-izing
it
15. MAST
● Scripts can be anyway revealed only on
spend (BIP 16)
● Benefit: one does not have to reveal
anything than the executed path
● Saves space
● More Privacy!
● BIP 114,117
17. Bitcoin Scripts - P2SH
● P2SH
OP_HASH160 <scripthash> OP_EQUAL
● In SegWit lingo (P2WSH)
OP_0 <scripthash>
● The data length classifies vs previous
case (20 bytes here vs 32 before)
18. Taproot
● P2SH and P2PKH are distinguishable
● Can we merge both?
○ E.g. ContractHash = P + h(z||P)G
● Once we do this
○ Spending means just signing with k+h(z||P) <- works even now
OR
○ Provide script z and let the stack decide <- needs a new opcode
19. Putting it together
● New opcode (OP_NEW)
● In output OP_NEW <pubkey>
● In input (to spend)
○ Provide <signature> in P2PKH mode
○ OR
○ <P> <script>[]<arguments> (taproot)
○ <scriptsig> <script> []<arguments> (graftroot)
● BIP-TAPROOT (no official # yet)
20. Graftroot
● Extension of Taproot
● Focuses on the “everybody agrees” case
● Allows delegating signing to a separate
script
● Is interactive (compared to Taproot
which is not)
21. ELTOO
● SIGHASH_NOINPUT (BIP 118)
● HF only for SegWit scripts with ver>=1
● Allows an input _not_ to reference a
specific previous output (commitment to
pubkey, not to input)
● Tx can be bound to any output that
matches <witness> and for which
<witnessProg> yields true