728x90

The error message SELECT command denied to user ''@'localhost' for table 'mysql.user' in DBeaver usually indicates that the user does not have sufficient privileges to access the mysql.user table.

Here are the steps to resolve the issue:

  1. Connect to the MySQL server with an administrative account.
  2. Run the following command to grant the required privileges:
 
GRANT SELECT ON mysql.* TO 'your_user'@'localhost';
 

Replace "your_user" with the username you are using to connect to the MySQL server.

  1. Flush the privileges to make the changes take effect:
 
FLUSH PRIVILEGES;
 
  1. Try connecting to the MySQL server using DBeaver again and see if the error still occurs.

This should resolve the issue and allow you to access the mysql.user table in DBeaver.

728x90
728x90

"mysql" is the basic command to start the MySQL client, which is used to connect to and interact with a MySQL server. This command assumes that you want to connect to the MySQL server as the current operating system user.

 

"mysql -u root -p" specifies the MySQL user account that you want to use to connect to the MySQL server. "root" is the username, and "-p" is the option that prompts for a password. So, this command connects to the MySQL server as the "root" user, and you need to enter the password for that user to access the MySQL server.

728x90
728x90

새로 맥북 사서 이것 저것 설치하다가 

도커를 써보기로 했다. 회사에서 도커와 디비를 연결해서 써서 같은 환경으로 해보면 공부되고 좋을 것 같아서. 

 

근데 도커 왜쓰지? 

저번에 개인프로젝트할때는 없이도 했는데.. 라는 생각이 들었다.

 

https://www.44bits.io/ko/post/why-should-i-use-docker-container#%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C%EC%9D%98-%EA%B4%80%EC%A0%90%EC%97%90%EC%84%9C-%EB%8F%84%EC%BB%A4%ED%8C%8C%EC%9D%BC-%EB%B0%94%EB%9D%BC%EB%B3%B4%EA%B8%B0

 

왜 굳이 도커(컨테이너)를 써야 하나요? - 컨테이너를 사용해야 하는 이유

컨테이너는 서버 애플리케이션을 배포하고 서버를 운영하는 표준적인 기술이 되어가고 있습니다. 하지만 처음 사용해본다면 그 장점이 잘 와닿지 않을 수도 있습니다. 왜 굳이 도커 컨테이너를

www.44bits.io

 

 

그래서 이 글을 읽었다!@ 귯귯귯

아직 완전히 이해 안되긴 하지만..

 

도커는 서버를 관리해준다!

우리는 여러 서버를 쓸 때 발생하는 문제, 서버기록들.. 등을 도커로 관리할 수 있다. 

서버지식이 없어도 도커를 통해 쉽게 작업할 수 있다. 

 

 

"

도커파일 = 서버 운영 기록

도커 이미지 = 도커 파일 + 실행시점 

도커 컨테이너 = 도커 이미지  + 환경변수

"

 

 

 

728x90
728x90

플러그인(사용자가 원하는 기능을 추가하고 생성하여 쓸 수 있는  프로그램)

 

플러그인은 자바스크립트, html,css로 만들어졌지만 차이가 있다

플러그인 시스템은 보안을 신경써야하기 때문에 

브라우저 api의 접근을 다르게 할 필요가 있었다

 

그래서 

1. 피그마 파일 콘텐츠에 어떻게 접근하는거야?

2. 내 플러그인을 위한 유저인터페이스 어떻게 만드는 거야?

3. 어떻게 네트워크 요청을 할 수 있는거야?

 

sandbox 샌드박스

(브라우저 api(주고 받을 수 있는 통신이라 이해하면됨)를 노출하고 

있지 않은 작은 자바스크립트 환경 )

 

성능을 위해 플러그인 코드가 샌드박스의 메인 스레드에서 실행되는

모델로 사용하기로 했어

물론 여기에도 작은 콘솔 api는 있지만 

xmlHttprequest(서버와 상호작용할 때 사용하는 객체,서버로부터 xml 데이터 가져올 때 쓰임) 그리고 과 같은 것들은 샌드박스에서 직접 하지 못하게 했어

 

ui를 보여주거나 네트워크를 접근하기 위한 브라우저 api를 

사용하려면 너는 요런 태그(<script>

안에 있는 <iframe>

)를 사용해야돼

간단히 보면 이 함수를 이용해서 작동되고 있어

이 <iframe>안에서 너는 html, 자바스크립트 그리고 브라우저 api 에도 

접근할 수 있는겨. 

 

메인 스레드(메인 실행구조, 동작구조)는 피그마의 "scene 씬"에 접근할 수 있어

(뭐뭐뭔소리야? -피그마 문서를 구성하는 계층의 계층이래. 옥히~) 하지만 브라우저 api는

접근할 수 없어 

반대로 iframe 그 태그는 브라우저api에 접근할 수 있는데 

피그마 씬에는 접근 못해 

 

대신 이 둘, 메인 스레드와 iframe은 메세지를 주고 받으면서 소통할 수 있어

 

플러그인이 일 다 마쳤을 때 

figma.closePlugin() 함수를 불러서 피그마한테 끝냈다고 말해줘. 

 

그렇지 않으면 사용자는 너의 플러그인이 동작중이다~ 를 계속 보게 

될거니까. 

그리고 사용자는 플러그인이 동작하는 동안에 

피그마가 나타내는 ui를 사용해서 언제든지 플러그인을 취소할 수 있어

이렇게 되면 피그마는 그 자체로 figma.closePlugin()함수 불러서 끝내겠지

 

출처 :  https://www.figma.com/plugin-docs/how-plugins-run/

 

728x90
728x90

✖ Installing Bundler error Your Ruby version is 2.6.10, but your Gemfile specified 2.7.5

ruby version error 해결 

//루비버전관리 프로그램 설치
brew install rbenv

//나는 mac 유저라서 터미널에서 바로 
code . 
//쳐주면 .zshrc파일 들어갈 수 있음. 접근해서 맨밑에 추가함
eval "$(rbenv init -)"

//원하는 버전 설치
rbenv install 2.7.5

//설치완료 확인 (이제는 자동으로 해줘서 안해도 되는 명령어라고 함)
rbenv rehash

//버전 변경 (이것도 자동으로 해주는 거같음 )
rbenv global 2.7.5

//버전확인 
ruby --version

//버전변경했는데도 자꾸 이전 버전이 뜬다면 터미널 껐다가 다시 버전체크해보자. 껐다 다시 킨 다음에야 나는 변경된 걸로 떴음

https://dololgun.github.io/macos/mac-ruby-reinstall/

 

MacOS ruby 버전 관리

mac에서 ruby버전 관리하기

dololgun.github.io

 

근데 ruby가 뭘까?

출처 :&nbsp;https://opentutorials.org/module/2878/16498

객체지향 언어인데 자유도가 있는 언어라고 한다

 

reactnative에서 ruby 쓰는 이유는 

Because iOS uses CocoaPods to handle dependencies which was written in Ruby

ios 가 cocoapods 사용하는데 이게 ruby로 쓰여서.

 

 

 

cocoapods 에러

https://reactnative.dev/docs/next/environment-setup

sudo arch -x86_64 gem install ffi
//이건 프로젝트 폴더 들어가서 cd ios 안에서 했다 pod install 해준 것
arch -x86_64 pod install

 

혹시몰라서 프로젝트 다 삭제하고 

npx react-native init AwesomeTSProject --template react-native-template-typescript

다시 하니 에러 없이 잘 됐다. 

 

 

 

아래글 초기셋팅 참고로 굿

https://zeunny.tistory.com/6

 

[React Native] 공식 문서 보고 Mac OS에서 개발 환경 설정하기

[React Native] 공식 문서 보고 Mac OS에서 개발 환경 설정하기 공식 문서는 아래 링크를 클릭해서 보면 된다. https://reactnative.dev/docs/environment-setup Setting up the development environment · React Native This page will h

zeunny.tistory.com

 

728x90
728x90

동기처리

순차적으로 실행됨을 의미한다.

요청하면 응답할 때까지 다른 걸 실행하지 않고 기다린다. 

(요청과 응답이 동시에 이뤄진다는 뜻.

주문을 예시로 많이 드는데 떡볶이를 주문하고 떡볶이가 나올 때까지 다른 손님들이 순서대로 줄이 서있다고 상상하면 된다.)

 

 

비동기 처리 

동시다발적으로 병렬적으로 실행됨을 의미한다.

요청과 응답이 함께 이뤄지지 않는다.

요청하고 응답을 기다리지 않고 다른 요청들을 한다.

 

 

값을 받아오고 사용할 때 

값이 받아오기도 전에 함수가 실행되는 걸 막기 위해서

동기처리로 해결한다. 

 

 

그럼 자바스크립트 언어는 동기적 언어인가?

비동기적 언어라고 생각하기 쉬운데

(왜냐면 사실 내가 코드짤 때 병렬적으로 이뤄지는 함수를 동기처리, 순차적으로 실행되게 바꾸게 되니까...  비동기적 언어인가 싶었음 )

 

자바스크립트는 동기적 언어이다.

 

하지만! 

자바스크립트를 브라우저에서 구동되고 이때 비동기적으로 이뤄진다. 

 

 

 

Event Loop를 포함해 Browser의 구성요소 역할을 이해했다면, 자바스크립트 언어 자체가 비동기 특성을 제공하는게 아니라 Browser의 구성 요소들이 제공한다는 사실을 이해할 수 있다.

...

그러면 우리가 만든 프로그램의 코드를 실행하라고 JS엔진에게 명령하는 것은 누구일까? 실제로 JS엔진은 고립되어서 수행되는 것이 아니고 호스팅 환경 내에서 수행된다. 대부분의 개발자들에게 이것은 웹 브라우저 혹은 Node.js일 것이다.  이러한 모든 환경에서 적용되는 최대공약수는 호스팅 환경에 내장된 메커니즘인 이벤트루프이다.. 이것은 시간의 흐름에 따라 코드의 수행을 처리하며 그 때마다 JS엔진을 작동시키게된다. 따라서 이벤트루프라는 호스팅 환경 내의 메커니즘으로 인해, JS엔진에게 비동기적 수행을 명령하게 되고, JS가 비동기적으로 실행되게 되는 것이다.


출처: https://hazel-developer.tistory.com/179#recentComments

 

async await 쓰면

비동기처리를 마치 동기처리처럼 보이게 할 수 있다.

 

 

await  키워드는 async 키워드가 붙어있는 함수 내부에서만 사용할 수 있으며 비동기 함수가 리턴하는 Promise로 부터 결과값을 추출해줍니다. 즉, await 키워드를 사용하면 일반 비동기 처리처럼 바로 실행이 다음 라인으로 넘어가는 것이 아니라 결과값을 얻을 수 있을 때까지 기다려줍니다. 따라서 일반적인 동기 코드 처리와 동일한 흐름으로 (함수 호출 후 결과값을 변수에 할당하는 식으로) 코드를 작성할 수 있으며, 따라서 코드를 읽기도 한결 수월해집니다.
출처: https://www.daleseo.com/js-async-async-await/

 

 

찾아 읽다 보니 

JS를 비동기적으로 실행하게 해주는 대표적인 방식으로 Callback / Promise / Async & Await 가 있다.

async await를 쓰면 비동기인데 동기적으로 처리한다~라고 이해하면 되겠다.

 

callback

promise

 

 

async/await의 목적은 프로미스의 이용을 쉽게하는 것입니다.
출처: https://engineering.huiseoul.com/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94%EA%B0%80-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-%EB%B6%80%EC%83%81-async-await%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%BD%94%EB%94%A9-%ED%8C%81-%EB%8B%A4%EC%84%AF-%EA%B0%80%EC%A7%80-df65ffb4e7e
 

Medium

$150,000 Amazon Engineer vs. $300,000 Google Engineer

engineering.huiseoul.com

 

이거 다시 읽어보자..일단 자고 내일 마저 수정해야지..

 

promise 와 callback차이도 봐야겠엉

728x90
728x90

https://docs.ethers.io/v5/api/utils/display-logic/#utils-formatUnits

 

Display Logic and Input

Documentation for ethers, a complete, tiny and simple Ethereum library.

docs.ethers.io

bignumber

BigNumber는 모든 크기의 숫자에 대한 수학 연산을 안전하게 허용하는 개체입니다.

값을 반환해야 하는 대부분의 작업은 BigNumber를 반환하고 값을 허용하는 매개변수는 일반적으로 이를 허용합니다... 이더리움의 많은 작업은 JavaScript에서 사용할 수 있는 안전한 값 범위를 벗어난 숫자에서 작동합니다.

 

한마디로 숫자처리할때 bignumber를 쓴다는 거네 오호~

코드 보니까 

let number = BigNumber.from("1000000000000000000")

number = ethers.utils.formatUnits(number,18)

정리한다는 거같음 

number 콘솔로 찍어보면

1.0으로 됨~!

 

 

 

formatunits 

단위 숫자(숫자인 경우) 또는 지정된 단위(문자열인 경우)로 형식이 지정된 값의 문자열 표현을 반환합니다.
728x90
728x90

미콘캐시 

온라인 및 모바일 서비스상의 결제, 보상 및 거래에 사용되는 암호화폐 플랫폼”을 제공하는 것을 목표로 합니다.

미콘캐시는 플랫폼에 연동된 서비스에서 얻은 보상을 자산의 가치로 만들어 드립니다. 사용자는 서비스가 종료되더라도 미콘캐시로 새로운 서비스에 대한 요구를 충족할 수 있으며, 개인간 거래를 할 수 있으며, 실물경제에서 사용할 수 있는 시스템으로 순환됩니다

-> 아하 얘네도 자기네 플랫폼을 살리고 그 외로도 쓰일 코인을 만든거구만, 그게 미콘캐시

 

미콘캐시(MCH)는 온라인 및 모바일 서비스 상의 결제, 보상 거래에 사용되는 자체 암호화폐 플랫폼이다.
전국 1만3700여 곳의 ATM기를 통해 출금이 가능하다는 점이 특징이다.

 

미콘캐시의 간편 결제 서비스 'M.PAY'는 비트코인, 이더리움, 트론, 비트코인캐시, 라이트코인 등 주요 코인을 시세에 맞는 M.PAY로 전환해서 현금처럼 사용할 수 있도록 지원한다.

 

Q. 온라인 결제와 관련된 암호화폐가 다양하게 있다. 미콘캐시만의 특징은?
A. 미콘캐시는 앱 지갑 내의 M.PAY 결제 서비스를 통해 온라인 결제 및 보상이 이루어진다. 미콘캐시뿐만 아니라 다양한 가상자산들이 M.PAY로 전환되어 사용될 수 있다. M.PAY는 MCH와 1:1로 교환되며 사용시 시세를 반영하여 결제가 이루어진다. 그밖에 암호화폐는 M.PAY 전환시 해당 암호화폐와 MCH 시세를 반영하여 전환된다.

https://www.hankyung.com/it/article/202202092121v

 

[인터뷰] 조재도 회장 "미콘캐시, 포스트코로나 시대 맞춰 '영역 확장'"

[인터뷰] 조재도 회장 "미콘캐시, 포스트코로나 시대 맞춰 '영역 확장'", 산업

www.hankyung.com

 

728x90
728x90

 

 

이메일링 서비스 구현을 위해서 

nodemailer 와 mailgun 을 알게 되었다.

 

 

nodemailer는

"Nodemailer is a module for Node.js applications to allow easy as cake email sending. "

Nodemailer는 케이크처럼 쉽게 이메일을 보낼 수 있도록 하는 Node.js 애플리케이션용 모듈입니다

https://nodemailer.com/about/

 

Nodemailer :: Nodemailer

Nodemailer Nodemailer is a module for Node.js applications to allow easy as cake email sending. The project got started back in 2010 when there was no sane option to send email messages, today it is the solution most Node.js users turn to by default. npm i

nodemailer.com

 

 

mailgun

이메일전송 서비스 제공해주는 사이트

 

https://www.mailgun.com/

 

Transactional Email API Service For Developers | Mailgun

Powerful Transactional Email APIs that enable you to send, receive, and track emails, built with developers in mind. Learn more today!

www.mailgun.com

 

 

In short, SMTP is an open and established protocol with large ecosystem, while Mailgun API is better long term performance and maintenance wise.

요컨대, SMTP는 대규모 에코시스템을 갖춘 개방적이고 확립된 프로토콜인 반면 Mailgun API는 장기적 성능과 유지 관리 측면에서 더 좋습니다.

SMTP란? (Simple Mail Transfer Protocol)

전자 메일 전송을 위한 표준 프로토콜이다. 

이메일을 송수신하는 서버가 SMTP서버라고 한다.

 

nodemailer가 SMTP를 사용한다. 그리고 mailgun에서도 smtp를 사용할 수 있다고 한다.

 

 

 

https://next-auth.js.org/providers/email

 

Email | NextAuth.js

Overview

next-auth.js.org

nextauth 자체 기능을 사용해서 진행했다

signin 시에 provider에서 해당 email있는지 확인하는 로직으로 넘어간다

혼자서 따로 구현해봐야겠다...

728x90
728x90

핸드폰 개발자 모드로 설정!

usb 컴퓨터와 핸드폰 기기 연결 (c타입-c타입도 됨)

usb 테더링으로 설정

 

만약 다음과 같은 에러시 

 

Task :app:installDebug FAILED
error Failed to install the app. Make sure you have the Android development environment set up:

 

 

cd android

./gradlew clean

 

그리고!!!

 

깔려있는 앱삭제!

 

후 실행 

yarn android

 

 

 

https://velog.io/@rjc1704/React-Native-%EC%97%90%EB%9F%AC-%EB%8C%80%EC%9D%91

 

React Native 에러 로그 (Deprecated Gradle features)

npx react-native run-android 명령어로 앱 실행 시도 할 때 위와 같은 에러가 뜬다면, 아래 2가지 작업만 해주면 된다. 디렉터리 위치를 android 디렉터리 안으로 이동하여 ./gradlew clean 실행 에뮬레이터 또

velog.io

 

728x90
728x90

https://www.unixtimestamp.com/

 

Unix Time Stamp - Epoch Converter

Epoch and unix timestamp converter for developers. Date and time function syntax reference for various programming languages.

www.unixtimestamp.com

유닉스 타임 스탬프는 무엇입니까?
유닉스 타임 스탬프는 시간을 초 단위로 추적하는 방법입니다. 이 계산은 1970년 1월 1일 UTC의 Unix Epoch에서 시작됩니다. 따라서 Unix 타임스탬프는 특정 날짜와 Unix Epoch 사이의 초 수입니다. 또한 (이 사이트 방문자의 의견 덕분에) 이 시점은 전 세계 어디에 있든 기술적으로 변경되지 않는다는 점을 지적해야 합니다. 이것은 온라인 및 클라이언트 측 모두에서 동적 및 분산 응용 프로그램에서 날짜가 지정된 정보를 추적하고 정렬하는 컴퓨터 시스템에 매우 유용합니다.
728x90
728x90

undefined 뜸~

graphql문제~

 

 

const Test1 = () => {

  const [tableNumber, setTableNumber] = useState('')


const CHECKTXID = gql`쿼리함수~~~`

const [
    FindTX,
    { loading: loadingCheckTxid, error: errorCheckTxid, data: dataCheckTxid },
  ] = useLazyQuery(CHECKTXID, {
    variables: {
      where: {
        //테이블번호
        id: Number(tableNumber),
      },
    },
  })



  console.log(tableNumber)
  return (
    <Layout title="Grid">
      <Row>
        <Col breakPoint={{ xs: 12 }}>
          <Card>
          
            <CardBody>
          
       
              <div>
                <Input fullWidth size="Small">
                  <input
                    type="text"
                    placeholder="tx테이블번호"
                    onChange={(e) => setTableNumber(e.target.value)}
              
                  />
               
                  <Button onClick={() => CheckTxid()}>출금txid요청</Button>
                </Input>
              </div>
            </CardBody>
          </Card>
        </Col>
      </Row>
    </Layout>
  )
}
export default Test1

쿼리 에러 뜬 이유!!!

 

input 

type을 text로 잡아놔서 string이 들어가는데

쿼리에도 string으로 id가 잡혀서 였음

 

type을 number로 바꾸거나 ->>>  안됨..

위처럼 id를 number로 감싸야한다.

728x90
728x90

Unhandled Runtime Error

Error: Objects are not valid as a React child (found: object with keys {findFirstTransaction}). If you meant to render a collection of children, use an array instead.

 

 

 

const check = () =>{

const { loading, error, data } = useQuery(CHECK_WITHDRAW, {
    variables: {
    
    },
  })


return (
<>{data}</>
)



}

data가 객체여서 뜨는 에러!!!

 

JSON.stringfy(data, undefined, 2)

 

하면 잘뜨는거 확인할 수 있음!

 

usequery는 렌더될 때 바로 실행돼서

버튼 할때만 하는 useLazyquery로 수정해야겠다...

둘의 차이는 자꾸 까먹으니까 정리해라 네네~

 

 

https://velog.io/@leehyunho2001/React-Query%EC%97%90%EC%84%9C-%EB%B2%84%ED%8A%BC-%ED%81%B4%EB%A6%AD%EC%8B%9C%EC%97%90-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EC%9A%94%EC%B2%AD%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-feat.-useQuery

 

728x90
728x90

https://steemit.com/blockchain/@etainclub/blockchain-5

 

 

 

초보자를 위한 Blockchain 강좌 #5 디지털 서명 — Steemit

이전 토픽에서 거래에 대해서 개인키로 서명을 한다고 하였는데, 이것을 바로 디지털 서명이라고 합니다. 디지털 서명을 설명하기 위해서는 개인키(Priviate Key), 공개키(Public Key), 주소(Address)의

steemit.com

 

 

 

https://organicmedialab.com/2014/02/20/bitcoin-addresses-transactions-and-wallets/

 

비트코인 주소, 거래, 그리고 지갑 (Bitcoin Addresses, Transactions, & Wallets)

<이전글: 비트코인 채굴과 선순환 구조> 비트코인 채굴에 이어 이번 글에서는 비트코인 거래와 이의 익명성, 투명성, 그리고 안전성에 대해 살펴보고자 한다. 비트코인을 사용하는데는 비트코인

organicmedialab.com

https://steemit.com/kr/@dangdang/4wpjmg

 

[블록체인 스터디] 공개키와 개인키라는 것은 무엇일까?? — Steemit

드디어 블록체인 관련 첫 포스팅을 시작할 수 있게되었습니다. 그동안에 혼자서 블록체인 공부할 때는, 제가 남에게 설명하는 과정이 없어서 '아 이 정도면 이해 됐다' 라고 생각하고 공부를 했

steemit.com

https://www.kiri.or.kr/pdf/%EC%97%B0%EA%B5%AC%EC%9E%90%EB%A3%8C/%EC%97%B0%EA%B5%AC%EB%B3%B4%EA%B3%A0%EC%84%9C/nre2018-24_02.pdf

https://llshl.tistory.com/54

 

[블록체인] 트랜잭션의 검증(비대칭 암호화 방식)

블록체인에 대해 전반적인 그림을 그리기 위해 조사하며 얻은 얕은 지식입니다. 1. 왜 검증이 필요한가? 블록체인에서 블록은 곧 데이터베이스다. 근데 이 데이터베이스는 모든 사람이 접근하여

llshl.tistory.com

https://iforint.tistory.com/167#:~:text=%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8%EC%9D%80%20%EA%B3%B5%EA%B0%9C%ED%82%A4,%EA%B1%B0%EB%9E%98%20%EB%82%B4%EC%97%AD%EC%9D%84%20%EC%A6%9D%EB%AA%85%ED%95%A9%EB%8B%88%EB%8B%A4.&text=%EC%9D%B4%EB%8A%94%20%EC%9E%90%EC%8B%A0%EC%9D%B4%20%EC%95%84%EB%8B%88%EB%A9%B4%20%ED%95%B4%EB%8B%B9,%EC%9D%B5%EB%AA%85%EC%84%B1%EC%9D%84%20%EB%B3%B4%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4.

 

[개념] 블록체인이란? :: 공개키 암호화, 해시 함수, 합의, 채굴, 작업 증명, 지분 증명, 머클 트리

블록체인은 떠오르는 기술 중 하나입니다. 기존의 중앙 집중화된 형태가 아니라 분산된 형태로 작동함으로서 여러 보안적인 측면을 달성할 수 있는 기술입니다. 주의할 점은 암호 화폐, 즉 비트

iforint.tistory.com

https://www.banksalad.com/contents/%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EB%8A%94-%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8-%EA%B1%B0%EB%9E%98%EA%B0%80-%EC%9D%B4%EB%A3%A8%EC%96%B4%EC%A7%80%EB%8A%94-%EA%B3%BC%EC%A0%95-L7bWb

 

쉽게 설명하는 블록체인 : 비트코인 거래가 이루어지는 과정 | 뱅크샐러드

 

www.banksalad.com

https://medium.com/@kimjunyong/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8%EC%9D%84-%EC%95%8C%EA%B8%B0-%EC%A0%84%EC%97%90-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-%EC%95%94%ED%98%B8%ED%95%99-87fd8cecd455

 

블록체인을 알기 전에 알아야 할 “암호학”

안녕하십니까 블록체인 알려주는 남자 Ryan KIM 입니다.

medium.com

 

728x90
728x90

 

블록체인은 모든 거래자인 노드들이 거래내역이 담긴 장부를 공유합니다. 

이처럼 탈중앙화 시스템에서 중앙거래자가 존재하지 않는데 어떻게 송금이 이뤄질 수 있을까요?

 

 

블록체인 거래가 이뤄지는 과정은 이와 같습니다. 

 

이미지 출처:&nbsp;[시사 IT용어] 가상화폐의 주역, 블록체인 기술이란?

 

1. A가 B에게 송금하기 위한 거래 요청을 보냅니다.

2. 해당 거래정보는 온라인 상에서 블록에 저장됩니다. 

3. 해당 블록정보는 네트워크 구성원 모두에게 전파됩니다. 

4. 구성원들은 해당 거래의 유효성을 검증하고 승인합니다. 

5. 참여자 과반수의 데이터 내역과 일치한 거래는 승인되고, 승인된 거래는 새로운 블록으로 기존의 블록체인에 연결됩니다. 또한 그 사본이 만들어져 각 사용자들의 컴퓨터에 분산 저장됩니다. 

6. A에서 B로 실제 자금이 이동됩니다. 

 

 

공개된 거래내역을 중간에 다른 구성원이 빼돌리려는 위험이 없을까요? 

이를 어떻게 막을 수 있을까요?

 

 

여기에는 바로 비대칭 암호학이 있습니다. 

잠그는 키와 여는 키를 동일하게 생각하지만 비대칭 암호학에서는 각각의 역할을 하는 키가 따로 존재합니다.

 

 

대부분의 블록체인 거래를 하기 위해서는 유효한 디지털 서명이 필요합니다. 이 서명은 개인키를 통해서 할 수 있습니다. 계좌를 사용하기 위한 본인 서명은 여기서는 수학적 검증을 뜻합니다. 구성원들에게 원본 거래내역과 개인키로 암호화한 거래내역을 전파하는데, 이때 개인키로 암호화하는 것을 서명이라고 칭하고 있습니다. 

공개키는 모두에게 공개되는 키로 은행의 계좌번호와 비슷합니다. 이처럼 공개키는 모두에게 보여져도 괜찮지만 무작위 숫자로 만들어진 개인키는 지갑에 접근할 수 있으므로 비밀리에 간직해야합니다.

 

 

 

공개키와 개인키를 통해 블록체인 거래과정을 살펴보겠습니다.

 

 

이미지 출처:&nbsp;비트코인 주소, 거래, 그리고 지갑 (Bitcoin Addresses, Transactions, & Wallets)

1. A가 B에게 송금하기 위한 거래내역(트랜잭션)을 A의 개인키로 암호화하여 서명한 후, A의 공개키와 원본 거래내역과 함께 구성원들에게 전파합니다. (거래내역은 고정된 길이의 해시값으로 변환하여 암호화합니다.이를 통해 원문의 길이와 상관없이 크기를 줄일 수 있고 빠른 검증이 가능합니다.)

2. 구성원들은 암호화된 거래내역을 A의 공개키를 이용해 원본과 비교하며 확인합니다.

(공개키로 열어 확인한 해시값과 원본의 해시값을 비교합니다.)

A의 서명을 통해 전송자의 정보를 확인하고, 이전 참여자들의 데이터 내역과 일치하는 올바른 장부인지를 확인합니다.

3. 검증을 통해 이전 블록에 이어 새로운 블록이 생성되면 B에게 송금이 완료됩니다. B는 개인키를 통해 지갑에 접근할 수 있습니다. 

 

 

 

 개인키 소유자들은 거래를 위해 쉽게 공개키를 만들어 전세계와 공유합니다. 개인키를 만드는 타원곡선 곱셈법은 암호 사용자들이 '트랩 도어'함수라고 부르는 함수의 일종으로, 한 방향으로의 계산은 쉽지만 반대방향으로의 계산은 불가능합니다. 이 수학적 트릭은 자금의 소유권을 증명하는 디지털 서명을 위조 불가능하고 안전한 것으로 만들어줍니다. 

 

만약 개인키를 분실한 경우 지갑에 접근할 수 없기 때문에 꼼꼼한 관리가 필요합니다. 

 

 

그렇다면 공개키와 주소는 같은 것일까요?

타원곡선 곱셈법을 사용해 개인키에서 공개키를 만들고 공개키에서 해시함수를 이용해 주소를 만듭니다.

단방향 암호화로 주소에서 공개키로 공개키에서 개인키로 접근하는 것은 불가능합니다. 

 

 

 

이처럼 누구나 모든 거래를 확인할 수 있고 입증하는 동시에, 개인간의 거래를 만들어 낼 수 있다는 장점으로  블록체인 거래시 비대칭 암호학을 유용하게 사용하고 있습니다.

 

오늘은 블록체인 거래를 돕는 공개키와 개인키에 대해 알아보았습니다.

 

감사합니다.

 

 

 

 

 

 

 

728x90
728x90

reactnative 설치 (xcode깔려있어야함.)

yarn ios 로 빌드 되는지 확인 !

 

 

빌드 fail경우 

cd ios

pod deintegrate (pods폴더 삭제)

pod cache clean --all (캐시 삭제)

(혹시 안되면 pod install --repo-update)

xcode preference에 들어가서 derived 폴더 안에 삭제. 

이거는 pod install 하면 다시 생김! 

(뭔말인지 모르겠으면 밑에 링크 참고)

 

yarn 

yarn ios

 

 

 

이제 

 

firebase project만들기

https://firebase.google.com/

 

Firebase

Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다.

firebase.google.com

 

Add project

 

프로젝트 이름 넣고 

디폴트 내 계정으로 시작!

 

 

 

다음부터는 쭉 따라하면 되는데 

번들id는 xcode에서 가져와서 붙여넣기 하면 된다. 

(xcode에서 원하는 프로젝트파일 열고, 왼쪽의 프로젝트 파일 누르면 이거 뜸

General 들어가서 

Bundle Identifier 의 값을 복붙하면 됨다. )

 

 

 GoogleService-Info.plist 파일을 

firebase 프로젝트 만드는 곳에서 다운받아서

프로젝트 안에 넣는다 (위치는 거기서 알려줌.)

 

 

그다음에 

AppDelegate.m

에 

 

#import <Firebase.h>

와 

[FIRApp configure];

만 추가!

 

[FIRApp configure]; 이거는 (Bool)로 어플리케이션 실행하는 함수로 보이는 거 하단에 {} 넣어줌. 

위치는 마찬가지로 프로젝트 설명란에 있는데 각자 코드에 맞게 넣으면 된다..

 

 

특이점은 

appPackage를 다운받지 않았다. 

다음단계에서 링크로 들어가서 analytics다운 받는게 있는데 그걸 하지 않고

 

yarn add @react-native-firebase/app

yarn add @react-native-firebase/analytics

 

로 추가했다. (여기에 이미있다고함..)

 

 

아 그리고 analytics는 app과 같은 버전으로 맞춰줘야한다!

 

 

그리고 firebase.json파일을 보면

 

// <project-root>/firebase.json
{
  "react-native": {
    "analytics_auto_collection_enabled": false
  }
}

 

 

false로 꺼져있다.

잘은 모르겠지만 이게  GDPR compliance 정책상으로 꺼져있다고 한다.

앱실행될때 자동으로 집계하게끔 하는게 꺼져있는 것이다. 

대신 이벤트처리하듯

홈화면 들어갈 때 메서드를 이용해서 집계하는 방법을 쓰면 된다.

 

 

To re-enable analytics (e.g. once you have the users consent), call the setAnalyticsCollectionEnabled method:

import { firebase } from '@react-native-firebase/analytics';
// ...
await firebase.analytics().setAnalyticsCollectionEnabled(true);

https://rnfirebase.io/analytics/usage

 

Analytics | React Native Firebase

Copyright © 2017-2020 Invertase Limited. Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. Some partial documentation, under the

rnfirebase.io

 

 

프로젝트 예시 홈화면 들어갈때 추가되도록 했다. 

  const activateAnalytics = async () => {
    await firebase.analytics().setAnalyticsCollectionEnabled(true)
  }
  useEffect(() => {
    activateAnalytics()
  }, [])

 

 

 

 

 

 

 

 

 

 

에러 해결방법 참고한 것들

https://developer.apple.com/forums/thread/703823

 

Xcode 13.3 spits "Requested but di… | Apple Developer Forums

MrtnFbg's answer inspired me to read more about redirections of streams. So I read about Linux STDOUT STDERR. In this specific case when I run this command, there is an output and there are some errors. Since I ran this command on terminal and on terminal

developer.apple.com

https://positiveko-til.vercel.app/til/react-native/error65.html

 

에러 해결🔑 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. | Positiveko

에러 해결🔑 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. 리액트 네이티브에서 가장 유명한 에러가 아닐까.. (아니 나참.. 리네 = 에러 픽스 90 + 개발 10 같다.. 후) 이

positiveko-til.vercel.app

 

 

 

 

 

https://rnfirebase.io/analytics/usage

 

Analytics | React Native Firebase

Copyright © 2017-2020 Invertase Limited. Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 3.0 License, and code samples are licensed under the Apache 2.0 License. Some partial documentation, under the

rnfirebase.io

 

728x90
728x90

(이해는 다 못했지만 ppt보면서 받아적어봄..)

 

 

 

모듈러 블록체인 modular Blockchain

노드의 합의, 실행, 데이터 기능을 분리 

 

합의  Gasper, Narwhal

safe permissionless consensus

 

 

실행

- 오프체인(에서 실행하고 결과만 옾체인에 저장.)

-대체로 순차적 실행하지만 트랜잭션 병렬 실행 시도. EIP-2930 명시하는 방식. 트랜잭션이 충돌하는지 아닌지 확인할 수 있음, 

-파이프라인 ,

-FuelVM, 트랙엔진 개선하려는 시도. 

 

데이터

시간이 지나면서 노드 돌리는게 부담이 됨. 

1. 무상태 실행

기본적으로 잔액확인, 즉 트랜잭션 검증해야함. 그상태 검증을 다 가져해야하는데 아예 보내는 사람이 같이 넘기면 어떨까? 내가 백원이상 가지고 있다는 증거를 넘기는. 전체 상태를 보지 않아도. 기존 머클트리의 역할. 

2. 온체인, 오프체인 선택 volition

3. 상태만기

필요한 데이터 쌓이는거 방지로 끊어주고 다시 시작

p2p네트워크 통해서는 1년내 데이터만 요청할 수 있게 하자 제안. 

4. 데이터 가용성 레이더 data availability layer

저장하는거 전문적으로 하는 체인에 하자. 

 

 

 

 

 

가장 큰 문제 저장공간 증가

굉장히 많은 I/O가 필요하고 너무 큰 디스크 필요. 

 

비탈릭의 아이디어. bitco

이더리움에 트랜잭션 저장하기에는 이더리움 너무 비싸 . 비트코인 캐시에 저장하는거 어떠냐. 

 

현재는 실행 - 데이터 저장 - 검증을 모두 하나의 이더리움 체인 내에서 처리하고 있다. 이를 모놀리틱 블록체인이라고 한다. 이로 인해 확장성 문제가 대두되고 있다.

모듈형 블록체인은 실행 / 데이터 저장 / 검증을 모두 분리해서 실행하는 체인을 의미한다. 해당 과정을 분리할 경우 탈중앙성과 보안 그리고 확장성 이 세가지 블록체인 트릴레마 문제를 해결할 수 있다.

출처: https://muritzy.tistory.com/3039 [Eddy Lab:티스토리]

 

(-> 여기 블로그 글이 정리 잘되어있다. )

 

 

동작

리드 솔로몬 부호.

-인코딩으로 뻥튀기

 

 

전파

-저장 분배. 증명을 통해 확인

 

데이터 저장을 요청하면 데이터를 리드솔로몬 인코딩한 조각으로 나누고 DA풀 노드들에게 분배 

DA 풀노드 는 조각을 저장했다는 증명을 생성

일정개수 이상 증명이 모이면 데이터를 저장했다고 알림

예) 오프체인 롤업 운영자가 블록 혹은 트랜잭션 ㄴ애용을 저장

회수

-원본을 

데이터가 ㄱ필요하면 DA라이트 노드가 DA풀노드들에게 조각을 요청

일정 애수 이상 조각이 모이면 디코딩하여 원본 데이터 복원 가능

나중에 롤업블록 내용을 확인가능 data availability데이터 가용성 오라클

 

 

 

데이터 가용성 레이어는 데이터를 해석하지 않고 저장만,

여러 블록체인이 데이터 가용성 레이어를 공유가능.

해당 블록체인과 관계된 데이터만 조회하는 기능

데이터를 저장/조회하고 신뢰도를 안려주는 API제공

DA라이트 노드는 애초에 데이터 인코딩이 잘못된 경우 사기 증명을 만들어야하고 노드들이 해당조각을 저장하는지 확인해야한다. 

 

 

polygon avail

2D 리드 솔로몬 부호 + kzg커미트먼트

현재 테스트넷 

벨리데이터 노드,DA풀노드 maticnet

 

celestia

머클트리 노드마다 자식노드 범위를 지정함. 

2D 리드 솔로몬 부호 + 네임스페이스 머클트리 NMT

코스모스 SDK로 구현

벨리데이터 노드

브리지 노드, 연결해주는 브릿지 역할 함. 

celestiaorg/optimint 코스모스 기반 옵티미스틱 롤업 샘플

 

 

 

기존 스토리지 블록체인과 유사, storj sia와 특히 비슷

차이점, 

스토리지 규모가 페타바이트 단위

파일 경로 단위로 접근 

복제 증명 강조

암호화로 파일보안

지속적 가용성 유지. 

 

 

ethereum에서는 어떻게 하고 있나.

롤업중심 로드맵과 데이터 샤딩(트랜잭션 실행할 데이터만 제공하는 역할)

롤업은 태랜잭션 calldata영역에 롤업 트랜잭션 내용을 줄여서 기록

과거 이스탄불 하드포크 때 calldata에 정보를 기록할 때 필요한 가스 하락.  ELP-2028

2022년 초 Danksharding제안 ,이더리움 연구자 이름임

ELP-4844는 calldata보다 17배 정도 가스가 저렴한 데이터 덩어리 blob추가 

2D리드 솔로몬 부호 +KZG커미트 먼트 

데이터 덩어리를 온체인 스마트 컨트랙트가 읽을 수 없어. 

 

 

<polygonZK>

폴리곤 방향성

 

폴리곤 

확장성 솔루션, 

디앱을 위해서. 근데 원하는게 다 다름. 

프로토콜이나 유저들이 원하는데로 사용할 수 있는

 

폴리곤 확장성 솔루션 

 

ethereum

polygon Zero

polygon pos

avail - 데이터 가용성을위한 솔루션

miden

 

폴리곤 더이상 사이드체인이라 불리기 애매하다 

확장성 솔루션 scalability Aggregator

 

 

polygon 

 

ZKrollup

스타크, 스나크..

처음으로 영지식증명을 블록체인에 증명

 

polygon nightfall 

polygon ID 자신 정보를 공개하지 않고 자신특성 증명할 수 있는 서비스. 

 

 

Polygon Hermez 2.0

zkEVM 

하나의 디앱은 하나의 네트워크밖에 못올림. 

 

브릿지 사고, 

네트워크가 분리

 

디앱별로 분리된다고 생각하면 지금 겪고 있는ㄴ 문제가 극단화.

 

zk란 프로폴을 만들 수 밖에 없는 기능적인

증명을 만드는 것. 제대로 동작했는지 확인하는 체크리스트로 함. 이걸 증명증거로 만들어서 스마트 컨트렉트에 보냄. 

프라이빗키맞는지 

잔액이 100보다 많은지

보낸금액이랑 똑같은지. 

 

 

nft는 잔액이 별로 안중요함. 새롭게 발행된 nft가 내 주소에 잘 있는지 잘 맵핑되어있는지 확인. 

체크리스트 만들면 못바꿈. 

네트워크를 새로 만들어야함. 

증명을 만드는 시스템때문에 하나의 디앱별로 하나의 네트워크밖에 못올림. 

 

 

이더리움 네트워크처럼 여러개 하고 싶어서 ZKrollup에서 EVM으로 넘어오고 있음 

zk evm은 연산이 실행됐는지만 확인함. 

 

 

 

 

모든 상태 정보들을 우리가 만든 폴리곤 솔루션에 저장하면 좀 더 수수료가 저렴해라고 주장하고 있음

폴리곤이 모듈로 블록체인으로 바꾸면서 연산, 저장은 서로 상호작용해서 저장할 수 있게 한다. 

 

 

polygon Miden

general purpose, stark

 

 

evm이랑 vm이랑 달라. 

 

스나카가 더 개발자 친환경적. 

스나크를 선택한 프로젝트는 효율성. 

스페셜 라이즈드- 각 기능별로 따로 만드는..

 

 

 

 

polygon zero

증명을 만드는 코드안에 증명을 검증하는 코드도 같이 만듦

layer1 - 연산할 때 마다 비용든다. 

폴리곤 제로는 증명시스템을 만든다. 

두번째 첫번째 프로펄이 올바르다는 내용

세번째, 첫번째 두번째 트랜잭션을 ... 확인 

재귀적인 시스ㅁ템 연ㅇ루. 

 

 

polygon nightfall

기업내에서 거래도 있나봐

 

기업이 블록체인 기술가져와서 만든다 할때 어느정도 속이나는게 

이더리움처럼 기업용에서 요구하

 

 

블록체인에서 영지식증명 쓸때 

1. 개인정보 보호

2. 유효성 검증

 

위해. 

 

Layer2에서 만든 건 다 layer1에 저장되고 있음

 

 

https://muritzy.tistory.com/3039

 

이더리움의 구원자, 폴리곤(Polygon) 모듈러 블록체인?

Markets by TradingView " data-ke-type="html"> <>HTML 삽입 미리보기할 수 없는 소스 출처 : https://xangle.io/research/6267b8999d2628adb3128e9a?utm_source=ddengle&utm_medium=organic_community&utm_campa..

muritzy.tistory.com

 

https://blog.polygon.technology/polygon-avail-unlocking-the-modular-blockchain-future/

 

https://kr.beincrypto.com/learn-kr/%EC%98%B5%ED%8B%B0%EB%AF%B8%EC%A6%98optimism%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80/

 

옵티미즘(Optimism)이란 무엇인가 - BeinCrypto Korea

옵티미즘 이더리움은 트랜잭션이 계산되는 레이어2를 사용한다. 이를 통해 비용을 절감할 수 있다. 하지만 그 다음에 트랜잭션 정보는 레이어1로 이동한다. 다시 말해 옵티미즘은 일반적인 이더

kr.beincrypto.com

https://polygon.technology/solutions/polygon-zero/

 

 

https://consensys.net/blog/developers/introduction-to-zk-snarks/

 

Introduction to zk-SNARKS | ConsenSys

An overview of zero-knowledge proofs and how to integrate zk-SNARKs into Ethereum.

consensys.net

 

 

 

 

 

 

 

 

728x90
728x90

Can't use Watchman: "Operation not permitted"

 

Can't use Watchman: "Operation not permitted"

Since updating Watchman recently (with Homebrew) I can no longer use it to watch projects. I get { "version": "2022.05.30.00", "error": "std::__1::system_...

stackoverflow.com

watchman shutdown-server

로 해결

 

 

 

에러가 No bundle URL로 빨갛게 떴는데 

 

아래링크처럼

rm ios/build

로 삭제하고 

xcode에서 삭제해도 그대로 에러창 떴다. 

 

metro로 새로 뜨는 창에 

watchman 에러가 떠서 검색해보았다.

watchman 서버를 끄고 다시 실행하니까 잘 켜졌다. 

 

 

 

 

 

https://juzero-space.tistory.com/261

 

[React Native 에러 해결] IOS, No bundle URL present

1. 에러 상황 이유는 모르겠으나 No bundle URL present 에러가 발생했다. 아마 이것저것 만지다보니 나도 모르게 잘못 건드린거같다 ㅠ 2. 해결방법 해결방법이 간단하다. 다행.. 첫번째 방법) ios/build

juzero-space.tistory.com

 

 

728x90

+ Recent posts