Jump to content

Decoding Validators


Recommended Posts

I am having a hell of a time staying on top of the validators, who they are and what keys they are using and I am hoping someone has a tip for an easy way to deal with this. I get the UNL from here: https://vl.ripple.com

then decode using the code JR posted here, which references https://data.ripple.com/v2/network/validators/${validator} to pull the domain. 

As of today I get this list:

1 nHUzum747yqip3HWSgzSNHNMjmLUqhroNVWidSRTREswEVhKNQEM => validator.ripple.com
2 nHDDasc9BHNB99PW8KUduS8Phqg8NPUmjufzMU6HGGDMUH2xNpPh => validator.ripple.com
3 nHUKp8XUkaFN6GzQ3o4qTE1w9aAD5uFjZ8vDt6pwjBsTFRq5FWEb => validator.ripple.com
4 nHUUrjuEMtvzzTsiW2xKinUt7Jd83QFqYgfy3Feb7Hq1EJyoxoSz => validator.ripple.com
5 nHBtDzdRDykxiuv7uSMPTcGexNm879RUUz5GW4h1qgjbtyvWZ1LE => validator.ripple.com
6 nHUon2tpyJEHHYGmxqeGu37cvPYHzrMtUNQFVdCgGNvEkjmCpTqK => validator.ripple.com
7 nHU2Y1mLGDvTbc2dpvpkQ16qdeTKv2aJwGJHFySSB9U3jkTmj4CA => validator.ripple.com
8 nHUkp7WhouVMobBUKGrV5FNqjsdD9zKP5jpGnnLLnYxUQSGAwrZ6 => validator1.worldlink-us.com
9 nHU95JxeaHJoSdpE7R49Mxp4611Yk5yL9SGEc12UDJLr4oEUN4NT => flagshipsolutionsgroup.com
10 nHUFzgC9fDw2MEDaiv9JMdBFhtJ6DMKoUCpS8gPGi6tkfbqmTyis => www.bahnhof.se
11 nHUCCckfXVBdoounaU7JVnfdPdMXEeetwH8VdCBXD996BaVZ8WdJ => ripple.telinduscloud.lu
12 nHUcNC5ni7XjVYfCMe38Rm3KQaq27jw7wJpcUYdo4miWwpNePRTw => rabbitkick.club
13 nHBgiH2aih5JoaL3wbiiqSQfhrC21vJjxXoCoD2fuqcNbriXsfLm => www.attokyo.com
14 nHUpJSKQTZdB1TDkbCREMuf8vEqFkk84BcvZDhsQsDufFDQVajam => data443.com
15 nHDwHQGjKTz6R6pFigSSrNBrhNYyUGFPHA75HiTccTCQzuu9d7Za => coil.com
16 nHB8QMKGt9VB4Vg71VszjBVQnDW3v3QudM4DwFaJfy96bj4Pv9fA => bithomp.com
17 nHUd8g4DWm6HgjGTjKKSfYiRyf8qCvEN1PXR7YDJ5QTFyAnZHkbW => brex.io
18 nHBidG3pZK11zQD6kpNDoAhDxH6WLGui6ZxSbUx7LSqLHsgzMPec => bitso.com
19 nHUVPzAmAmQ2QSc4oE1iLfsGi17qN2ado8PhxvgEkou76FLxAz7C => ripple.ittc.ku.edu
20 nHULqGBkJtWeNFjhTzYeAsHA3qKKS7HoBh8CV3BAGTGMZuepEhWC => shadow.haas.berkeley.edu
21 nHUT6Xa588zawXVdP2xyYXc87LQFm8uV38CxsVzq2RoQJP8LXpJF => blockchain.korea.ac.kr
22 nHB5kpvUaEpvCtwu31fMf6dTuuCNnWRctWrV3UEZ9rbtPdpvbUvJ => ripple.ntt.com
23 nHBSUZJnqK5BRu3bWAmebfkETNeEFmU7sm3DXzCuEYzRkAEdxuTy => validator.xrpchat.com
24 nHUFCyRCrUjvtZmKiLeF8ReopzKuUoKeDeXo3wEUBVSaawzcSBpW => ripple.kenan-flagler.unc.edu
25 nHUfPizyJyhAJZzeq3duRVrZmsTZfcLn7yLF5s2adzHdcHMb9HmQ => xrp.unic.ac.cy
26 nHDH7bQJpVfDhVSqdui3Z8GPvKEBQpo6AKHcnXe21zoD4nABA6xj => ripplevalidator.uwaterloo.ca
27 nHUFE9prPXPrHcG3SkwP1UzAQbSphqyQkQK9ATXLZsfkezhhda3p => alloy.ee
28 nHDB2PAPYqF86j9j3c6w1F1ZqwvQfiWcFShZ9Pokg9q4ohNDSkAz => aloha.xrpscan.com
29 nHUpcmNsxAw47yt2ADDoNoQrzLyTJPgnyq16u6Qx2kRPA17oUNHz => isrdc.in
30 nHDDE4Y3z5EE2VDDYrzheYQ4xC3F29SJsKT4dqhX4iyTLhuWgZnp => xrp.coinfield.com
31 nHUED59jjpQ5QbNhesXMhqii9gA8UfbBmv3i5StgyxG98qjsT4yn => crcm-xrp.blockdaemon.com
32 nHUryiyDqEtyWVtFG24AAhaYjMf9FRLietbGzviF3piJsMm9qyDR => www.bitrue.com
33 nHUXeusfwk61c4xJPneb9Lgy7Ga6DVaVLEyB29ftUdt9k2KxD6Hw => validator.xrptipbot.com
34 nHUnhRJK3csknycNK5SXRFi8jvDp3sKoWvS9wKWLq1ATBBGgPBjp => peerisland.com


 

I am watching the Validations stream, which shows info by signing key/ephemeral public key, so n9 instead of nH, the above list doesn't do me any good.

I have been pulling the ephemeral_public_key from ripple data v2 off the validator manifests, but a few times that provides bad info or doesn't have the manifest. 

My next option is to run the rippled validators command, but since the validators command is admin only its also not my first choice.

it includes the following info today: 

"signing_keys" : {
         "nHB5kpvUaEpvCtwu31fMf6dTuuCNnWRctWrV3UEZ9rbtPdpvbUvJ" : "n9MtAgMDVFxEgzYsmZKNBYS4vTx76xSSD78tFdZFcL27aeXeeECQ",
         "nHB8QMKGt9VB4Vg71VszjBVQnDW3v3QudM4DwFaJfy96bj4Pv9fA" : "n9J2hKPRZ9bUmsBD6d1j16G2P1arMxfASgSKYpoK9dRpJEuD3Joz",
         "nHBSUZJnqK5BRu3bWAmebfkETNeEFmU7sm3DXzCuEYzRkAEdxuTy" : "n9MUYTDQbd5BqxRiU8JuYoDAD9Trjzvd9VWfVYadgwqmxREjvRe5",
         "nHBgiH2aih5JoaL3wbiiqSQfhrC21vJjxXoCoD2fuqcNbriXsfLm" : "n9KhsMP6jKFQPpjJ9VwqyZSwrL4shdX9YknRwmsAVL1RNVrx4jLm",
         "nHBidG3pZK11zQD6kpNDoAhDxH6WLGui6ZxSbUx7LSqLHsgzMPec" : "n9KaxgJv69FucW5kkiaMhCqS6sAR1wUVxpZaZmLGVXxAcAse9YhR",
         "nHBtDzdRDykxiuv7uSMPTcGexNm879RUUz5GW4h1qgjbtyvWZ1LE" : "n9LCf7NtwcyXVc5fYB6UVByRoQZqJDhrMUoKnr3GQB6mFqpcmMzg",
         "nHDB2PAPYqF86j9j3c6w1F1ZqwvQfiWcFShZ9Pokg9q4ohNDSkAz" : "n94RJmUKMJHTmuXhNYsFUwje9a9hD3Rw3dESntBDeonJLCjAEbMZ",
         "nHDDE4Y3z5EE2VDDYrzheYQ4xC3F29SJsKT4dqhX4iyTLhuWgZnp" : "n9KXj6AkXsMiPKgTs6axKn93CVKDmLsPch8QFZNA9xsGkQo3w5bk",
         "nHDDasc9BHNB99PW8KUduS8Phqg8NPUmjufzMU6HGGDMUH2xNpPh" : "n9L2y9THhdubapafmt7b2TRuhRUfPf1anchmiFyFSKBiaK3BEAwY",
         "nHDH7bQJpVfDhVSqdui3Z8GPvKEBQpo6AKHcnXe21zoD4nABA6xj" : "n9MSTcx1fmfyKpaDTtpXucugcqM7yxpaggmwRxcyA3Nr4pE1pN3x",
         "nHDwHQGjKTz6R6pFigSSrNBrhNYyUGFPHA75HiTccTCQzuu9d7Za" : "n9KKQUgUwXAAh7LKKjQos85vr19EvWghM13oBXurpvmRgEPZJ7XE",
         "nHU2Y1mLGDvTbc2dpvpkQ16qdeTKv2aJwGJHFySSB9U3jkTmj4CA" : "n9K2FpCqZftM1xXXaWXFPVbEimLX6MEjrmQywfSutkdK1PRvqDb2",
         "nHU95JxeaHJoSdpE7R49Mxp4611Yk5yL9SGEc12UDJLr4oEUN4NT" : "n9JtY9MqUcwKWenHp8WoRobFRmB2mmBEJd1ruJmhKGKAwtFQkQjb",
         "nHUCCckfXVBdoounaU7JVnfdPdMXEeetwH8VdCBXD996BaVZ8WdJ" : "n9KiJP9wcJheTs6187LB8SP6Pw1UghKUQLgq4RmMKheTzvVhmesM",
         "nHUED59jjpQ5QbNhesXMhqii9gA8UfbBmv3i5StgyxG98qjsT4yn" : "n9KcVtcHZThHainPdHC7CkQKZMEVjAcRujV2CMKdKHk65Ewsawsu",
         "nHUFCyRCrUjvtZmKiLeF8ReopzKuUoKeDeXo3wEUBVSaawzcSBpW" : "n9Lqr4YZxk7WYRDTBZjjmoAraikLCjAgAswaPaZ6LaGW6Q4Y2eoo",
         "nHUFE9prPXPrHcG3SkwP1UzAQbSphqyQkQK9ATXLZsfkezhhda3p" : "n9J67zk4B7GpbQV5jRQntbgdKf7TW6894QuG7qq1rE5gvjCu6snA",
         "nHUFzgC9fDw2MEDaiv9JMdBFhtJ6DMKoUCpS8gPGi6tkfbqmTyis" : "n94RChC3yKSHyXUerLYE1sjm13eP7hucSNpoZZTVgq4UtAiZAcgP",
         "nHUKp8XUkaFN6GzQ3o4qTE1w9aAD5uFjZ8vDt6pwjBsTFRq5FWEb" : "n9M6V1wyi9qwU3CESTmta3ANQehmdqFFf8osuR1jkKQ7GBcV7746",
         "nHULqGBkJtWeNFjhTzYeAsHA3qKKS7HoBh8CV3BAGTGMZuepEhWC" : "n9MZ7EVGKypqdyNguP31xSqhFqDBF4V5FESLMmLiGrBJ3khP2AzQ",
         "nHUT6Xa588zawXVdP2xyYXc87LQFm8uV38CxsVzq2RoQJP8LXpJF" : "n9Lq9bekeVhCsW8dwqzfvKsqUiu9Qxvwk9YmF2hxkBJjNrGNL5Fw",
         "nHUUrjuEMtvzzTsiW2xKinUt7Jd83QFqYgfy3Feb7Hq1EJyoxoSz" : "n9LLqqH1cVFPjEnQYFQ6DooxuhHPQxwXgMjDGrpJ6pb1WGDoi76Q",
         "nHUVPzAmAmQ2QSc4oE1iLfsGi17qN2ado8PhxvgEkou76FLxAz7C" : "n9J1GJHtua77TBEzir3FvsgWX68xBFeC8os3s5TkCg97E1cwxKfH",
         "nHUXeusfwk61c4xJPneb9Lgy7Ga6DVaVLEyB29ftUdt9k2KxD6Hw" : "n9KHXifDfimGs2CREvbRrAfjnoWcwjMCC8u8KLRTtrRAYk1ktSxX",
         "nHUcNC5ni7XjVYfCMe38Rm3KQaq27jw7wJpcUYdo4miWwpNePRTw" : "n9LEDYRJMx23ikoZS6YefTPuvLzNh56nXqpsavakWi2FivUEAkaq",
         "nHUd8g4DWm6HgjGTjKKSfYiRyf8qCvEN1PXR7YDJ5QTFyAnZHkbW" : "n9KSXAVPy6ac8aX88fRsJN6eSrJ2gEfGrfskUVJJ7XkopGsKNg9X",
         "nHUfPizyJyhAJZzeq3duRVrZmsTZfcLn7yLF5s2adzHdcHMb9HmQ" : "n9M2anhK2HzFFiJZRoGKhyLpkh55ZdeWw8YyGgvkzY7AkBvz5Vyj",
         "nHUkp7WhouVMobBUKGrV5FNqjsdD9zKP5jpGnnLLnYxUQSGAwrZ6" : "n9MzwWa4dwdZkRzj6XmihBG4ymGtMPd12cLjfhKwx5Hoqeu6WEgy",
         "nHUnhRJK3csknycNK5SXRFi8jvDp3sKoWvS9wKWLq1ATBBGgPBjp" : "n9LbDLg9F7ExZCeMw1QZqsd1Ejs9uYpwd8bPUStF5hBJdd6B5aWj",
         "nHUon2tpyJEHHYGmxqeGu37cvPYHzrMtUNQFVdCgGNvEkjmCpTqK" : "n9JebyUXwBa5GoYJQ6AbupoMKyE2zaiR3FTfDTMkxpMMv1KPmQEn",
         "nHUpJSKQTZdB1TDkbCREMuf8vEqFkk84BcvZDhsQsDufFDQVajam" : "n9LFSE8fQ6Ljnc97ToHVtv1sYZ3GpzrXKpT94eFDk8jtdbfoBe7N",
         "nHUpcmNsxAw47yt2ADDoNoQrzLyTJPgnyq16u6Qx2kRPA17oUNHz" : "n94D6X6oFGyuvWpSjGwv3rmGSPSi5gNEVCDwnEc8arLC6HnqfEhn",
         "nHUryiyDqEtyWVtFG24AAhaYjMf9FRLietbGzviF3piJsMm9qyDR" : "n9KAE7DUEB62ZQ3yWzygKWWqsj7ZqchW5rXg63puZA46k7WzGfQu",
         "nHUzum747yqip3HWSgzSNHNMjmLUqhroNVWidSRTREswEVhKNQEM" : "n9KQRiTw9LnSsVN2tv4guAqQ2KKUYmxnhT48QU2bbx8KmFGaUxTd"
      },

My problem is I am getting signing keys in my validations stream that aren't showing up in ripple data v2 query and you can't search by signing key- that I know of, so I check via the validators command and they might be there or not. If they are there and I look back at the ripple data v2 using the newly found public key, sometimes the signing key on v2 is different from the rippled validators command results.

For reference, these were issues for me today:

1.

n9Lq9bekeVhCsW8dwqzfvKsqUiu9Qxvwk9YmF2hxkBJjNrGNL5Fw

  ..I was able to find the public key via validators command nHUT6Xa588zawXVdP2xyYXc87LQFm8uV38CxsVzq2RoQJP8LXpJF, it has no manifest on ripple data (https://data.ripple.com/v2/network/validators/nHUT6Xa588zawXVdP2xyYXc87LQFm8uV38CxsVzq2RoQJP8LXpJF/manifests)

2.

n9LrAWWnL8QYJym4PsnjHeun5CsKJ4ZoBfqD5FrESuH5DwzRaZYH

 I don't see this at all in my validators command results.. I walked thru the unl list manually to see what i could be missing, and I see that shadow.haas.berkeley.edu is missing, so I assume that this is for Berkeley but its just an assumption. If its not, then I don't know why this is showing up if its not in my validator list.

Does anyone have a tip to easily identifying validators by signing key or ephemeral public key?

 

Link to post
Share on other sites
On 10/11/2019 at 10:08 PM, Kakoyla said:

I don't see this at all in my validators command results.. I walked thru the unl list manually to see what i could be missing, and I see that shadow.haas.berkeley.edu is missing, so I assume that this is for Berkeley but its just an assumption. If its not, then I don't know why this is showing up if its not in my validator list.

Berkeley validator had an outage last week. Its back online now, but this could be the cause of the dangling validator key.

 

Link to post
Share on other sites
3 hours ago, xrpholder said:

as a non coder, would it be possible for someone to build / sell a  device that you would just need to plug in to run a validator?
or even buy a SD card pre loaded with everything so i just put it into a raspberry pi and then can start to run one?

As a validator operator, there's no way I would trust such a validator. It is your job as an operator to make choices (e.g. to vote for/against amendments and fees, choose a good UNL...) and you should be competent in managing your node beyond plugging in an appliance.

Also a RaspberryPi is definitely too small to run a node reliably, think more like 32 GB RAM, a quad-core processor, an SSD and a datacenter-grade power supply + internet connection.

Link to post
Share on other sites
On 10/11/2019 at 6:38 PM, Kakoyla said:

Does anyone have a tip to easily identifying validators by signing key or ephemeral public key?

So I thought why not try to decode this mystical manifest from the unl and finally, succes at last :)

 The code below contains a function that will translate the manifest and the ephemeral public key:

const binaryCodec = require('ripple-binary-codec')
const addressCodec = require('ripple-address-codec')
const request = require('request-promise')

const validatorListUrl = process.argv[2] || 'https://vl.ripple.com'

console.log(`UNL at ${validatorListUrl}:\n`)

function getEphemeralPublicKey (manifest) {
  const buf = Buffer.from(manifest, 'base64').toString('hex').toUpperCase()
  const hexPubKey = binaryCodec.decode(buf).SigningPubKey
  return addressCodec.encodeNodePublic(Buffer.from(hexPubKey, 'hex'))
}

;(async () => {
  const encodedData = await request.get({
    url: validatorListUrl,
    json: true
  })
  const buff = Buffer.from(encodedData.blob, 'base64')
  const unlList = JSON.parse(buff.toString('ascii')).validators

  const validators = (await request.get({
    url: `https://data.ripple.com/v2/network/validators`, json: true
  })).validators

  for (let nr in unlList) {
    const pubKey = addressCodec.encodeNodePublic(Buffer.from(unlList[nr].validation_public_key, 'hex'))
    const ephemeralPublicKey = getEphemeralPublicKey(unlList[nr].manifest)
    const validator = validators.find(validator => validator.validation_public_key === pubKey)
    console.log(`${('0' + ++nr).slice(-2)} - ${pubKey} => ${ephemeralPublicKey} => ${validator ? validator.domain : '-'}`)
  }
  console.log('')
})().catch(err => {
  console.error(err.message)
})

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.